This shows you the differences between two versions of the page.
pm:prj2025:iotelea:calin.semeniuc [2025/05/26 22:36] calin.semeniuc [Introducere] |
pm:prj2025:iotelea:calin.semeniuc [2025/05/30 08:44] (current) calin.semeniuc [Software Design] |
||
---|---|---|---|
Line 7: | Line 7: | ||
===== Introducere ===== | ===== Introducere ===== | ||
- | {{:pm:prj2025:iotelea:20250526_221101_hdr.jpg?nolink&200|}} | + | {{:pm:prj2025:iotelea:20250526_221101_hdr.jpg?nolink&400|}} |
=== Ce face proiectul? === | === Ce face proiectul? === | ||
Line 25: | Line 25: | ||
Arduino cu un modul controlat prin UART care controleaza motoarele si ascultă citirea unui senzor de culoare (citeste culoarea suprafetei). Are concectati si photodiode puse in jurulul unui semicerc si un senzor pir pentru a schimba controlul robotului. | Arduino cu un modul controlat prin UART care controleaza motoarele si ascultă citirea unui senzor de culoare (citeste culoarea suprafetei). Are concectati si photodiode puse in jurulul unui semicerc si un senzor pir pentru a schimba controlul robotului. | ||
- | Robotul are ca master placuta Arduino, iar ca slave modulul RVR+. Modulul RVR+ are deja motoarele si senzorul de culaore inclus. Acestea sunt controlate prin UART. Se vor controla motoarele si se va face poll in timp real la culori. In loc de switch pentru pornirea robotului, folosesc un senzor PIR pentru a-i da start. Senzorii de detectie a obstacolelor constau in 10 senzori aranjati intr-un semicerc (180 grade). Ei au rolul de a detecta obstacolele si de a le evita. In functie de unde detectam obstacolele, trimitem comanda la motoare ca sa schimbam directia de mers. | + | Robotul are ca master placuta Arduino, iar ca slave modulul RVR+. Modulul RVR+ are deja motoarele si senzorul de culaore inclus. Acestea sunt controlate prin UART. Se vor controla motoarele si se va face poll in timp real la culori. In loc de switch pentru pornirea robotului, folosesc un senzor PIR pentru a-i da start. Senzorii de detectie a obstacolelor constau in 3 senzori pusi in stanga, dreapta, si in fata. Ei au rolul de a detecta obstacolele. In functie de unde detectam obstacolele, trimitem comanda la motoare ca sa schimbam directia de mers. |
=== Diagrama Hardware === | === Diagrama Hardware === | ||
Line 32: | Line 32: | ||
{{:pm:prj2025:iotelea:diagrama_logica_pm_1_.png?nolink|}} | {{:pm:prj2025:iotelea:diagrama_logica_pm_1_.png?nolink|}} | ||
===== Hardware Design ====== | ===== Hardware Design ====== | ||
+ | {{:pm:prj2025:iotelea:fritzing_jcjm7zwzz2.png?nolink&600|}} | ||
=== Piese: === | === Piese: === | ||
* 1p Senzor PIR HC-SR501 {{:pm:prj2025:iotelea:hc_sr501_pir_sensor_datasheet.pdf|}} | * 1p Senzor PIR HC-SR501 {{:pm:prj2025:iotelea:hc_sr501_pir_sensor_datasheet.pdf|}} | ||
Line 79: | Line 80: | ||
* Wire.h | * Wire.h | ||
* Structs.h (include structurile necesare pentru comunicare cu Senzorul de culoare si motoare) | * Structs.h (include structurile necesare pentru comunicare cu Senzorul de culoare si motoare) | ||
+ | |||
+ | === Algoritm === | ||
+ | - Se inititializeaza platforma RVR+ prin USART, folosing USB serial si ecranul. | ||
+ | - Se asteapta apasarea senzorului PIR pentru a da drumul robotului. | ||
+ | - Cand a pornit robotul, el merge drept inainte pana cand intalneste un obstacol sau gaseste culoarea rosie de sub el. | ||
+ | - Daca obstacolul e in fata, se da in spate si face o rotire de 180 grade. Daca e in senzorii laterali, se da inapoi in directia opusa si se indreapta asa cum era inainte (cu alte cuvinte, trece pe langa obstacolul lateral). | ||
+ | - Daca scaneaza o suprafata rosie, se opreste. | ||
+ | |||
+ | === Functii implementate === | ||
+ | PIR Sensor | ||
+ | | **Functie**| **Descriere**| | ||
+ | | rotate180_fast | rotire 180 in cel mai rapid mod| | ||
+ | | lcd.setcursor | | | ||
+ | | lcd.print | | | ||
+ | | rvr.configUART | initializare RVR | | ||
+ | | rvr.getDriveControl() | obtinere obiect pentru apelarea functiilor rvr | | ||
+ | | rvr.resetYaw() / dc.resetHeading() | resetare giroscop intern | | ||
+ | | dc.setRawMotors | setare viteza motoare fina | | ||
+ | | dc.rollStart()/rollStop() | setare mers robot, simplu | | ||
+ | | colorCallback() | scanarea culorilor | | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||