Differences

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

Link to this comparison view

pm:prj2025:apredescu:cristian.deda [2025/05/17 01:18]
cristian.deda
pm:prj2025:apredescu:cristian.deda [2025/05/31 22:42] (current)
cristian.deda [Rezultate Obţinute]
Line 30: Line 30:
 | Set Fire tata-tata | [[https://​www.optimusdigital.ro/​ro/​fire-fire-mufate/​12-set-de-cabluri-pentru-breadboard.html?​search_query=0104210000001532&​results=1|Optimus digital]] | | Set Fire tata-tata | [[https://​www.optimusdigital.ro/​ro/​fire-fire-mufate/​12-set-de-cabluri-pentru-breadboard.html?​search_query=0104210000001532&​results=1|Optimus digital]] |
 | Set fire mama-tata | [[https://​www.optimusdigital.ro/​ro/​fire-fire-mufate/​92-fire-colorate-mama-tata-40p.html?​search_query=0104210000001792&​results=1|Optimus digital]] | | Set fire mama-tata | [[https://​www.optimusdigital.ro/​ro/​fire-fire-mufate/​92-fire-colorate-mama-tata-40p.html?​search_query=0104210000001792&​results=1|Optimus digital]] |
 +
 +
 +==== Schema Electrica ====
 +
 +
 +{{:​pm:​prj2025:​apredescu:​cristian.deda_schema_electrica.png?​700}}
  
  
Line 35: Line 41:
  
  
-{{:​pm:​prj2025:​apredescu:​willy_schema_breadboard.png|?300}}+{{:​pm:​prj2025:​apredescu:​willy_schema_breadboard.png?​500}}
  
 +===== Software Design =====
  
-==== Schema Electrica ​====+===== Descrierea generala a aplicatiei (Firmware) =====
  
 +Aceasta aplicatie controleaza un robot mobil autonom („Willy”),​ dotat cu:
 +  * Senzori ultrasonici pentru detectia obstacolelor.
 +  * Senzori infrarosu (IR) pentru urmarirea unui obiect (de exemplu, o mana).
 +  * Motoare DC pentru miscare si manevrare.
 +  * Buzzer pentru semnalizare sonora.
 +  * Ecran LCD I2C 16x2 pentru afisarea starii robotului.
  
-{{:pm:​prj2025:​apredescu:​willy_schema_electrica.png|?300}}+Robotul functioneaza in mod **follow-me**detecteaza si urmareste un obiect apropiat. Se opreste sau se retrage cand identifica un obstacol.
  
-<note tip> +===== Mediu de dezvoltare =====
-Aici puneţi tot ce ţine de hardware design: +
-  * listă de piese +
-  * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri,​ e.g. http://​www.captain.at/​electronic-atmega16-mmc-schematic.png) +
-  * diagrame de semnal  +
-  * rezultatele simulării +
-</​note>​+
  
-===== Software Design ​=====+  * **Platforma hardware**: Arduino UNO (ATmega328P) 
 +  * **Mediu de dezvoltare**:​ Arduino IDE 2.x 
 +  * **Limbaj de programare**:​ C++ (Arduino Sketch) 
 +  * **Placa suport**: Arduino UNO R3 
 + 
 +===== Librarii si surse 3rd-party utilizate ​===== 
 + 
 +^ Biblioteca ^ Descriere ^ Link ^ 
 +| `NewPing` | Permite masurarea precisa a distantei cu senzorul ultrasonic HC-SR04. | [[https://​bitbucket.org/​teckel12/​arduino-new-ping/​wiki/​Home|NewPing Library]] | 
 +| `Wire` | Protocol I2C pentru comunicatia cu ecranul LCD. | Inclusa in Arduino IDE | 
 +| `LiquidCrystal_I2C` | Suport pentru afisaj LCD 16x2 cu interfata I2C. | [[https://​github.com/​johnrickman/​LiquidCrystal_I2C|LiquidCrystal_I2C]] | 
 + 
 +===== Algoritmi si structuri implementate ===== 
 + 
 +==== Algoritmi principali ==== 
 +  * **Controlul miscarii robotului:​** 
 +    * Functia `rotateMotor()` permite controlul diferential al motoarelor, in functie de detectiile senzorilor IR sau ultrasonic. 
 +    * Viteza ajustabila: `MAX_SPEED` + `ADJUST_SPEED` (forward) sau diferentiere la viraje (`+/-`). 
 + 
 +  * **Detectia obstacolului cu senzor ultrasonic:​** 
 +    * Cu biblioteca `NewPing`, masuram distanta in centimetri. 
 +    * Daca distanta < 2 cm, se activeaza un semnal sonor (`buzzer`) si robotul se opreste, se retrage (da putin cu spatele), apoi se opreste complet. 
 + 
 +  * **Urmarirea obiectului cu senzori IR:** 
 +    * Daca ambii senzori IR detecteaza obiect (LOW), robotul merge inainte (`Chasing`). 
 +    * Daca doar un senzor detecteaza (LOW), robotul vireaza in directia respectiva (`Turning Left` / `Turning Right`). 
 +    * Daca nu detecteaza, se opreste (`Waiting...`). 
 + 
 +  * **Afisarea starii pe LCD:** 
 +    * Starea robotului (`Chasing`, `Turning`, `Obstacle`, `Waiting`) este afisata impreuna cu caractere customizate (emoji, sageti). 
 +    * Bara de progres (`distance bar`) arata distanta fata de obstacol (linie pe randul 2 al LCD). 
 + 
 +==== Structuri de date ==== 
 +  * Variabile globale pentru: 
 +    * Viteze motoare (`currentRightSpeed`,​ `currentLeftSpeed`). 
 +    * Stare obstacol (`check_close`). 
 +    * Ultimul caracter afisat pe ecran (`lastStatus` - optional pentru optimizare). 
 +  * Caractere custom (`byte SmileyFaceChar[]`,​ `byte StopChar[]`,​ `byte leftArrowChar[]`,​ `byte rightArrowChar[]`). 
 + 
 +===== Etapa 3: Surse si functii implementate ===== 
 + 
 +==== Fisiere sursa ==== 
 +  * `main.ino` – Codul principal (Arduino Sketch).
  
 +==== Functii implementate ====
  
-<note tip> +^ Functie ^ Rol ^ 
-Descrierea codului aplicaţiei ​(firmware): +| `setup()` | Initializeaza pinii, LCD-ul, motoarele, senzorii. | 
-  * mediu de dezvoltare ​(if any) (e.g. AVR StudioCodeVisionAVR+| `loop()` | Logica principala a programuluidetectie obstacole, urmarire IR, update LCD, buzzer. | 
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib) +| `rotateMotor()` | Controleaza directia si viteza motoarelor in functie ​de parametrii. | 
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi +| `displaySpeed()(nefolosit) | Afiseaza viteza pe LCD (optionalcomentat). | 
-  * (etapa 3surse şi funcţii implementate +| `lcd.createChar()` | Definirea caracterelor custom pentru LCD (smiley, stop, sageti). |
-</​note>​+
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +  * In urma realizarii ​proiectului, am obtinut un sistem functional care controleaza o **masina autonoma** capabila sa efectueze urmatoarele actiuni: 
-Care au fost rezultatele obţinute în urma realizării ​proiectului ​vostru+    * **Urmarire**:​ Masina detecteaza un obiect (mana) in fata senzorilor IR si incepe sa-l urmareasca, ajustandu-si directia in functie de pozitia obiectului
-</​note>​+    * **Afisare pe LCD**: Mesajele afisate pe ecranul LCD reflecta starea curenta a masinii, precum: 
 +      * ''​Chasing''​ (urmarire) 
 +      * ''​Turning Left''​ (viraj la stanga) 
 +      * ''​Turning Right''​ (viraj la dreapta) 
 +      * ''​Waiting...''​ (asteptare) 
 +      * ''​OBSTACLE AHEAD!''​ (obstacol detectat) 
 +    * **Evitarea obstacolelor**:​ 
 +      * Daca senzorul ultrasonic detecteaza un obstacol prea aproape (sub 2 cm), masina: 
 +        * Opreste motoarele. 
 +        * Afiseaza mesajul de avertizare pe LCD. 
 +        * Emite un **bip** de avertizare prin buzzer. 
 +        * Executa o miscare de **recul** (da putin cu spatele) pentru a se indeparta de obstacol.
  
 +  * Sistemul integreaza mai multe concepte hardware si software:
 +    * Controlul motoarelor cu semnale **PWM**.
 +    * Senzori IR pentru detectarea obiectelor.
 +    * Senzor ultrasonic pentru masurarea distantei.
 +    * Buzzer pentru semnalizare sonora.
 +    * Ecran LCD pentru afisare in timp real a starii.
 ===== Concluzii ===== ===== Concluzii =====
  
pm/prj2025/apredescu/cristian.deda.1747433921.txt.gz · Last modified: 2025/05/17 01:18 by cristian.deda
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