Dacia Golan

Date de contact: Becerescu Cristian-Costin

Introducere

Proiectul consta in dezvoltarea unei masinute teleghidate, controlabila prin Bluetooth dintr-o aplicatie de pe dispozitive cu Android.

Printre scopurile proiectului se numara consolidarea cunostintelor dobandite de-a lungul semestrului la materia PM si punerea in aplicare a anumitor notiuni teoretice invatate la materiile de electronica. Consider ca este o oportunitate perfecta pentru realizarea unui proiect ce implica atat dezvoltare software, cat si hardware, fiind sigur ca voi avea multe de invatat pe parcurs.

Pe langa divertisment, proiectul are in vedere detectarea la distanta a unor factori de mediu prin atasarea de senzori, utilitatea constand, de exemplu, in folosirea masinutei pentru a verifica daca intr-o anumita zona sunt emise substante nocive (ex. radioactive, fum, gaze), fara a implica interventia umana.

Descriere generală

Din aplicatia de Android se trimit comenzi catre microcontroller-ul ATmega324, care, in urma procesarii, controleaza motoarele masinutei. Comunicarea se face prin Bluetooth, dar modul in care sunt preluate comenzile de miscare de la utilizator nu este inca bine definit (prin atingerea unor sageti, prin comanda vocala, prin rotirea smartphone-ului etc.).

Comunicarea prin Bluetooth este realizata prin intermediul modulului HC-05, iar motoarele sunt comandate de catre driverul L298N.

De asemenea, pentru a putea fi utilizata in mai multe moduri in afara de divertisment, voi adauga si senzori masinutei, precum senzor ultrasonic sau de distanta (pentru evitarea coliziunilor) sau senzori ce masoara factori de mediu, cu afisarea masuratorilor in aplicatie, putand deveni astfel o statie mobila de colectare a datelor.

Schema bloc

Hardware Design

Lista componentelor necesare:

  • Placuta PM
  • Sasiu masinuta (4WD, roti, motoare, soclu baterii)
  • Modul Bluetooth HC-05
  • Driver motoare L298N
  • Senzori: 2x HC-SR04
  • Senzori optionali: DHT22/AM2302B, MQ-2
  • Bateri 9V
  • Baterie externa (optional)
  • Fire colorate mama-mama, mama-tata, tata-tata
  • Breadboard

Schema electrica

Software Design

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

  1. Setarea pinului conectat la trigger pe HIGH, asteptarea a 7-15us, setarea pinului conectat la trigger pe LOW.
  2. Resetarea timerului.
  3. Primirea unei intreruperi (echo pe INT0 sau INT1) si calcularea timpului scurs intre trigger si echo.
  4. 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

Masina este functionala.
Singurele mentiuni ar fi ca am decis sa exclud senzorii de temperatura si de gaz, deoarece in timpul testarii au fost mici probleme cu modulul HC-05 in timp ce motoarele erau in functiune (probabil de la consumul total).

Concluzii

A fost un proiect foarte interesant, in urma caruia mi-am consolidat si am invatat multe concepte de hardware.
Am avut parte de bug-uri atat de software, cat si de hardware, rezolvarea lor ajutandu-ma sa inteleg si mai bine modul in care functioneaza si se imbina componentele unui proiect de genul.
In acest moment, pot spune ca scopul proiectului a fost atins, prin punerea in aplicare a conceptelor invatate la laboratorul de PM si obtinerea unui dispozitiv functional.

Download

Jurnal

20 aprilie - Adaugare sectiuni: Introducere, Descriere Generala (+ schema bloc), Hardware Design (lista componentelor necesare)
23 aprilie - Finalizare placuta PM (lipit componente, incarcat bootloader)
3 mai - Ridicare comanda cu toate piesele necesare
4 mai - Finalizare schema electrica in EAGLE
5 mai - Asamblare masinuta (sasiu, roti, motoare) + testare functionare motoare direct de la sursa
7 mai - Testare functionare motoare prin driverul L298N + alimentare placuta si driver L298N de la baterie
8 mai - Integrarea celor 2 senzori HC-SR04 + masinuta se misca inainte incontinuu si se opreste la 30cm de orice obstacol
10 mai - Integrarea modulului de Bluetooth HC-05 + controlare masinuta (fata, spate, rotire stanga si dreapta) de pe telefon
23 mai - Update pagina de wiki (Software Design, Rezultate Obtinute, Concluzii)

Bibliografie/Resurse

pm/prj2019/amocanu/cbecerescu-bluetooth-car.txt · Last modified: 2021/04/14 17:07 (external edit)
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