Arduino Obstacle Avoidance + Voice Control
Student: Săpunaru Andrei-Iliuță
Grupă: 334CC
Introducere
Proiectul acesta urmăreste implementarea unui robot care se deplasează într-o anumita direcție până in momentul în care în fața lui apare un obstacol de orice natură. Scopul său este să evite coliziunea cu obiectele sau persoanele din jurul său. Aceasta poate fi o caracteristică importantă în diverse aplicații robotice, cum ar fi roboții utilizați în cadrul fabricilor, în domeniul medical sau în transportul autonom. Spre exemplu , un astfel de robot poate fi utilizat într-o fabrică pentru a se deplasa de la o stație de lucru la alta, fără a intra în coliziune cu echipamentele sau muncitorii de pe traseu.
Prin implementarea acestei caracteristici de oprire la obstacole, robotul poate detecta obiectele și poate lua decizii rapide pentru a evita coliziunea cu acestea, asigurând astfel o deplasare sigură și fără probleme în mediul înconjurător.Ideea mi-a venit vizionând câteva filme în care prezența acestor roboți era tot mai numeroasă , dar și mai benefică. Mi s-a părut destul de interesant tot procesul de asamblare al robotului, cât și rezultatul așteptat.
Descriere generală
Robotul pornește prin activarea butonului și din acest moment asteaptă de la utilizator să îi adreseze o comandă de deplasare. Comenzile sunt de 4 tipuri , fiecare tip fiind caracteristic pentru câte o direcție de deplasare: înainte , înapoi , stânga si dreapta. În cazul în care comanda este nerecunoscută de robot , în mod firesc robotul stă pe loc , neacționând. Deplasarea sa se realizează prin intermediul celor 4 roți acționate de tot atâtea motoare. Motoarele sunt acționate prin intermediul unui motor driver , astfel controlând atât direcția , cât și viteza de deplasare a robotului.
Partea frontală a proiectului este reprezentată în principiu de senzorul ultrasonic , așezat așa încât se poate spune că reprezintă ochii robotului . Prin intermediul său , se detectează obiectele din jurul robotului și se determina distanța dintre robot și obstacol. În funcție de timpul măsurat , dar și a vitezei sunetului în aer, senzorul poate obține distanța dintre robot și un potențial obstacol.
În partea din spate , se regăsește un senzor IR util in detectarea și evitarea coliziunilor ce se pot produce cu alte obiecte aflate în urma robotului. Mecanismul de funcționare este clasic acestui tip de senzor și se bazează pe reflexia razelor infraroșii , obținută datorită razei infraroșii emisă de senzor. Astfel , robotul este capabil să se oprească la detecția obstacolului.
Servomotorul practic dă direcția de deplasare , dat fiind faptul că senzorul ultrasonic este poziționat pe un suport ce are directă legătura cu servomotorul. Astfel , la o comandă de tipul “stânga” sau “dreapta” , suportul se va roti și va analiza situația de deplasare , adresată de utilizator. Modulul bluetooth realizează conexiunea cu telefonul și implicit cu programatorul, capabil din acest moment să adreseze comenzile de deplasare robotului.
Schema bloc
Hardware Design
Lista componente:
ARDUINO UNO R3 ATMEGA328P
PLACĂ DE CONTROL MOTOARE L293D
MODUL BLUETOOTH HC-05
SENZOR ULTRASONIC
MOTOR SERVO SG90 9G
BATERII 18650 Battery
SENZOR OBSTACOL IR 3.3-5V
KIT MOTOR REDUCTOR + ROATA
BUTON
FIRE
SUPORT SENZOR ULTRASUNETE
SUPORT BATERII 18650
Schema electrica
Design Circuit
Software Design
Descrierea codului aplicaţiei (firmware):
mediu de dezvoltare: Arduino IDE
librării:
AFMotor.h: pentru a controla motoarele utilizate în proiect
NewPing.h: pentru a lucra cu module de senzori de distanță ultrasunete
Servo.h: pentru a controla servo-motoare
functii implementate:
void forward(): se preiau datele de la senzorul ultrasonic si in functie de valoarea intoarsa de acesta , fie robotul se deplaseaza pe directia “inainte” , fie asteapta o alta comanda pe care sa o onoreze
void backward(): analog cu functia anterioara , diferenta fiind data de senzorul IR , folosit in partea din spate a robotului
void left() & void right(): foarte asemanatoare , elementul diferentiator fiind doar modul/sensul de rotatie al servo-motorului
void Stop(): se opresc din rulat motoarele
variabile globale utilizate:
motor1, motor2, motor3, motor4: pentru a seta/configura proprietatile motoarelor robotului
sonar: folosit pentru senzorul ultrasonic , avand parametri necesari
myservo: folosit pentru controlul servo-motorului
voice: string prin care preiau comanda venita prin intermediul modulului Bluetooth
Schemă electrică: EAGLE CAD
Schemă bloc: diagrams.net
Design circuit: TinkerCad
-
Rezultate Obţinute
Care au fost rezultatele obţinute în urma realizării proiectului vostru.
Concluzii
Construirea și programarea unui robot Arduino capabil să evite obstacole poate fi o experiență educațională extrem de utilă. În urma acestui proiect, pot fi trase următoarele concluzii:
1. Dezvoltarea cunoștințelor de bază despre roboți și programarea microcontrolerelor: Proiectul oferă o oportunitate excelentă de a învăța despre componentele și funcționarea unui robot, precum și despre programarea în limbajul Arduino.
2. Integrarea senzorilor și a algoritmilor de evitare a obstacolelor: În cadrul proiectului, se pot explora diverse tipuri de senzori, cum ar fi senzori ultrasonici sau infraroșu, pentru a detecta și evita obstacolele.
3. Stimularea creativității și a gândirii inovatoare: Proiectul robotului evitant de obstacole oferă oportunitatea de a fi creativ și de a gândi în mod inovator.
4. Îmbunătățirea abilităților de rezolvare a problemelor: Construirea unui robot evitant de obstacole poate implica întâlnirea unor provocări și rezolvarea unor probleme tehnice. Aceasta necesită abilități de rezolvare a problemelor, de gândire critică și de analiză a situațiilor pentru a dezvolta soluții eficiente.
Download
Jurnal
06.04.2023 - Alegere temă proiect
14.04.2023 - Alegere componente
18.04.2023 - Revendicarea pieselor
05.05.2023 - Completare milestone 1
16.05.2023 - Adaugare schema electrica si design circuit
21.05.2023 - Completare milestone 2
27.05.2023 - Adaugare detalii software
27.05.2023 - Completare milestone 3
27.05.2023 - Completare pagina Wiki
Bibliografie/Resurse