This shows you the differences between two versions of the page.
pm:prj2025:apredescu:cristian.deda [2025/05/17 01:19] 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:willy_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 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 ===== | ||