Masina cu Telecomanda Android

Autor: Trisca Ionut

Grupa: 332CB

Introducere


In acest proiect vreau sa creez o masina cu telecomanda ce poate fi controlata prin bluetooth de pe un telefon android.

Descriere Generala


Aplicatia android va prezenta o interfata prin care utilizatorul va putea controla o masina. Conexiunea intre telefon si masina se va realiza prin bluetooth. Masina va avea un Arduino care va controla un motor pentru rotile din spate care vor propulsa masina si vor controla directia de deplasare. De asemenea vor fi prezente doua LED-uri pe post de faruri care vor putea fi operate din aplicatie.

Schema Bloc

schema_bloc_masina_bt_and.jpg

Interfata aplicatiei Android

device_connection_interface.jpg

Mai sus este afisat ecranul de selectie a dispozitivului bluetooth al masinii. Conectarea se face prin apasarea pe numele dispozitivului. Dupa ce conectarea s-a efectuat aplicatia va trece la ecranul de control al masinii afisat mai jos.

remote_control_interface.jpg

In acest ecran se pot controla atat viteza cat si directia masinii cu cele doua slidere. De asemenea se pot porni sau opri farurile masinii si se poate reseta masina in caz ca a avut loc o eroare in transmisia datelor.

Hardware Design


Lista componente

Nume componenta Cantitate Link componenta
Placa Arduino UNO 1 Optimus Digital
Modul Bluetooth HC-05 1 Optimus Digital
Driver Dual Motor L289N 1 Optimus Digital
LED Albastru 2 Optimus Digital
Telefon Android 1
Rezistenta 1k 2
Baterie AA 1.5V 4
Motor DC 2 Optimus Digital
Roata 3 Optimus Digital
Sasiu Masina 1 Optimus Digital

Schema Electrica

schema_electrica_masina.jpg

Software Design


Android Studio

Interfata aplicatiei am realizat-o complet in Android Studio cu primitivele de baza oferite (slidere, butoane, liste etc.).

Aplicatia necesita asocierea telefonului Android cu dispozitivul bluetooth HC-05 in setarile telefonului. Dupa aceasta asociere la pornirea aplicatiei aceasta va cere pornirea bluetooth daca acesta este oprit si apoi va afisa o lista de dispozitive asociate din care utilizatorul va selecta HC-05.

Prin apasarea numelui dispozitivului in lista afisata, va incepe conectarea catre dispozitiv, iar daca aceasta se realizeaza cu succes aplicatia va afisa interfata de control a masinii.

Interfata de control dispune de doua slidere (steer si power) si doua butoane (headlights si reset).

Ambele slidere functioneaza in acelasi mod. La fiecare modificare a pozitiei sliderului, daca a trecut un timp predefinit se va trimite noua pozitie catre masina, unde aceasta va procesa comanda primita si o va executa.

Butonul de reset trimite catre masina o comanda formata din 8 litere “R” iar masina cand primeste aceasta comanda isi va reseta bufferul de primire date. Am implementat aceasta functionalitate in cazul in care apar erori la trimiterea de comenzi.

Butonul pentru headlights trimite catre o masina o comanda de a-si porni farurile sau de a le opri in functie de starea anterioara a acestora.

Arduino IDE

Pe partea de Arduino, placa va incepe prin initializarea pinilor pentru controlul motoarelor ca OUTPUT, apoi aceasta seteaza motoarele pentru a se misca inainte. Initializeaza comunicarea seriala prin USART cu modulul bluetooth HC-05 folosind biblioteca SoftwareSerial pe pinii 10 si 11. Am ales sa folosesc aceasta biblioteca pentru a putea comunica si prin USB si prin Bluetooth in acelasi timp. In final seteaza pinii farurilor ca OUTPUT.

Fiecare comanda are lungimea de 4 caractere:

  • POWER: PAAA - cu AAA fiind un numar de la 0 la 100, prefixat cu 0 daca este nevoie
  • STEER: SAAA - cu AAA fiind un numar de la 0 la 100, prefixat cu 0 daca este nevoie
  • HEADLIGHTS ON: NHDL
  • HEADLIGHTS OFF: FHDL
  • RESET: RRRRRRRR - comanda de reset este singura exceptie, aceasta avand 8 caractere pentru a fi sigur ca este primita

Arduino va astepta date de la modulul bluetooth si cand sunt primiti cel putin 4 bytes ii va citi intr-un buffer si in functie de comanda va reactiona ca atare. Pentru a controla atat viteza cat si directia de deplasare a masinii le voi stoca pe ambele in doua variabile (power, steer) si cu ajutorul lor voi calcula viteza fiecarui motor. Cand steer este in directia motorului stang, ii voi scadea viteza acestuia pentru a initia un viraj la stanga, asemenea pentru directia dreapta.

Directia inainte/inapoi este data de valoarea lui power la primire, daca este sub 50 masina se va misca inapoi, iar daca este peste 50 se va misca inainte. Directia stanga/dreapta este data de valoarea lui steer, sub 50 este stanga, iar peste 50 este dreapta.

Rezultate Obtinute


Imagini Masina

bluetooth_car_pic4.jpg

Video Masina

Concluzii


  • Am reusit sa realizez ce mi-am propus, masina functioneaza exact asa cum ma asteptam.
  • Una dintre problemele intalnite a fost puterea bateriilor, cand nu sunt la capacitate maxima, pornirea la viteza maxima de pe loc duce la resetarea arduinoului din cauza lipsei de putere.

Download

Jurnal


24.04.2020

  • Realizarea schemei bloc
  • Redactare documentatie
  • Alegerea temei proiectului

20.05.2020

  • Cercetare comunicare bluetooth Android
  • Căutare piese necesare

21.05.2020

  • Comandare piese
  • Incepere dezvoltare aplicatie Android

26.05.2020

  • Livrare piese
  • Testare piese

27.05.2020

  • Scriere cod Arduino
  • Testare comunicare aplicatie - modul bluetooth - arduino

28.05.2020

  • Asamblare piese masina
  • Testare functionalitati
  • Ajustari design hardware in functie de capabilitatile pieselor

03.06.2020

  • Finalizare documentatie
  • Mici ajustari ale codului

Bibliografie/Resurse

pm/prj2021/avaduva/masina_bt_android.txt · Last modified: 2021/06/03 22:56 by ionut.trisca
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