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

  1. 06.04.2023 - Alegere temă proiect
  2. 14.04.2023 - Alegere componente
  3. 18.04.2023 - Revendicarea pieselor
  4. 05.05.2023 - Completare milestone 1
  5. 16.05.2023 - Adaugare schema electrica si design circuit
  6. 21.05.2023 - Completare milestone 2
  7. 27.05.2023 - Adaugare detalii software
  8. 27.05.2023 - Completare milestone 3
  9. 27.05.2023 - Completare pagina Wiki

Bibliografie/Resurse

pm/prj2023/ndrogeanu/obstacle-avoidance-control-robot.txt · Last modified: 2023/05/27 21:44 by andrei.sapunaru2007
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0