This is an old revision of the document!


Masinuță teleghidată bluetooth

Introducere

Folosind o aplicație Android care comunică cu un modul Bluetooth (HC-05), se controlează o masinuță pusă in mișcare de 2 micromotoare acționând roțile mașinii.

Am pornit de la ideea creării unei jucării controlate de la distanță.

Consider că este un proiect util cand vine vorba de activități recreative.

Descriere generală

Funcționalitate

Telefonul prin intermediul aplicației transmite date catre modulul bluetooth, care sunt interpretate de Arduino. Acesta in funcție de semnalele primite de la telefon actioneaza pinii conectati la driverul de motoare (L298N) care aplica o tensiune asupra motorașelor miscandu-se în una din direcțiile față, spate, cu viraj stânga sau dreapta.

Schemă bloc

Hardware Design

Lista de piese

  • Arduino Uno Board
  • Driver de motoare L298N
  • Modul bluetooth HC-05
  • 4 x Motor cu reductor 1:48
  • 2 x Comutator KCD1-11-2P
  • 1 x Suport de Acumulatori 2×18650
  • 2 x Placă cu dimensiunile 24.5 cm x 14.6 cm
  • 2 x Placă pentru montare față/spate între plăcile mari

Schema electrica

Software Design

Mediu de dezvoltare

* Arduino IDE [1](https://downloads.arduino.cc/arduino-nightly-windows.zip) * Vim (external editor) [2] (https://github.com/vim/vim-win32-installer/releases) * Librarii folosite in EAGLE: “Bluetooth HC-05.lbr” [3]

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)
  • librării şi surse 3rd-party (e.g. Procyon AVRlib)
  • algoritmi şi structuri pe care plănuiţi să le implementaţi
  • (etapa 3) surse şi funcţii implementate

Pentru a trimite comenzi modulului Bluetooth HC-05, am folosit aplicatia de android “Bluetooth RC Controller”. Astfel, sunt setate urmatoarele comenzi (definite in fisierul utils.h):

'F' - fata 'B' - spate 'L' - stanga 'R' - dreapta 'V' - activare mod “anti-coliziuni” 'v' - dezactivare mod “anti-coliziuni” Comunicarea dintre HC-05 si placuta este facuta prin UART. In acest sens, am folosit implementarea pentru comunicate USART din laborator. In bucla while infinita din main, astept receptionarea datelor de la modulul HC-05 (aplicatia android trimite date la fiecare 50ms), controlarea motoarelor si a senzorilor ultrasonici fiind bazata pe aceste date.

Tot in fisierul utils.h este definit si macro-ul STOP_DISTANCE, ce reprezinta distanta in cm (dintre masinuta si cel mai apropiat obiect din fata) la care masinuta isi va opri motoarele pentru a evita o posibila coliziune.

Sunt folositi 2 senzori ultrasonici HC-SR04, fiind folositi pe rand, unul dupa altul (cand unul masoara distanta, celalalt asteapta, iar cand unul termina de masurat, celalalt preia task-ul de masurare). Motivul pentru utilizarea a 2 senzori HC-SR04 este unghiul mic de detectare a obiectelor (15 grade). Folosirea pe rand a celor 2 senzori este motivata de folosirea aceluiasi timer pe 16 biti.

Modul de lucru al senzorului HC-SR04 este urmatorul (hc_sr04.h si hc_sr04.c):

Setarea pinului conectat la trigger pe HIGH, asteptarea a 7-15us, setarea pinului conectat la trigger pe LOW. Resetarea timerului. Primirea unei intreruperi (echo pe INT0 sau INT1) si calcularea timpului scurs intre trigger si echo. Calcularea distantei, folosind timpul de la pasul 3 si viteza sunetului. Pasul 1 ii spune senzorului sa trimita un semnal ultrasunet (trigger), asteptand sa receptioneze acelasi semnal, dar reflectat de obiectele din directia trimiterii (echo). Timpul scurs de la trimitere pana la receptionare este calculat folosind TCNT1.

Motoarele masinutei sunt controlate prin driverul L298N, interfatat in l298n.h si l298n.c. Virajul masinutei este bazat pe conceptul de “differential steering”.

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

pm/prj2022/ncaroi/masinuta_bluetooth.1653127090.txt.gz · Last modified: 2022/05/21 12:58 by sebastian.pitur
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