Trasnea Catalina-Andreea - 331CC
Proiectul consta in realizarea unei masini care se poate deplasa in orice directie fara a se lovi de obiectele aflate in jur. La baza realizarii acestui proiect va sta folosirea unei placute de dezvoltare Arduino UNO. Aceasta va folosi de asemenea un senzor ultrasonic cu ajutorul caruia va putea sa aproximeze distanta la care se afla de obiectele din jur.
Am pornit de la ideea implementarii unui maze solver, care sa poata ajunge de la o persoana la o alta persoana, strabatand un labirint cu un drum unic.
Pentru mine acest proiect a fost util, pentru ca m-a facut in primul rand sa inteleg anumite concepte de baza ale electronicii prin punerea lor in practica. Mai mult de atat, o alta utilitate pe care eu am gasit-o pentru acest robotel este de a transporta mici obiecte de la o persoana la alta.
Cand masinuta este pornita prin apasarea power switch-ului, aceasta incepe sa se deplaseze intr-o directie pana cand se apropie de un obstacol. Aceasta poate aproxima distanta pana la un obiect cu ajutorul senzorului ultrasonic. Acest senzor este prins de servomotor prin intermediul unui servomotor. Cand senzorul se afla la o distanta mai mica de 15 cm de un obiect, se opreste, iar cu ajutorul servomotorului, intoarce senzorul in stanga si in dreapta, calculeaza noile distante fata de stanga si de dreapta, iar apoi in functie de acestea alege in ce directie sa mearga in continuare. Rotile masinutei functioneaza cu ajutorul a 4 motoare DC ce sunt actionate in diferite directii simultan (in functie de directia dorita de deplasare).
La nivel Software, proiectul consta in scrierea codului pentru incarcarea in placa. Mediul de dezvoltare folosit: Arduino IDE. Am folosit librariile AFMotor, NewPing si Servo.
Programul foloseste, in afara functiilor de setup si loop, urmatoarele functii:
Folosind functia servo.write(angle) din cadrul librariei servo, servomotorul roteste bratul cu senzorul la un anumit numar de grade astfel incat sa se poata face calculul de distanta in stanga si in dreapta.
Utilizand functia sonar.ping_cm(), ce face parte din libraria NewPing, se face comunicarea cu senzorul ultrasonic. In functia readPing() citim distanta in cm fata de care se afla obiectul din fata senzorului. Daca distanta este 0 (masina se afla chiar langa obiect), functia va returna o distanta de 250 pentru a face masina sa reincerce deplasarea in fata).
Da release celor 4 motoare DC, pentru a mentine pe loc masina.
Foloseste functiile motor.run() si motot.setSpeed() din libraria AFMotor, pentru a actiona cele 4 motoare DC, conectate la roti. Viteza masinii creste de la 0 pana la 200 din 2 in 2 pentru a mentine o mai buna durata de viata a beteriilor. Pentru miscarea pe directia inainte toate cele 4 motoarele DC sunt comandate motor.run(FORWARD), respectiv pentru directia inainte motor.run(BACKWARD).
Pentru a face stanga si dreapta, motoarele sunt actionate 2 cate 2 astfel:
Dreapta: cele 2 motoare de pe latura stanga a masinii pe directia FORWARD, iar cele de pe latura dreapta BACKWARD.
Stanga: cele 2 motoare de pe latura dreapta a masinii pe directia FORWARD, iar cele de pe latura stanga BACKWARD.
Cod proiect: arduinocar.zip
https://ocw.cs.pub.ro/courses/pm/prj2021/amocanu/arduino_obstacle_avoiding_car