This is an old revision of the document!
Controlul se face printr-o aplicație mobilă compatibilă Bluetooth, care permite direcționarea mașinuței în timp real.
În funcție de mișcarea aleasă, mașinuța aprinde un LED și activează un buzzer pentru a semnaliza vizual și sonor comanda executată.
Pentru feedback, sistemul include:
un LED care se aprinde în timpul mișcărilor laterale și înapoi
un buzzer activ care se aprinde sincron cu LED-ul în mers înapoi
Controlul direcției și al vitezei motoarelor este realizat cu semnale digitale și PWM, iar gestionarea LED-ului și buzzerului se face cu acces direct la registre și un timer hardware pentru clipire asincronă.
Interacțiunea modulelor este următoarea:
Modul Bluetooth (HC-05): transmite comenzile către Arduino prin UART
Arduino Uno: interpretează comenzile și controlează motoarele, LED-ul și buzzerul
Shield L293D: primește semnalele de direcție și PWM pentru fiecare motor
Motoare DC (x4): execută mișcarea (față, spate, stânga, dreapta, diagonale)
LED + Buzzer: oferă feedback vizual și sonor în funcție de direcție
Toate modulele comunică prin semnale digitale directe sau prin registre, fără delay-uri software, pentru un răspuns imediat la comenzi.
Componentă | Rol în sistem | Conectare la Arduino (prin Shield) |
---|---|---|
Arduino Uno | Controler principal | — |
Shield motoare L293D | Controlează 4 motoare DC | Se montează direct peste placa Arduino Uno |
4x Motoare DC + roți | Permite deplasarea vehiculului | Conectate la porturile M1–M4 de pe shield |
LED (roșu) | Semnalizare vizuală a mișcării | A1 (PC1) |
Buzzer activ (5V) | Avertizare sonoră în timpul mișcării | A0 (PC0) |
Modul Bluetooth HC-05 | Transmitere comenzi de pe telefon via Bluetooth | TX → D0, RX → D1 (cu divizor de tensiune) |
Breadboard + jumperi | Conexiuni simple și fără lipire | — |
2x baterii 18650 (3.7V) | Alimentare portabilă pentru logică și motoare | Conectate la portul VIN de pe shield |
Suport baterii 2×18650 | Fixare fizică a bateriilor | — |
LED-ul este conectat la pinul A1 (PC1) cu rezistor de 220Ω în serie
Buzzer-ul este conectat la pinul A0 (PC0)
Motoarele sunt conectate la M1, M2, M3 și M4 direct pe shield
LED-ul clipește la 0.5 secunde (folosind Timer1 în modul CTC) când mașina merge înapoi
Buzzer-ul este activ în toate direcțiile de mers (semnal logic HIGH)
Limbaj: C++ cu elemente de bare-metal
IDE: Arduino IDE
Tip fișier principal: .cpp
Împărțire logică pe secțiuni:
Inițializare porturi GPIO (registre)
Inițializare PWM pentru motoare
Configurare UART pentru Bluetooth
Inițializare Timer1 pentru LED blink
Interpretare comenzi seriale și actualizare mișcare
AFMotor.h — pentru control motoare cu shield L293D
avr/io.h, avr/interrupt.h — acces direct la registre și ISR
Arduino.h, util/delay.h — funcții de bază
forward(), back(), left(), right() — controlează cele 4 motoare
stop() — oprește mișcarea și semnalizarea
startBlinkTimer() / stopBlinkTimer() — gestionează LED-ul pe Timer1
ISR(TIMER1_COMPA_vect) — LED-ul clipeste automat în mers înapoi
ISR(USART_RX_vect) — citire caractere UART de la HC-05 (activare directă mișcare)
Recepționate prin UART, în format ASCII:
'F' – înainte
'B' – înapoi
'L' – stânga
'R' – dreapta
'I', 'J', 'K', 'M' – mișcări diagonale
'T' – stop
LED-ul (A1) și buzzerul (A0) controlați direct cu: DDRC |= (1 « PCx)\ PORTC |= (1 « PCx) / PORTC &= ~(1 « PCx)
UART: Serial.begin(9600) + citire cu Serial.available() sau ISR
Timer1 configurat manual cu TCCR1B, OCR1A, TIMSK1 pentru LED blink asincron
Motoarele: controlate cu AF_DCMotor + PWM (setSpeed())
Parser UART — interpretează caracterele primite de la telefon
Control PWM — setează viteza fiecărui motor
Blink asincron — LED care semnalizează mersul înapoi fără delay
Mapare mișcări diagonale — combină direcții cu viteze diferite (e.g. I = stânga-față)
Se evită delay() în loop(), pentru răspuns rapid la comenzi
LED-ul și buzzerul sunt sincronizate cu mișcarea
Codul e modular și poate fi extins cu ușurință pentru alți senzori
Testarea a fost incrementală:
Test LED/buzzer separat
Test comenzi de mișcare simple
Test UART cu aplicație Android
Test Timer1 LED blink
Integrare completă Bluetooth + semnalizare + motoare
Proiectul este functional si poate fi folosit in diverse domenii, atat in scop de divertisment, cat si scopuri mai practice, cum ar fi transportul de obiecte.