This is an old revision of the document!


Mașinuță actionata Bluetooth cu semnalizare LED/Buzzer

Introducere

Mașinuță controlată prin Bluetooth, cu semnalizare sonoră și vizuală. Scopul este de a construi un vehicul controlabil de la distanță, folosind componente accesibile.

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

Descriere generală

Arduino Uno este unitatea de control care citește datele de la senzorul ultrasonic.

Î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ă.

 Schema bloc

Hardware Design

Aici sunt prezentate toate elementele hardware utilizate în proiect: lista de componente, schema electrică, descrierea conexiunilor și rezultatele simulării.

Listă de componente

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

Schema electrică

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

Diagramă de semnal

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)

 Vedere de sus a mașinii asamblate

 Schema completă a conexiunilor în Tinkercad

Software Design

Mediu de dezvoltare: Arduino IDE
Microcontroler: ATmega328P (Arduino Uno)
Tehnici: acces direct la registre, întreruperi hardware, PWM, UART, control motoare

Structură generală

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

Biblioteci și surse 3rd-party

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ă

Funcții implementate

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)

Comenzi Bluetooth

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

Tehnici hardware și registre

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

Algoritmi utilizați

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ță)

Considerații tehnice

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

Testare și integrare

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

Rezultate Obținute

Concluzii

Cod sursa

pm/prj2025/mdinica/dragos.coticeru.1748564267.txt.gz · Last modified: 2025/05/30 03:17 by dragos.coticeru
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