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:32]
cristian.deda [Schema Electrica]
pm:prj2025:apredescu:cristian.deda [2025/05/31 22:42] (current)
cristian.deda [Rezultate Obţinute]
Line 32: Line 32:
  
  
-==== Schema ​Board ====+==== Schema ​Electrica ​====
  
  
-{{:​pm:​prj2025:​apredescu:​willy_schema_breadboard.png|?300}}+{{:​pm:​prj2025:​apredescu:​cristian.deda_schema_electrica.png?700}}
  
  
-==== Schema ​Electrica ​====+==== Schema ​Board ====
  
  
-{{:​pm:​prj2025:​apredescu:​cristian.deda_schema_electrica.png?700}}+{{:​pm:​prj2025:​apredescu:​willy_schema_breadboard.png?500}}
  
 ===== Software Design ===== ===== Software Design =====
  
 +===== 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.
 +
 +Robotul functioneaza in mod **follow-me**:​ detecteaza si urmareste un obiect apropiat. Se opreste sau se retrage cand identifica un obstacol.
 +
 +===== Mediu de dezvoltare =====
 +
 +  * **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.1747434757.txt.gz · Last modified: 2025/05/17 01:32 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