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 21:21]
nicolae.dumitru3107
pm:prj2026:ciprian.popescu0411:nicolae.dumitru3107 [2026/05/25 09:15] (current)
nicolae.dumitru3107 [Jurnal Actualizat]
Line 60: Line 60:
 {{:​pm:​prj2026:​ciprian.popescu0411:​implementare_hardware_dumitru_luca.jpeg?​600|}} {{:​pm:​prj2026:​ciprian.popescu0411:​implementare_hardware_dumitru_luca.jpeg?​600|}}
  
-===== Software ​Design ​===== +===== Implementare ​Software ​si Validare (Milestone 3) =====
-**Mediu de dezvoltare:​**  +
-  * VSCode cu extensia PlatformIO (sau Arduino IDE) +
-  * Toolchain-ul avr-gcc pentru compilarea si scrierea codului C pe microcontroller.+
  
-**Algoritmi si structuri (Planificare):** +**1. Stadiul actual al implementarii software:** 
-  - **Initializare:​** Configurare registre pentru pini (DDRx, PORTx), initializare UART pentru Bluetooth si configurare Timere pentru PWM si masurarea timpului. +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 bloca procesorul) intre "Modul Manual" ​(teleghidat din aplicatie) si "​Modul ​Autonom" (deplasare independenta). 
-  - **Asteptare/​Receptie:​** ​Sistemul ​interogheaza bufferul UART sau foloseste intreruperi pentru ​primi litere de comanda ​(ex: '​F'​ pentru Forward, '​A'​ pentru ​Autonom)+
-  - **Mod Manual:** Actualizarea pinilor driverului L298N in functie de comenzile primite. +
-  - **Mod Autonom:** Generarea trigger-ului pentru senzorul ultrasonic, capturarea ecoului si calculul distantei. Daca distanta < 15 cm, se apeleaza functia de evitare obstacol.+
  
-===== Rezultate Obtinute ===== +**2. Motivarea alegerii bibliotecilor:​** 
-//(Urmeaza sa fie completat dupa implementarea practica ​proiectuluiSe vor detalia testele ​de calibrare a motoarelor si eficienta modulului ​de evitare a obstacolelor.)//+S-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.
  
-===== Concluzii ===== +**3Elementul de noutate al proiectului:​** 
-//(Urmeaza sa fie completat la finalizarea proiectuluiVa contine ​evaluare a dificultatilor intampinate ​si posibile imbunatatiri pe viitor.)//+Spre deosebire de masinuta RC clasica, acest proiect implementeaza un concept de "​Asistenta Activa"​. Chiar si in Modul Manual, senzorul ultrasonic ruleaza in fundalDaca 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.
  
-===== Download ===== +**4. Justificarea utilizarii functionalitatilor din laborator:​** 
-//(Arhiva cu fisierele codului sursaschemele electrice si scriptul ​de compilare urmeaza sa fie incarcata ​la finalizarea proiectului)//+  * **UART ​(Comunicatie Seriala):** Utilizat pentru receptia asincrona a comenzilor de la modulul HC-05 (directiimoduri de functionare,​ valori slider). 
 +  * **Timere Hardware:** Functia ''​pulseIn()''​ se bazeaza pe timerele interne pentru a masura extrem de precis durata impulsului ecoului intors ​de la senzorul ultrasonic. 
 +  * **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.
  
-===== Jurnal ===== +**5. Scheletul proiectului si interactiunea functionalitatilor:​** 
-  * **09 Mai 2026:** Alegerea temei, elaborarea specificatiilor proiectului ​si a documentatiei initiale bazate pe componentele hardware alese+Structura este bazata pe o bucla infinita ''​loop()''​ de tip non-blocking.  
-  * **16 Mai 2026:** Finalizarea etapei de implementare hardware. ​Asamblarea sasiului, rutarea firelor ​(PWM, UART, GPIO) catre Sensor Shield ​si validarea alimentarii componentelor.+  - La fiecare ciclu, se verifica bufferul UART prin functia ''​checkBluetooth()''​. 
 +  - Imediat dupa, senzorul emite un puls si returneaza distanta. 
 +  - O instructiune de decizie ''​if (autonomousMode)''​ ruteaza executia catre rutina de evitare obstacole sau rutina de ascultare a utilizatorului. 
 +  - Modul in care a fost validat: Am realizat teste de stres trimitand comenzi repetate din slider-ul de viteza in timp ce intrerupeam calea senzorului ultrasonic cu mana, validand ca nu exista delay-uri sau blocaje in trecerea de la operare manuala la frana de urgenta. 
 + 
 +**6. Calibrarea elementelor de senzoristica si actionare:​** 
 +  * **Senzorul Ultrasonic (HC-SR04):​** Semnalul a 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 a 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). 
 + 
 +**7. Optimizari implementate:​** 
 +  * 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 a stoca string-uri inutile, salvand memorie SRAM. 
 + 
 +**8. Demo Video si Cod Sursa:** 
 +  * 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 ​Actualizat ​===== 
 +  * **09 Mai 2026:** Alegerea temei, elaborarea specificatiilor proiectului. 
 +  * **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.1778955708.txt.gz · Last modified: 2026/05/16 21:21 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