This shows you the differences between two versions of the page.
pm:prj2025:apredescu:cristian.deda [2025/05/16 14:46] cristian.deda [Introducere] |
pm:prj2025:apredescu:cristian.deda [2025/05/31 22:42] (current) cristian.deda [Rezultate Obţinute] |
||
---|---|---|---|
Line 10: | Line 10: | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | Schema bloc: | + | ==== Schema bloc ==== |
{{:pm:prj2025:apredescu:willy_scehma_bloc.png|}} | {{: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 şi din datasheet-uri, e.g. http://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 Studio, CodeVisionAVR) | + | | `loop()` | Logica principala a programului: detectie 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 (optional, comentat). | |
- | * (etapa 3) surse ş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 ===== | ||