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; citește senzorii și controlează motoarele, LED-ul și buzzerul.

- Shield motoare L293D – permite controlul a până la 4 motoare DC prin semnale digitale de la Arduino.

  1. Pini utilizați:
    1. D2, D3, D4, D5 – direcția motoarelor (IN1–IN4)
    2. D10, D11 – controlul vitezei motoarelor prin PWM (ENA/ENB)

- 4x Motoare DC 3-6V + 4 roți – asigură deplasarea vehiculului înainte/înapoi și viraje.

- Senzor ultrasonic HC-SR04 – măsoară distanța față de obstacole pentru navigare autonomă.

  1. Pini utilizați:
    1. Trig – D6
    2. Echo – D7

- LED – semnalizează vizual când mașina virează (dreapta pentru evitare obstacol).

  1. Pin utilizat:
    1. D8

- Buzzer activ – oferă semnal sonor, frecvența variază în funcție de distanța față de obstacol.

  1. Pin utilizat:
    1. D9

- Bluetooth (modul HC-05) – permite control manual al mașinii prin aplicație de pe telefon.

  1. Pini utilizați:
    1. RX – D0 (cu divizor de tensiune)
    2. TX – D1

- Breadboard + cabluri jumper – facilitarea conexiunilor între Arduino, senzori, buzzer, LED și Bluetooth.

- 4x baterii 3.7V 2500mAh Samsung 18650 (2 de rezervă) – oferă alimentare portabilă pentru motor și logică.

- Suport baterii, șuruburi, piulițe – fixare 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.1748562814.txt.gz · Last modified: 2025/05/30 02:53 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