This shows you the differences between two versions of the page.
pm:prj2021:apredescu:linefollower [2021/06/01 22:17] monica.pricope [Concluzii] |
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 54: | Line 85: | ||
* 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_codsursa.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 | ||