Autorul poate fi contactat la adresa de mail: danieldinca97@yahoo.com
Proiectul propune o implementare a unui robot care va aspira prin camera ocolind toate obstacolele posibile. Am ales acest proiect in primul rand deoarece mereu am considerat ca un robot care sa faca singur curat prin camera de camin imi va fi de mare ajutor. In al doilea rand este primul proiect de acest fel pe care il realizez si cred ca aceasta tema va fi una de la care voi invata multe lucruri noi.
Schema bloc a proiectului este urmatoarea:
Senzorii de distanta aflati in jurul robotului vor analiza daca intalnim sau nu un obstacol. Daca un obstacol este intalnit atunci se va lua cea mai buna varianta de ocolire a acestuia. Primul driver de motoare va controla deplasarea iar cel de al doilea va controla motorul care la randul lui va controla ventilatorul care va aduna mizeria.
Am intampinat in dificultati in gasirea unei turbine care sa fie destul de puternica ca sa pot sa o folosesc.
A trebuit sa imi fac singur scheletul robotului dintr-o placa de lemn pentru ca nu am gasit nimic altceva corespunzator. In final am reusit sa asamblez toate componentele robotului.
Prima dificultate pe care am avut-o a fost sa imi dau seama cum se iau datele pentru senzori. Dupa ce mi-am dat seama cum functioneaza am folosit 3 pini de triger si 3 pini de echo. Cand vreau sa iau datele de la un senzor apelez functia get distance care seteaza pinul de trigger pentru 11 microsecunde astfel senzorul lanseaza 8 semnale de sunet de 40khz si fiecare senzor seteaza pinul de echo pe 1 declansand timerul. Cand pinul de echo este setat iarasi pe 0 inseamna ca sunetul a fost reprimit si se calculeaza distanta in functie de valoarea counterului si viteza sunetului.
Un alt lucru pe care a trebui sa il fac a fost sa conectez motoarele la driver si sa le controlez. Am setat timerul 2 in modul fastpwm si in functie de procentajul dat la functiile right_speed/last_speed sunt setate vitezele motoarelor. De asemenea directia motoarelor o setez in functiile set_direction_for_left/set_direction_for_right prin modificarea pinilor pb4,pb5 respectiv pb6, pb7.
Dupa ce am realizat aceste 2 lucruri algoritmul pentru aspirator este urmatorul: daca in acelasi moment toti senzorii sunt activati atunci robotul da cu spatele, daca doar senzorul de fata este activat atunci alege o directie random (stanga/dreapta) iar daca 2 din 3 senzori sunt ocupati atunci robotul alege varianta disponibila.
Cei trei senzori.
Principalele dificultati pe care le-am intampinat au tinut mai ales de partea hardware. In primul rand pentru ca a trebuit sa imi construiesc singur scheletul pentru robot. De asemenea, fiind putin experimentat in acest camp, am ars o sursa si un microcontroller. Turbina a cedat si ea la un moment dat pentru ca nu mai facea bine contact si a trebuit sa fac un suport care sa ii limiteze miscare. Cu toate astea, desi a fost un proiect care mi s-a parut foarte dificil, probabil si din cauza mea, mi-a facut placere sa il fac si pot sa spun ca am invatat multe lucruri din el.
Rezultatul final a fost unul satisfacator. Am reusit sa fac robotul sa mearga, sa aspire si sa ocoleasca cat de cat obstacolele.