This shows you the differences between two versions of the page.
pm:prj2021:apredescu:linefollower [2021/06/01 21:42] monica.pricope [Download] |
pm:prj2021:apredescu:linefollower [2021/06/02 13:09] (current) monica.pricope [Software Design] |
||
---|---|---|---|
Line 24: | Line 24: | ||
| Breadboard | https://cleste.ro/breadboard-mini-170-puncte.html | | | Breadboard | https://cleste.ro/breadboard-mini-170-puncte.html | | ||
+ | **Schema:** | ||
+ | |||
{{:pm:prj2021:apredescu:pricope_monica_331cc_schema.jpg?800|}} | {{:pm:prj2021:apredescu:pricope_monica_331cc_schema.jpg?800|}} | ||
+ | |||
+ | Alimentare | ||
+ | * Robotelul este alimentat de o baterie de 9V. Am folosit si un switch pentru a porni si opri robotelul. | ||
+ | |||
+ | Conectare Modul cu driver L298N | ||
+ | * Acesta este alimentat cu 9V de la baterie si asigura alimentarea placutei Arduino cu 5V. | ||
+ | * Cele doua motoare sunt conectate la modul la cei 4 pini de output. Iar pinii de input sunt legati la pinii placutei Arduino. | ||
+ | * Folosesc si pinii pentru controlul vitezei (ENA si ENB) conectati la pinii 10, respectiv 9 ai placutei. | ||
+ | |||
+ | Conectare Senzori IR | ||
+ | * Cei doi senzori au conectati pinii de GND si VCC la GND si 5V de pe Arduino. Si pentru a citi valorile de la senzori, pinii D0 sunt conectati la pinii placutei (senzorul din dreapta la 8 si cel din stanga la 12). | ||
+ | |||
+ | Conectare Senzor HC-SR04 | ||
+ | * Senzorul are conectati pinii de GND si VCC la fel ca senzorii IR, iar pinul de trig la pinul 7 si pinul de echo la pinul 6. | ||
+ | |||
===== Software Design ===== | ===== Software Design ===== | ||
Pentru partea software am folosit mediul de dezvoltare Arduino. | Pentru partea software am folosit mediul de dezvoltare Arduino. | ||
- | Senzorii IR pozitionati in partea din fata a robotelului (unul in dreapta, celalalt in stanga) au rolul de a detecta linia neagra si de a regla pozitia robotelului. | + | == Functionare == |
+ | |||
+ | Pinii folositi si variabilele sunt declarate si initializate la inceputul programului. | ||
- | Cele doua motoarea sunt controlate cu ajutorul modulului cu driver, ce are cei 4 pini de input conectati la placuta, iar pinii de output la motoare. | + | In setup() sunt setati |
+ | * pinii de input (pinii senzorilor IR si echo pinul senzorului HC-SR04) | ||
+ | * pinii de output (pinii ce controleaza motoarele, vitezele motoarelor si trig pinul senzorului HC-SR04) | ||
- | Astfel in functie de informatiile primite de la cei doi senzori se schimba valorile acestor 4 pini, corespunzatori motoarelor astfel incat robotelul sa mearga inainte, sa vireze la dreapta daca senzorul din dreapta a detectat linia, sa vireze la stanga daca senzorul din stanga a detectat linia si sa se opreasca atunci cand ambii senzori detecteaza linia. Pentru aceste 4 situatii am implementat 4 functii care sunt apelate corespunzator. | + | In loop() |
+ | * La inceput se masoara distanta la care detecteaza senzorul HC-SR04 un obstacol. Si se citesc valorile senzorilor IR. | ||
+ | * In functie de valorile celor doi senzori IR apar 4 situatii: | ||
+ | - robotelul merge inainte daca senzorii nu au detectat linia | ||
+ | - robotelul vireaza la dreapta daca senzorul din dreapta a detectat linia | ||
+ | - robotelul vireaza la stanga daca senzorul din stanga a detectat linia | ||
+ | - robotelul se opreste atunci cand ambii senzori detecteaza linia. | ||
+ | * Se verifica daca in fata se afla un obiect la o distanta mai mica de stop_distance. Daca se detecteaza un obstacol, robotelul se va misca putin in spate, se va intoarce pana cand detecteaza din nou linia si va continua deplasarea pe traseu. | ||
- | Pe langa cei doi senzori IR, folosesc si un senzor HC-SR04 pentru a detecta daca sunt obstacole in fata. Se verifica daca in fata se afla un obiect la o distanta mai mica de stop_distance. Daca se detecteaza un obstacol, robotelul se va misca putin in spate si se va intoarce reluandu-si traseul. | + | Functiile turnWhenObstacleLeft() si turnWhenObstacleRight() |
+ | * La apelul lor robotelul se deplaseaza putin in spate, se opreste si se intoarce revenind la traseu. | ||
+ | |||
+ | Functiile backward(), forward(), turnLeft(), turnRight() si endStop() | ||
+ | * Se seteaza viteza cu care se va realiza miscarea si se schimba valorile pinilor corespunzatori motoarelor. | ||
- | Cu ajutorul modulului cu driver controlez si viteza cu care se deplaseaza robotelul: atunci cand merge inainte sau inapoi, cand vireaza sau cand se intoarce. | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
Line 44: | Line 75: | ||
{{:pm:prj2021:apredescu:pricope_monica_331cc_img3.jpg?500|}} | {{:pm:prj2021:apredescu:pricope_monica_331cc_img3.jpg?500|}} | ||
{{:pm:prj2021:apredescu:pricope_monica_331cc_img4.jpg?500|}} | {{:pm:prj2021:apredescu:pricope_monica_331cc_img4.jpg?500|}} | ||
+ | |||
+ | * Demo: https://youtu.be/X-Zy_u4X1ek | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | A fost prima oara cand am lucrat la un proiect hardware. Am intampinat cateva dificultati la lucrul cu senzorii IR, dar am rezolvat destul de repede prin reglarea potentiometrului acestora asftel incat sa detecteze corect linia neagra. In concluzie, a fost un proiect interesant, a fost placut sa lucrez la el si sunt multumita de rezultatul final. | ||
===== Download ===== | ===== Download ===== | ||
* Documentația în format: <html><a class="media mediafile mf_pdf" href="?do=export_pdf">PDF</a></html> | * Documentația în format: <html><a class="media mediafile mf_pdf" href="?do=export_pdf">PDF</a></html> | ||
- | * Cod sursa: {{:pm:prj2021:apredescu:pricope_monica_331cc_cod.zip|}} | + | * Cod sursa: {{:pm:prj2021:apredescu:pricope_monica_331cc_codsursa.zip|}} |
+ | ===== Jurnal ===== | ||
+ | |||
+ | * 25-04 : alegere tema si creare pagina wiki | ||
+ | * 11-05 – 17-05 : comandat piese | ||
+ | * 21-05 – 23-05 : asamblare hardware, implementarea componentei software si testare | ||
+ | * 26-05 – 27-05 : construire pista si adaugarea optiunii de detectare obstacole | ||
+ | * 28-05: finalizare proiect (pagina de wiki + demo) | ||
===== Bibliografie ===== | ===== Bibliografie ===== | ||
* Conectare senzor HC-SR04: https://create.arduino.cc/projecthub/Isaac100/getting-started-with-the-hc-sr04-ultrasonic-sensor-036380 | * Conectare senzor HC-SR04: https://create.arduino.cc/projecthub/Isaac100/getting-started-with-the-hc-sr04-ultrasonic-sensor-036380 | ||
* Conectare modul driver: https://www.youtube.com/watch?v=OkHR1BZCcqA&ab_channel=TeamPsi | * Conectare modul driver: https://www.youtube.com/watch?v=OkHR1BZCcqA&ab_channel=TeamPsi | ||