Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2025:iotelea:calin.semeniuc [2025/05/12 21:43]
calin.semeniuc [Introducere]
pm:prj2025:iotelea:calin.semeniuc [2025/05/30 08:44] (current)
calin.semeniuc [Software Design]
Line 3: Line 3:
 **Autor**: Semeniuc Calin-Mihai **Autor**: Semeniuc Calin-Mihai
 **Grupa**: 333CD **Grupa**: 333CD
 +**Link Git**: [[https://​github.com/​Axagon6/​ColourGuidedRover|Github]]
  
 ===== Introducere ===== ===== Introducere =====
 +
 +{{:​pm:​prj2025:​iotelea:​20250526_221101_hdr.jpg?​nolink&​400|}}
  
 === Ce face proiectul? === === Ce face proiectul? ===
  
-Proiectul este un rover (robot pe șenile) care navigheaza într-un spațiu închis, căutând o țintă de o anumită culaore. Robotul are la bază o placă +Proiectul este un rover (robot pe șenile) care navigheaza într-un spațiu închis, căutând o țintă de o anumită culaore. ​
-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.  +
- +
-=== Care este scopul proiectlui? ==== +
- +
-**Scopul proiectului** este sa gaseasca tinte de anumite culoare+
  
 === Care a fost ideea de la care am pornit? === === Care a fost ideea de la care am pornit? ===
Line 21: Line 19:
 === De ce cred că este util? === === De ce cred că este util? ===
  
-Aceasta aplicatie poate fi extinsa pentru a deteca varsari de substante sau substante toxice. Poate fi folosit pentru aparate de curatare, aspiratoare automate, ​etc.+Aceasta aplicatie poate fi extinsa pentru a deteca varsari de substante sau substante toxice. Poate fi folosit ​ca punct de start pentru aparate de curatare etc.
  
 ===== Descriere generală ===== ===== Descriere generală =====
-Robotul are ca master placuta Arduino, iar ca slave modulul RVR+. 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 la bază o placă 
 +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 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 ===
-{{:​pm:​prj2025:​iotelea:​diagrama_hw_rover.png?nolink|}}+{{:​pm:​prj2025:​iotelea:​diagrama_hardware_pm.png?direct|}}
 === Diagrama Logica === === Diagrama Logica ===
 {{:​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|}}
   * 1p Arduino UNO R3  {{:​pm:​prj2025:​iotelea:​a000066-datasheet_english_only.pdf|}}   * 1p Arduino UNO R3  {{:​pm:​prj2025:​iotelea:​a000066-datasheet_english_only.pdf|}}
   * 1p Platforma RVR+ cu motoare si senzor de culoare incorporat {{:​pm:​prj2025:​iotelea:​fc6defcf54795cdc8643a2e4f31b1be2030d2eec.pdf|}}   * 1p Platforma RVR+ cu motoare si senzor de culoare incorporat {{:​pm:​prj2025:​iotelea:​fc6defcf54795cdc8643a2e4f31b1be2030d2eec.pdf|}}
-  * 10p Senzori IR cu fotodiode {{:​pm:​prj2025:​iotelea:​datasheet_ir_sensor_hw-201.pdf|}}+  * 5p Senzori IR cu fotodiode {{:​pm:​prj2025:​iotelea:​datasheet_ir_sensor_hw-201.pdf|}} 
 +  * 1p Ecran LCD 2x16 
 +  * 1p I2C Serial Controller HW-061 (l-am conectat la ecran) 
 +=== Conexiuni Hardware === 
 + 
 +PIR Sensor 
 +| **Pin**| **Value**| 
 +| GND | Arduino IDE| 
 +| PWR | 5V | 
 +| OUT | Digital 8| 
 + 
 +OBSTACLE Sensor 
 +| **Pin**| **Value**| 
 +| GND | Arduino IDE| 
 +| PWR | 5V | 
 +| OUT | Digital 13, 12 6| 
 + 
 +I2C Serial Controller 
 +| **Pin**| **Value**| 
 +| GND | Arduino IDE| 
 +| PWR | 5V | 
 +| SDA | Analog 5| 
 +| SDC | Analog 4| 
 + 
 +Platforma RVR+ poate comunica cu arduino prin USB. 
 + 
 + 
 + 
 + 
 +===== Software Design ====== 
 +=== Notiuni de laborator utilizate: === 
 +  * Lab 1 UART (Comunicarea cu platforma RVR pentru senzor de culoare) 
 +  * Lab 2 Intreruperi (Intreruperi la detectarea obstacolelor,​ culorii tinta, declansare senzor PIR) 
 +  * Lab 3 Timere (Controlul motoarelor intr-un interval de timp) 
 +  * Lab 5 I2C (Controlul Ecranului) 
 + 
 +=== Librarii utilizate: === 
 +  * SpheroRVR.h 
 +  * DriveControl.h 
 +  * LEDControl.h 
 +  * LiquidCrystal_I2C.h 
 +  * Wire.h 
 +  * 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 | 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
  
 + 
  
  
pm/prj2025/iotelea/calin.semeniuc.1747075404.txt.gz · Last modified: 2025/05/12 21:43 by calin.semeniuc
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0