This shows you the differences between two versions of the page.
|
pm:prj2026:ciprian.popescu0411:nicolae.dumitru3107 [2026/05/16 20:44] nicolae.dumitru3107 |
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 37: | 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) | + | **1. Stadiul actual al implementarii software:** |
| - | * Toolchain-ul avr-gcc pentru compilarea si scrierea codului C pe microcontroller. | + | 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. | ||
| - | **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 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. | ||
| - | ===== Rezultate Obtinute ===== | + | **6. Calibrarea elementelor de senzoristica si actionare:** |
| - | //(Urmeaza sa fie completat dupa implementarea practica a proiectului. Se vor detalia testele de calibrare a motoarelor si eficienta modulului de evitare a obstacolelor.)// | + | * **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). | ||
| - | ===== Concluzii ===== | + | **7. Optimizari implementate:** |
| - | //(Urmeaza sa fie completat la finalizarea proiectului. Va contine o evaluare a 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 a 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 viteza, dezvoltarea algoritmului de evitare a coliziunilor in modul autonom si a franei de urgenta in modul manual. | ||
| ===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||