This is an old revision of the document!
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:
Lista de piese:
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.
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:
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:
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:
pulseIn() se bazeaza pe timerele interne pentru a masura extrem de precis durata impulsului ecoului intors de la senzorul ultrasonic.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.
checkBluetooth().if (autonomousMode) ruteaza executia catre rutina de evitare obstacole sau rutina de ascultare a utilizatorului.6. Calibrarea elementelor de senzoristica si actionare:
(durata * 0.034) / 2.delay() in corelatie cu viteza PWM curenta (ex: 400ms la o viteza PWM de 150 produce un viraj stabil la dreapta).7. Optimizari implementate:
moveForward(), turnLeft() etc.) care suprascriu in mod direct registrii doar cand este necesar, reducand overhead-ul la comutarea directiei.8. Demo Video si Cod Sursa: