Autor: Trisca Ionut
Grupa: 332CB
In acest proiect vreau sa creez o masina cu telecomanda ce poate fi controlata prin bluetooth de pe un telefon android.
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.
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.
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.
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 |
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.
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:
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.
24.04.2020
20.05.2020
21.05.2020
26.05.2020
27.05.2020
28.05.2020
03.06.2020