Differences

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

Link to this comparison view

pm:prj2025:apredescu:cristian.deda [2025/05/04 19:18]
cristian.deda
pm:prj2025:apredescu:cristian.deda [2025/05/31 22:42] (current)
cristian.deda [Rezultate Obţinute]
Line 2: Line 2:
 ===== Introducere ===== ===== Introducere =====
  
-<note tip> +**„Willy – the Buddy Chaser”** este o masinuta ​autonoma proiectata sa urmareasca ​un om in timp real, folosind senzori ​de detectie (cu infrarosu), un senzor ultrasonic si un microcontroler. Scopul principal ​al proiectului este dezvoltarea unui sistem hardware capabil sa identifice si sa urmareasca un obiect in miscare, integrand concepte esentiale din domeniul proiectarii cu microprocesoare.
-Prezentarea pe scurt a proiectului vostru: +
-  ​Willy the Buddy Chaser“ este o masinuta ​care urmareste ​un om +
-  * care este scopul lui +
-  * care a fost ideea de la care aţi pornit +
-  * de ce credeţi că este util pentru ​alţii şi pentru voi +
-</​note>​ +
-===== Descriere generală =====+
  
-<note tip> +Ideea a pornit din dorinta ​de a combina elemente de robotica cu o componenta interactiva șprietenoasa. Pe langa aspectele tehnice, proiectul are si un scop distractiv – utilizatorul se poate juca efectiv cu masinuta, fiind urmarit de aceasta intr-un mod similar cu un //„animal de companie robotic”//​. Aceasta latura face ca proiectul sa fie mai atractiv si accesibil inclusiv pentru publicul larg.
-O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită ​de o descriere ​acestora precum şa modului în care interacţionează.+
  
-Exemplu ​de schemă bloc: http://www.robs-projects.com/​mp3proj/​newplayer.html +Acest proiect poate reprezenta o baza pentru aplicatii educationale,​ jucarii inteligente sau chiar sisteme autonome ​de asistenta in viitor.
-</​note>​+
  
 +===== Descriere generală =====
 +
 +==== Schema bloc ====
 +
 +{{:​pm:​prj2025:​apredescu:​willy_scehma_bloc.png|}}
 ===== Hardware Design ===== ===== Hardware Design =====
  
-<note tip> +==== Lista piese ==== 
-Aici puneţi tot ce ţine de hardware design+ 
-  * listă ​de piese +^ Denumire piesa ^ Link achizitionare ^ 
-  * scheme electrice (se pot lua şi de pe Internet şdin datasheet-uri, e.ghttp://www.captain.at/electronic-atmega16-mmc-schematic.png) +| Arduino UNO R3 | [[https://​www.optimusdigital.ro/​ro/​placi-avr/​4561-placa-de-dezvoltare-compatibila-cu-arduino-uno-r3-atmega328p-atmega16u2-cablu-50-cm.html?​search_query=placa+arduino+uno&​results=84|Optimus digital]] | 
-  * diagrame ​de semnal ​ +| Motor Driver L298N | [[https://​www.optimusdigital.ro/​ro/​drivere-de-motoare-cu-perii/​145-driver-de-motoare-dual-l298n.html?​search_query=0104110000001061&​results=1|Optimus digital]] | 
-  * rezultatele simulării +| Senzor Infrarosu ​de Obstacole | [[https://​www.optimusdigital.ro/​ro/​senzori-senzori-optici/​4514-senzor-infrarosu-de-obstacole.html?​search_query=0104110000000996&​results=1|Optimus digital]] | 
-</note>+| Senzor Ultrasonic ​de Distanta HC-SR04+ | [[https://​www.optimusdigital.ro/​ro/​senzori-senzori-ultrasonici/​2328-senzor-ultrasonic-de-distana-hc-sr04-compatibil-33-v-i-5-v.html?​search_query=0104110000020994&​results=1|Optimus digital]] | 
 +| Motor cu reductor si roata | [[https://​www.optimusdigital.ro/​ro/​motoare-altele/​139-motor-cu-reductor-si-roata.html?​search_query=0104210000001716&​results=1|Optimus digital]] | 
 +| Mini Breadboard Albastru | [[https://​www.optimusdigital.ro/​ro/​prototipare-breadboard-uri/​247-mini-breadboard-colorat.html?​search_query=0104210000000221&​results=1|Optimus digital]] | 
 +| LCD 1602| [[https://​www.optimusdigital.ro/​ro/​optoelectronice-lcd-uri/​2894-lcd-cu-interfata-i2c-si-backlight-albastru.html?​search_query=0104110000003584&​results=1|Optimus digital]] | 
 +| Buzzer | [[https://www.optimusdigital.ro/ro/audio-buzzere/​12247-buzzer-pasiv-de-33v-sau-3v.html?​search_query=0104210000081527&​results=1|Optimus digital]] | 
 +| Suport 6 baterii AA | [[https://​www.optimusdigital.ro/​ro/​suporturi-de-baterii/​12571-suport-pentru-6-baterii-aa-fara-capac.html?​search_query=0104110000084644&​results=1|Optimus digital]] | 
 +| Comutator KCD10-101 | [[https://​www.optimusdigital.ro/​ro/​butoane-i-comutatoare/​7377-comutator-kcd10-101.html?​search_query=0104110000047342&​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]] | 
 + 
 + 
 +==== Schema Electrica ==== 
 + 
 + 
 +{{:​pm:​prj2025:​apredescu:​cristian.deda_schema_electrica.png?​700}} 
 + 
 + 
 +==== Schema Board ==== 
 + 
 + 
 +{{:​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.1746375483.txt.gz · Last modified: 2025/05/04 19: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