This shows you the differences between two versions of the page.
pm:prj2023:gpatru:calin.coman [2023/05/30 06:05] calin.coman [Bibliografie/Resurse] |
pm:prj2023:gpatru:calin.coman [2023/05/30 06:18] (current) calin.coman [Concluzii] |
||
---|---|---|---|
Line 64: | Line 64: | ||
In primul rand, distanta maxima de recunoastere a unui obstacol de catre acest senzor este de 80 de cm, deci obstacolul trebuie sa se afle relativ aproape pentru ca masina sa-l poata detecta si deci sa il evite. | In primul rand, distanta maxima de recunoastere a unui obstacol de catre acest senzor este de 80 de cm, deci obstacolul trebuie sa se afle relativ aproape pentru ca masina sa-l poata detecta si deci sa il evite. | ||
In al doilea rand, desi in teorie este mai exact decat un senzor ultrasonic, am descoperit ca acest senzor IR are destul de multe spike-uri si intoarce des distante care nu sunt reale. Pentru acest lucru am scris functia getDistance(), care in loc sa citeasca o singura data output-ul analogic, citeste 25 de valori succesive si foloseste media lor aritmetica. | In al doilea rand, desi in teorie este mai exact decat un senzor ultrasonic, am descoperit ca acest senzor IR are destul de multe spike-uri si intoarce des distante care nu sunt reale. Pentru acest lucru am scris functia getDistance(), care in loc sa citeasca o singura data output-ul analogic, citeste 25 de valori succesive si foloseste media lor aritmetica. | ||
+ | |||
+ | De asemenea, o parte destul de dificila a fost potrivirea valorilor PWM trimise motoarelor (adica viteza) cu timpii de intoarcere pentru a face miscarea masinii naturala. | ||
Descrierea codului pe Arduino: | Descrierea codului pe Arduino: | ||
*In functia de setup() se seteaza toti pinii de output si input (senzorul IR, driver-ul de motoare, etc) si se ataseaza unui buton o intrerupere care va declansa pornirea masinii. Odata ce masina este alimentata, aceasta asteapta apasarea butonului, iar intreuperea generata declanseaza startul. | *In functia de setup() se seteaza toti pinii de output si input (senzorul IR, driver-ul de motoare, etc) si se ataseaza unui buton o intrerupere care va declansa pornirea masinii. Odata ce masina este alimentata, aceasta asteapta apasarea butonului, iar intreuperea generata declanseaza startul. | ||
- | *In functia de loop() este urmatorul flow: Senzorul IR se uita intai in fata. Daca niciun obstacol nu este detectat, masina merge in linie dreapta. Daca avem un obstacol in fata, senzorul se uita si in stanga si in dreapta si masina alege sa mearga pe calea unde obstacolul este cel mai departat. Daca si in stanga si in dreapta obstacolele sunt aproape, masina se intoarce 180 de grade pentru a iesi din impas. | + | *In functia de loop() este urmatorul flow: Senzorul IR se uita intai in fata. Daca niciun obstacol nu este detectat, masina merge in linie dreapta. Daca avem un obstacol in fata, senzorul se uita si in stanga si in dreapta si masina alege sa mearga pe calea unde obstacolul este cel mai departat. Daca si in stanga si in dreapta obstacolele sunt aproape, masina se intoarce 180 de grade pentru a iesi din impas. Atunci cand se opreste, LED-ul RGB devine rosu, cand merge, este verde, si cand schimba directia este albastru. |
- | Pe ESP32 CAM, din cod se configureaza ca modulul WiFi sa fie folosit pentru a crea un AP (Access Point), astfel orice device se poate conecta la reteaua generata de placuta pentru a vedea imaginea live. | + | Pentru a incarca cod pe placuta ESP32 CAM, am folosit Arduino-ul ca intermediar, deoarece aceasta nu are un port dedicat. Din cod se configureaza ca modulul WiFi sa fie folosit pentru a crea un AP (Access Point), astfel orice device se poate conecta la reteaua generata de placuta pentru a vedea imaginea live. |
Laboratoarele utilizate sunt: Intreruperi, ADC, PWM. | Laboratoarele utilizate sunt: Intreruperi, ADC, PWM. | ||
Line 87: | Line 89: | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | A fost interesant proiectul, mi-a placut ca a implicat si partea hardware, lucru care pentru mine cel putin clar nu a fost o treaba usoara. Eu sunt multumit de rezultat, dat fiind si ca am fost foarte presat cu timpul semestrul asta. Din toate probleme pe care le-am avut am invatat ca este esential sa gandesti bine un plan, inainte de a te apuca sa il pui si in aplicare. | ||
===== Download ===== | ===== Download ===== | ||
Line 97: | Line 100: | ||
https://lastminuteengineers.com/l293d-dc-motor-arduino-tutorial/ | https://lastminuteengineers.com/l293d-dc-motor-arduino-tutorial/ | ||
+ | |||
+ | https://www.instructables.com/How-to-Use-the-Sharp-IR-Sensor-GP2Y0A41SK0F-Arduin/ | ||
+ | |||
+ | https://docs.arduino.cc/learn/electronics/servo-motors | ||
+ | |||
+ | https://randomnerdtutorials.com/program-upload-code-esp32-cam/ | ||
+ | |||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> |