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ă.
În funcție de distanța față de obstacol, Arduino comandă motoarele să se oprească sau să vireze.
Dacă se apropie de un obstacol, se activează un buzzer și un LED. * LED-ul se aprinde când mașina schimbă direcția. * Buzzer-ul variază frecvența sunetului în funcție de distanță.
În modul automat, mașina navighează singură, evitând obstacolele cu ajutorul senzorului de distanță.
În modul Bluetooth, utilizatorul controlează manual mașina printr-o aplicație de pe telefon, trimițând comenzi către Arduino printr-un modul de comunicație serială.
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)
Modulul HC-05 este conectat la:
TX → D0 (RX Arduino) – cu divizor de tensiune (2kΩ + 1kΩ)
RX → D1 (TX Arduino)
Display LCD I2C conectat la:
SDA → A4 (jos pe shield, spre margine)
SCL → A5 (jos pe shield, lângă SDA)
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: .ino
Î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ță)
Variabilele partajate între ISR și loop() sunt declarate volatile
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
https://github.com/Dragos-Coticeru/Arduino-Bluetooth-Car
Codul va avea modificari, inca nu este complet