Differences

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

Link to this comparison view

pm:prj2026:ciprian.popescu0411:nicolae.dumitru3107 [2026/05/16 20:40]
nicolae.dumitru3107 implementare hardware
pm:prj2026:ciprian.popescu0411:nicolae.dumitru3107 [2026/05/25 09:15] (current)
nicolae.dumitru3107 [Jurnal Actualizat]
Line 26: Line 26:
   * **Alimentare:​** Suport pentru 4 baterii/​acumulatori AA pentru motoare si alimentare logica.   * **Alimentare:​** Suport pentru 4 baterii/​acumulatori AA pentru motoare si alimentare logica.
   * **Componente pasive:** Fire de conexiune Dupont, breadboard.   * **Componente pasive:** Fire de conexiune Dupont, breadboard.
 +
 +===== Configuratie Pini si Schema Electrica =====
 +
 +Pentru interconectarea modulelor am utilizat pinii microcontroller-ului ATmega328P prin intermediul Sensor Shield-ului,​ tinand cont de functionalitatile speciale ale fiecarui pin (PWM, UART, Intreruperi externe):
 +
 +^ Componenta ^ Pin Arduino ^ Tip Semnal ^ Justificare / Rol in Proiect ^
 +| **L298N - ENA** | Pin 6 | Iesire PWM | Controleaza viteza motoarelor de pe partea stanga (Timer 0). |
 +| **L298N - IN1** | Pin 7 | Iesire Digitala | Directie motor stanga (GPIO standard). |
 +| **L298N - IN2** | Pin 3 | Iesire Digitala | Directie motor stanga (GPIO standard). |
 +| **L298N - IN3** | Pin 4 | Iesire Digitala | Directie motor dreapta (GPIO standard). |
 +| **L298N - IN4** | Pin 2 | Iesire Digitala | Directie motor dreapta (GPIO standard). |
 +| **L298N - ENB** | Pin 5 | Iesire PWM | Controleaza viteza motoarelor de pe partea dreapta (Timer 0). |
 +| **HC-SR04 - Trig**| Pin 8 | Iesire Digitala | Declanseaza unda ultrasonica prin trimiterea unui puls de 10us. |
 +| **HC-SR04 - Echo**| Pin 9 | Intrare Digitala | Masoara durata impulsului de intoarcere folosind timerele interne. |
 +| **Servo SG90** | Pin 10 | Iesire PWM | Controleaza unghiul de orientare al senzorului de distanta (Timer 1). |
 +| **HC-05 - TXD** | Pin 0 (RX) | Intrare UART | Receptioneaza datele seriale asincrone trimise de pe smartphone. |
 +| **HC-05 - RXD** | Pin 1 (TX) | Iesire UART | Transmite date/​confirmari inapoi catre aplicatia mobila. |
 +
 +**Schema Electrica a Conexiunilor:​**
 +
 +{{:​pm:​prj2026:​ciprian.popescu0411:​schema_electrica_detaliata_dumitru_luca.png?​600|}}
 +
 +*Nota logistica:* Toate componentele partajeaza o masa comuna (GND) legata la Sensor Shield, esentiala pentru stabilirea aceluiasi potential de referinta (0V) in interpretarea semnalelor digitale si PWM.
  
 ===== Implementare Hardware ===== ===== Implementare Hardware =====
Line 35: Line 58:
   * **Modulul Bluetooth HC-05:** Este alimentat corect la 5V si a intrat in modul de pairing (avertizat prin clipirea rapida a LED-ului incorporat).   * **Modulul Bluetooth HC-05:** Este alimentat corect la 5V si a intrat in modul de pairing (avertizat prin clipirea rapida a LED-ului incorporat).
  
-{{:​pm:​prj2026:​ciprian.popescu0411:​implementare_hardware_dumitru_luca.jpg?600|Asamblare si testare alimentare hardware}}+{{:​pm:​prj2026:​ciprian.popescu0411:​implementare_hardware_dumitru_luca.jpeg?600|}} 
 + 
 +===== Implementare Software si Validare (Milestone 3) ===== 
 + 
 +**1. Stadiul actual al implementarii software:​** 
 +Proiectul dispune in acest moment de un cod complet functional, structurat sub forma unui automat de stari (State Machine). Sistemul poate comuta in timp real (fara a bloca procesorul) intre "Modul Manual"​ (teleghidat din aplicatie) si "Modul Autonom"​ (deplasare independenta).  
 + 
 +**2. Motivarea alegerii bibliotecilor:​** 
 +S-a dorit mentinerea codului cat mai aproape de capacitatile hardware native, motiv pentru care s-au folosit doar bibliotecile strict necesare: 
 +  * **<​Arduino.h>​** - Nucleul framework-ului pentru accesul rapid la functiile de baza de I/O. 
 +  * **<​Servo.h>​** - Folosita strict pentru generarea semnalului PWM pe 50Hz necesar servomotorului,​ folosind Timer 1 (pe 16 biti), lasand Timer 0 liber pentru motoarele de tractiune. 
 + 
 +**3. Elementul de noutate al proiectului:​** 
 +Spre deosebire de o masinuta RC clasica, acest proiect implementeaza un concept de "​Asistenta Activa"​. Chiar si in Modul Manual, senzorul ultrasonic ruleaza in fundal. Daca utilizatorul trimite comanda de inaintare ('​F'​),​ dar senzorul detecteaza o coliziune iminenta sub distanta de siguranta setata, microcontroller-ul face "​override"​ (suprascrie comanda utilizatorului) si taie alimentarea motoarelor pentru a preveni impactul.
  
-===== Software Design ===== +**4. Justificarea utilizarii functionalitatilor din laborator:** 
-**Mediu de dezvoltare:**  +  * **UART ​(Comunicatie Seriala):** Utilizat pentru receptia asincrona a comenzilor de la modulul HC-05 (directii, moduri de functionare,​ valori slider). 
-  * VSCode cu extensia PlatformIO ​(sau Arduino IDE+  * **Timere Hardware:** Functia ''​pulseIn()''​ se bazeaza pe timerele interne ​pentru ​a masura extrem de precis durata impulsului ecoului intors de la senzorul ultrasonic. 
-  * Toolchain-ul avr-gcc ​pentru ​compilarea ​si scrierea codului C pe microcontroller.+  * **Semnale PWM:** Pinul ENA si ENB de pe driverul L298N primesc factor de umplere (Duty Cycle) variabil via ''​analogWrite()''​ pentru a controla viteza motoarelor DC fara a pierde cuplul.
  
-**Algoritmi ​si structuri (Planificare):** +**5. Scheletul proiectului ​si interactiunea functionalitatilor:** 
-  - **Initializare:​** Configurare registre pentru pini (DDRx, PORTx), initializare UART pentru Bluetooth si configurare Timere pentru PWM si masurarea timpului+Structura este bazata pe o bucla infinita ''​loop()''​ de tip non-blocking.  
-  - **Asteptare/​Receptie:​** Sistemul interogheaza ​bufferul UART sau foloseste intreruperi pentru a primi litere de comanda (ex: 'F' ​pentru Forward, ​'A' ​pentru Autonom)+  - La fiecare ciclu, se verifica ​bufferul UART prin functia ​''​checkBluetooth()''​. 
-  - **Mod Manual:** Actualizarea pinilor driverului L298N in functie ​de comenzile primite+  - Imediat dupa, senzorul emite un puls si returneaza distanta. 
-  - **Mod Autonom:** Generarea trigger-ului pentru senzorul ​ultrasonic, ​capturarea ecoului si calculul distantei. Daca distanta < 15 cm, se apeleaza functia ​de evitare obstacol.+  - O instructiune ​de decizie ''​if (autonomousMode)''​ ruteaza executia catre rutina de evitare obstacole sau rutina de ascultare a utilizatorului
 +  - Modul in care a fost validatAm realizat teste de stres trimitand comenzi repetate din slider-ul de viteza in timp ce intrerupeam calea senzorului ​ultrasonic ​cu manavalidand ca nu exista delay-uri sau blocaje in trecerea ​de la operare manuala la frana de urgenta.
  
-===== Rezultate Obtinute ===== +**6. Calibrarea elementelor de senzoristica si actionare:​** 
-//(Urmeaza sa fie completat dupa implementarea practica ​proiectuluiSe vor detalia testele ​de calibrare ​motoarelor si eficienta modulului de evitare a obstacolelor.)//+  * **Senzorul Ultrasonic ​(HC-SR04):** Semnalul ​fost calibrat implementand un Timeout de 30.000 microsecunde pe citire. Daca semnalul se pierde in spatiu (nu exista ecou), evitam inghetarea sistemului returnand o valoare teoretica ​de 999 cm. Conversia in centimetri ​fost realizata folosind viteza sunetului: ''​(durata * 0.034) / 2''​. 
 +  * **Motoarele DC:** Calibrarea unghiului de 45 de grade pentru evitarea autonoma a fost realizata empiric prin ajustarea timpilor de ''​delay()''​ in corelatie cu viteza PWM curenta (ex: 400ms la o viteza PWM de 150 produce un viraj stabil la dreapta).
  
-===== Concluzii ===== +**7. Optimizari implementate:​** 
-//(Urmeaza sa fie completat ​la finalizarea proiectuluiVa contine o evaluare ​dificultatilor intampinate si posibile imbunatatiri pe viitor.)//+  * S-a eliminat utilizarea delay-urilor mari in blocul principal de loop. 
 +  * Rutinele de miscare au fost modularizate in functii ​(''​moveForward()'',​ ''​turnLeft()''​ etc.) care suprascriu in mod direct registrii doar cand este necesar, reducand overhead-ul ​la comutarea directiei. 
 +  * Citirea UART parseaza automat intregii (pentru slider-ul de viteza) fara stoca string-uri inutile, salvand memorie SRAM.
  
-===== Download ===== +**8. Demo Video si Cod Sursa:** 
-//​(Arhiva ​cu fisierele codului ​sursa, schemele electrice si scriptul de compilare urmeaza sa fie incarcata la finalizarea proiectului)//+  * Repozitoriu GitHub ​cu codul sursa: [[https://github.com/​dlroyale3/​Proiect-PM-Smart-Rover-4WD|Link GitHub Repo]] 
 +  * Demo Video Prezentare Functionare:​ [[https://​drive.google.com/​file/​d/​1pHKwmzyTdoCDtxxHD9knY158oxi7BpBs/​view?​usp=sharing|Link Google Drive Demo]]
  
-===== Jurnal ===== +===== Jurnal ​Actualizat ​===== 
-  * **09 Mai 2026:** Alegerea temei, elaborarea specificatiilor proiectului ​si a documentatiei initiale bazate pe componentele hardware alese+  * **09 Mai 2026:** Alegerea temei, elaborarea specificatiilor proiectului. 
-  * **16 Mai 2026:** Finalizarea etapei de implementare hardware. ​Asamblarea sasiului, rutarea firelor ​(PWM, UART, GPIO) catre Sensor Shield ​si validarea alimentarii componentelor.+  * **16 Mai 2026:** Finalizarea etapei de implementare hardware. 
 +  * **24 Mai 2026:** Implementarea arhitecturii software ​(Milestone 3). Calibrarea comunicatiei Bluetooth, parsarea datelor ​PWM pentru vitezadezvoltarea algoritmului de evitare a coliziunilor in modul autonom ​si a franei de urgenta in modul manual.
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
pm/prj2026/ciprian.popescu0411/nicolae.dumitru3107.1778953239.txt.gz · Last modified: 2026/05/16 20:40 by nicolae.dumitru3107
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