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/09 10:47]
nicolae.dumitru3107 shorter title
pm:prj2026:ciprian.popescu0411:nicolae.dumitru3107 [2026/05/25 09:15] (current)
nicolae.dumitru3107 [Jurnal Actualizat]
Line 13: Line 13:
  
 **Schema bloc:** **Schema bloc:**
-Unitatea centrala (ATmega328P) primeste instructiuni de la modulul HC-05 (UART) si date de la senzorul HC-SR04 (Pini Digitali / Intreruperi)Microcontrolerul comanda puntea H L298N (Pini Digitali pentru directie si PWM pentru viteza), care actioneaza cele 4 motoare DC. Optional, microcontrolerul comanda direct indicatori vizuali si sonori. + 
-//(O diagrama bloc grafica detaliata va fi adaugata pe parcursul dezvoltarii).//+{{:​pm:​prj2026:​ciprian.popescu0411:​schema_bloc_luca_dumitru.png|}}
  
 ===== Hardware Design ===== ===== Hardware Design =====
Line 27: Line 27:
   * **Componente pasive:** Fire de conexiune Dupont, breadboard.   * **Componente pasive:** Fire de conexiune Dupont, breadboard.
  
-===== Software Design ​===== +===== Configuratie Pini si Schema Electrica ​=====
-**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):​** +Pentru interconectarea modulelor am utilizat pinii microcontroller-ului ATmega328P prin intermediul Sensor Shield-uluitinand cont de functionalitatile speciale ale fiecarui pin (PWMUART, Intreruperi externe):
-  ​**Initializare:​** Configurare registre pentru pini (DDRxPORTx), initializare UART pentru Bluetooth si configurare Timere pentru PWM si masurarea timpului. +
-  - **Asteptare/​Receptie:​** Sistemul interogheaza bufferul UART sau foloseste intreruperi pentru a 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 Obţinute ===== +^ Componenta ^ Pin Arduino ^ Tip Semnal ^ Justificare ​Rol in Proiect ^ 
-//(Urmeaza sa fie completat dupa implementarea practica a proiectuluiSe vor detalia testele de calibrare a motoarelor ​si eficienta modulului ​de evitare a obstacolelor.)//+| **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. |
  
-===== Concluzii ===== +**Schema Electrica ​Conexiunilor:​**
-//(Urmeaza sa fie completat la finalizarea proiectului. Va contine o evaluare ​dificultatilor intampinate si posibile imbunatatiri pe viitor.)//+
  
-===== Download ===== +{{:​pm:​prj2026:​ciprian.popescu0411:​schema_electrica_detaliata_dumitru_luca.png?​600|}}
-//(Arhiva cu fisierele codului sursa, schemele electrice si scriptul de compilare urmeaza sa fie incarcata la finalizarea proiectului)//​+
  
-===== Jurnal ===== +*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. 
-  * **09 Mai 2026:** Alegerea temei, elaborarea specificatiilor proiectului si a documentatiei initiale bazate pe componentele hardware alese.+ 
 +===== Implementare Hardware ===== 
 +In aceasta etapa am finalizat asamblarea fizica a sasiului si interconectarea modulelor electronice. S-a realizat alimentarea sistemului si testarea sumara a functionalitatii electrice (componentele primesc tensiunile corecte, fara scurtcircuite). 
 + 
 +Dupa cum se poate observa in imaginea de mai jos, componentele sunt alimentate cu succes: 
 +  * **Placa Arduino Uno si Sensor Shield-ul:​** LED-ul de Power este aprins, confirmand alimentarea logicii. 
 +  * **Modulul Punte H L298N:** Driver-ul motoarelor primeste alimentare de la baterii, LED-ul rosu martor fiind aprins. 
 +  * **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.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. 
 + 
 +**4. Justificarea utilizarii functionalitatilor din laborator:​** 
 +  * **UART (Comunicatie Seriala):** Utilizat pentru receptia asincrona a comenzilor de la modulul HC-05 (directii, moduri 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. 
 + 
 +**5. Scheletul proiectului si interactiunea functionalitatilor:​** 
 +Structura este bazata pe o bucla infinita ''​loop()''​ de tip non-blocking.  
 +  - 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 viteza, dezvoltarea algoritmului de evitare a coliziunilor in modul autonom ​si a franei de urgenta in modul manual.
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
Line 55: Line 108:
   * Documentatie Modul Bluetooth HC-05 (comenzi AT si baud rate).   * Documentatie Modul Bluetooth HC-05 (comenzi AT si baud rate).
   * Laboratoarele PM (0-3) pentru lucrul cu registre, UART, Timere si PWM.   * Laboratoarele PM (0-3) pentru lucrul cu registre, UART, Timere si PWM.
 +
 +[[?​do=export_html|Export to HTML]]
pm/prj2026/ciprian.popescu0411/nicolae.dumitru3107.1778312832.txt.gz · Last modified: 2026/05/09 10:47 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