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ă

Mașinuța este controlată exclusiv prin Bluetooth, folosind un Arduino Uno și un shield L293D pentru controlul a 4 motoare DC. Utilizatorul transmite comenzi dintr-o aplicație mobilă către un modul HC-05, conectat la Arduino prin UART (USART). Comenzile primite sunt interpretate direct și transformate în semnale logice către pinii de control ai motoarelor.

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.

 Schema bloc cu modulele hardware și fluxul de comenzi

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)

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

Concluzii

Cod sursa

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