Autorul poate fi contactat la adresa: Login pentru adresa
Proiectul constă în realizarea unei telecomenzi ce va transmite date prin Bluetooth. În funcție de mișcare/înclinație se vor transmite anumite comenzi prin Bluetooth, aceste comenzi putând fi mai departe receptate de către o mașinuță. De asemenea, la apăsarea unor butoane se pot transmite comenzi ce determină aprinderea farurilor/declanșare sunet claxon. Scopul final al proiectului este comunicarea cu o mașinuță care primește comenzi prin Bluetooth.
Am ales acest proiect pentru ca mi se pare interesant sa poți controla o mașinuță în funcție de mișcarea/înclinația telecomenzii. Voi stabili un protocol de comunicație împreună cu un coleg care va implementa o mașinuță ce primește comenzi prin Bluetooth.
Microcontrollerul va comunica cu modulul de Bluetooth prin interfața USART. Se vor primi date de la giroscop/accelerometru/butoane și în funcție de acestea se vor transmite mai departe comenzi: mers în fata/spate/stânga/dreapta/declanșare claxon/aprindere faruri. Pentru început, se vor transmite date utilizând informațiile de la accelerometru. Ca și componenta hardware voi folosi un giroscop cu accelerometru și în funcție de timpul rămas voi încerca sa realizez o prelucrare a datelor de la giroscop și transmiterea unor comenzi mașinuței care sa ii determine o anumita mișcare (de exemplu schimbarea direcției de mers).
În funcție de înclinație față/spate, stânga/dreapta se vor transmite comenzi care să determine mișcarea mașinuței în mod corespunzător. De asemenea se vor aprinde ledurile corespunzătoare pentru a indica direcția transmisă. În plus, la apăsarea butonului se va declanșa claxonul (sunetul se va menține cât timp butonul este apăsat și este oprit când butonul este eliberat). Aprinderea/stingerea farurilor se va face în funcție de rotația telecomenzii pe axa Ox.
Lista de piese | Preț (aproximativ) |
---|---|
Placa de baza cu componentele aferente | 32 lei |
Giroscop cu acelerometru (Pololu LSM6DS33) | 68 lei |
Modul Bluetooth (HC-05) | 27 lei |
4 leduri | 2 lei |
Buton | 1 leu |
Fire mama-mama | 10 lei |
Regulator tensiune 5V - 3.3V (LE33) | 2 lei |
O cutie din plastic | 6 lei |
Rezistențe pentru leduri | extra în pachetul de bază |
Total | 148 lei |
Majoritatea componentelor le-am cumpărat de la Optimus Digital
[Versiunea Finală]
Am făcut câteva modificări la schema electrică. Am legat câteva fire diferit de cum mi-am propus inițial
[Versiunea1] telecomanda.sch
[Versiunea2] telecomanda_schema_electricav2.sch
Pentru dezvoltarea software am utilizat Programmer's Notepad și WinAVR.
Pentru a implementa funcțiile specifice pentru fiecare dintre USART, SPI și LSM6 exista fișiere separate. Mai exista un fișier ce conține implementarea “main”.
În funcțiile de datele primite de la accelerometru se determina orientarea.
Pentru a intercepta claxonul am activat întreruperea corespunzătoare butonului. În rutina de tratare a întreruperii, se determină starea butonului. Dacă a fost apăsat și acum este liber se trimite comandă corespunzătoare opririi. Altfel, se trimite semnal de declanșare a claxonului. (Am adăugat și un delay deoarece la o singură apăsare rutina de tratare a întreruperii era apelata de 4-5 ori, deși ar fi trebuit o singură dată).
M-a ajutat modulul de Bluetooth. Am folosit o aplicație Android pe telefon pentru a mă conecta la modulul de Bluetooth și a primi date. (ce trimiteam prin USART de pe placă primeam pe telefon ). Astfel, am stabilit valorile de referință pentru accelerometru, precum și un prag care dacă este depășit se iau în considerare datele primite și pe baza acestora se iau decizii de transmitere a comenzilor corespunzătoare. Pentru a elimina “șocurile” care apar inevitabil deoarece dispozitivul este ținut în mână și pentru a nu transmite comenzi incorecte realizez 2000 de citiri de la accelerometru, la interval de 5 us și după analiza valorilor obținute se ia decizia. Similar, datele de la giroscop le citesc la o secundă (am folosit un timer), deoarece la o singură rotație pe orizontală giroscopul va furniza de mai multe ori valori care depășesc pragul stabilit.
După cum am precizat inițial, protocolul de comunicație (modul de codificare a comenzilor) l-am stabilit împreună cu un coleg care și-a implementat proiectul astfel încât să primească comenzi de la Bluetooth (tot prin USART) și să le proceseze pentru a i le trimite mai departe mașinuței.
Am obținut o “telecomandă” <fc #FF00FF>roz</fc> care controlează o mașinuță și indică direcția/sensul de deplasare prin aprinderea ledurilor corespunzătoare.
Pentru mine a fost primul proiect care a presupus interacțiune atât cu partea hardware cat și cu cea software. Mi-a fost greu la început sa înțeleg protocolul de comunicație prin SPI cu accelerometrul, să îl configurez și să îi citesc datele, dar cu ajutorul resurselor disponibile (datasheet-ul) m-am descurcat. Faptul că am început să lucrez din timp la proiect, urmărind milestone-urile, m-a ajutat mult.
Mă bucur că am reușit sa realizez ce mi-am propus și sunt foarte mulțumită de rezultatele obținute.
Arhiva ce conține codul sursă este disponibilă aici