Smart Rover 4WD

Introducere

  • Ce face: Proiectul este o platforma robotica mobila 4WD (4×4) capabila sa functioneze in doua moduri: teleghidat de la distanta via Bluetooth (folosind un smartphone) sau in mod autonom (explorare a mediului cu evitarea obstacolelor).
  • Scopul lui: Scopul principal este realizarea unui sistem embedded interactiv bazat pe microcontrolerul ATmega328P, care sa integreze si sa aplice notiunile invatate la PM: comunicatie UART, generare semnale PWM, utilizarea Timerelor si a Intreruperilor.
  • Ideea de la care am pornit: Ideea a pornit de la dorinta de a construi un “rover” versatil, care sa combine partea de control manual clasic cu algoritmi simpli de decizie si asistenta la coliziune.
  • De ce este util: Proiectul demonstreaza practic modul in care un sistem hardware poate face tranzitia intre executia comenzilor directe ale utilizatorului si preluarea controlului (override) in situatii de urgenta (ex: detectarea iminenta a unui perete).

Descriere generala

Sistemul este coordonat de un microcontroler ATmega328P. Prin intermediul modulului Bluetooth HC-05, microcontrolerul asteapta comenzi asincrone pe interfata seriala (UART) primite de la o aplicatie mobila. Comenzile dicteaza directia, viteza (controlata prin semnale PWM) si actionarea indicatoarelor (buzzer, LED-uri).

Daca utilizatorul comuta in modul “Autonom”, sistemul ignora comenzile de deplasare de pe telefon si preia date de la senzorul ultrasonic HC-SR04. Cu ajutorul unui timer intern, se masoara durata semnalului de intoarcere (Echo) pentru a calcula distanta. La detectarea unui obstacol sub o distanta critica, sistemul franeaza si executa automat o rutina de evitare (mers inapoi si viraj).

Schema bloc:

Hardware Design

Lista de piese:

  • Microcontroler: ATmega328P (pe o placa de dezvoltare Arduino Uno).
  • Modul Comunicatie: Modul Bluetooth HC-05 (pentru conexiunea cu smartphone-ul).
  • Senzor de distanta: Modul ultrasonic HC-SR04 (Time-of-Flight bazat pe sunet).
  • Driver Motoare: Modul Punte H L298N (pentru controlul curentilor mari).
  • Actuatori de miscare: Sasiu masina 4WD din plexiglas cu 4 motoreductoare DC si roti.
  • Indicatoare: Buzzer activ (claxon) si LED-uri + rezistente de limitare (faruri/stopuri).
  • Alimentare: Suport pentru 4 baterii/acumulatori AA pentru motoare si alimentare logica.
  • 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:

*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

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).

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.

  1. La fiecare ciclu, se verifica bufferul UART prin functia checkBluetooth().
  2. Imediat dupa, senzorul emite un puls si returneaza distanta.
  3. O instructiune de decizie if (autonomousMode) ruteaza executia catre rutina de evitare obstacole sau rutina de ascultare a utilizatorului.
  4. 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:

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

  • Datasheet ATmega328P - Microchip Technology.
  • Datasheet L298N Dual H-Bridge Motor Driver.
  • Documentatie Modul Bluetooth HC-05 (comenzi AT si baud rate).
  • Laboratoarele PM (0-3) pentru lucrul cu registre, UART, Timere si PWM.

Export to HTML

pm/prj2026/ciprian.popescu0411/nicolae.dumitru3107.txt · Last modified: 2026/05/25 09:15 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