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

* listă de componente * schema electrică (realizată digital, desenată sau simulată) * descrierea rolului fiecărei componente, cu detalii despre conexiunile către Arduino

Componente utilizate și rolul acestora:

Platformă acrilică – suport mecanic pentru toate componentele; asigură stabilitate și montare ușoară.

Arduino Uno – unitatea centrală de control; primește comenzi Bluetooth și controlează motoarele, LED-ul și buzzerul.

Shield motoare L293D – montat direct peste Arduino; permite controlul a până la 4 motoare DC prin semnale digitale.

Controlul direcției și vitezei motoarelor se face intern prin pini dedicați ai shield-ului (gestionați de biblioteca AFMotor).

4x Motoare DC 3–6V + 4 roți – asigură deplasarea vehiculului în toate direcțiile (înainte, înapoi, stânga, dreapta, diagonală).

LED (pe pinul A1 / PC1) – semnalizează vizual mișcarea; rămâne aprins sau clipește în funcție de direcția vehiculului.

Buzzer activ (pe pinul A0 / PC0) – semnalizează sonor mișcarea; pornește când vehiculul este în mișcare.

Modul Bluetooth HC-05 – permite controlul vehiculului prin comenzi transmise de pe un telefon mobil.

Pini utilizați:

TX al modulului → RX (D0) al Arduino – prin divizor de tensiune (pentru a coborî 5V la 3.3V)

RX al modulului ← TX (D1) al Arduino

Breadboard + fire jumper – folosite pentru conectarea buzzerului, LED-ului și modulului Bluetooth la pinii corespunzători.

Baterii Li-Ion 18650 (3.7V) – alimentează atât partea de putere (motoare), cât și logica (Arduino + periferice).

Suport baterii, șuruburi, piulițe – asigură fixarea sigură a componentelor pe platformă.

 Vedere de sus a mașinii asamblate

 Schema completă a conexiunilor în Tinkercad

Software Design

* mediu de dezvoltare * acces direct la registre și întreruperi * control PWM, UART, senzor obstacol * algoritmi: FSM, ISR, filtrare, interpretare comenzi

Mediu de dezvoltare și structură generală:

Limbaj: C

IDE: MPLAB X

Compilator: XC8

Microcontroler: PIC16F877A

Programator/debugger: PICkit 3

Aplicația este împărțită în mai multe module software, fiecare responsabil pentru o funcționalitate specifică:

Inițializare hardware (I/O, UART, temporizatoare)

Control motoare (direcție și viteză cu PWM)

Recepție comenzi Bluetooth prin UART

Comportament autonom: evitare obstacole

Comutare mod funcționare prin întrerupere externă

Biblioteci și fișiere incluse:

xc.h – acces la registrele microcontrolerului

Fișiere de configurare (fuses, frecvență oscilator)

Toate funcțiile pentru UART, PWM și logica de control sunt scrise manual, folosind acces direct la registre.

Utilizarea întreruperilor:

INT0 – comutare între mod Bluetooth și mod autonom (prin apăsarea unui buton)

USART Receive Interrupt – primește și interpretează comenzi Bluetooth (fără polling)

Controlul motoarelor și PWM:

Direcție: controlată prin semnale digitale către driverul L298N (IN1–IN4)

Viteză: ajustată cu PWM, folosind registrul TMR1

CCPR1L – controlează factorul de umplere

TMR1 și PR1 – configurează frecvența PWM

Mod Bluetooth (control manual):

Comenzile sunt primite de la telefon via Bluetooth (HC-05), sub formă de caractere ASCII:

'F' – înainte

'B' – înapoi

'L' – stânga

'R' – dreapta

'S' – stop

Comanda este procesată imediat în ISR-ul UART și direcția motoarelor este actualizată

Mod autonom (ocolire obstacole):

Senzori de obstacol frontal (ex: IR sau ultrasonic) trimit semnale digitale către Arduino

Mașinuța evaluează starea senzorilor în bucla principală:

Dacă un obstacol este detectat: oprire și evitare laterală

Dacă drumul este liber: continuă deplasarea înainte

Logica este implementată cu FSM (Finite State Machine) cu stările:

MERGE_INAINTE

EVITA_STANGA

EVITA_DREAPTA

OPRIT

Algoritmi implementați:

FSM – pentru decizii logice în modul autonom

ISR (Interrupt Service Routines) – pentru UART și comutare mod

Debouncing software – pentru stabilizarea butonului de mod

PWM control – ajustarea vitezei motoarelor

Parser comenzi seriale – interpretarea rapidă a comenzilor Bluetooth

Alte considerente:

Variabilele partajate cu ISR-uri sunt declarate volatile

Se evită delay-uri lungi în bucla principală pentru a nu bloca răspunsul la întreruperi

Codul este scris modular, permițând testarea și depanarea pe componente

Testarea aplicației s-a realizat incremental: s-au verificat individual comanda motoarelor, recepția UART, funcționarea PWM și senzorii, urmate de integrarea completă în sistemul dual

Rezultate Obținute

Concluzii

Cod sursa

https://github.com/Dragos-Coticeru/Arduino-Bluetooth-Car

Codul va avea modificari, inca nu este complet

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