Autorul poate fi contactat la adresa: Login pentru adresa
Proiectul consta in realizarea unei masini de jucarie care va putea fi controlata prin intermediul oricarui dispozitiv ce ruleaza sistemul de operare Android. Comenzile vor fi date de pe telefon, folosind o aplicatie instalata pe acesta, urmand ca apoi sa fie receptionate si “interpretate” de modulul bluetooth de pe placuta.
Pe langa modulul bluetooth masina va avea atasat si un senzor de distanta. Acesta va produce oprirea motoarelor atunci cand masina se afla la mai putin de un metru de un obstacol.
Produsul final va fi o sursa de distractie si in acelasi timp va indeparta dependenta de telecomanda masinii, care de multe ori se strica sau nu este de gasit. In acelasi timp, fiind pasionat de domeniul mobile, mi se pare interesanta partea in care trebuie sa realizez conexiunea dintre aplicatia Android si modulul de pe placuta.
Folosind aplicatia Android voi trimite comenzi catre modulul bluetooth, ce vor fi transmise apoi la microcontroller. Acesta din urma, prin intermediul driverelor de motor, va indica masinii viteza si sensul de mers. Senzorul de distanta de pe placuta va opri cele doua motoare atunci cand detecteaza un obstacol in apropiere. Inainte de asta utilizatorul va fi atentionat printr-un semnal primit in aplicatia mobila, semnal ce va fi transmis tot de catre modulul bluetooth.
Schema bloc a proiectului:
Piesa | Cantitate | Link |
---|---|---|
Placa de baza si componente obligatorii | 1 | |
Driver pentru Motoare L298N | 1 | Driver Motoare - Optimus Digital |
Mini Kit de Robot cu doua motoare | 1 | Mini Kit Robot - Optimus Digital |
Senzor de distanta | 1 | Senzor Distana - Optimus Digital |
Modul Bluetooth | 1 | Modul Bluetooth - Optimus Digital |
Baterie 9V | 1 |
Schema electrica:
Mediul de dezvoltare al aplicatiei a fost AtmelStudio. Prin compilarea proiectelor, acesta genereaza fisiere .hex pe care le-am urcat pe placa folosind HIDBootFlash. Am folosit biblioteca pentru usart pusa la dispozitie in cadrul laboratorului. Aceasta faciliteaza comunicarea cu modulul bluetooth (trimiterea si receptionarea de caractere).
In prima faza a algoritmului realizez toate initializarile necesare: setez pinii de intrare si cei de iesire, initializez comunicarea prin usart si timerele folosite de catre senzorul de distanta. Mai departe, folosind busy-waiting printr-o bucla while infinita, verific distanta returnata de catre senzorul HC SR04 si astept primirea unui caracter de la modulul bluetooth. Daca masina se va afla prea aproape de un obstacol aceasta se va opri si ii va fi permis doar mersul inapoi sau rotirea stanga / dreapta.
Cea mai mare parte dintre problemele intampinate au fost generate de senzoroul ultrasonic HC-SR04. Majoritatea tutorialelor pentru folosirea acestuia erau pentru Arduino, dar dupa mai mult research am reusit sa gasesc o formula potrivita pentru conversia datelor si obtinerea distantei fata de obstacol.
Pentru aplicatia mobila, ce trimite semnalele pentru directia de mers a masinii, am folosit o aplicatie deja existenta in Play Store. Link catre aplicatia Android folosita: Ble Joystick
In urma realizarii proiectului am obtinut o masinuta ce poate fi controlata prin intermediul telefonului. Partea tehnica a acesteia functioneaza bine, insa din punct de vedere al aspectului pot fi aduse multe imbunatatiri.
Proiectul m-a facut sa inteleg mai bine materia si sa o apreciez. Daca la inceput eram sceptic cu privire la acesta, pe masura ce lucrurile au inceput sa mearga (sau rotile sa se invarta) am devenit tot mai interesat. A fost prima mea experienta cu realizarea partii hardware pentru un proiect si cu programarea embedded, fapt ce a facut ca lucrurile sa fie putin mai dificile, dar satisfactia finala mai mare.
Daca as putea alege din nou, as alege un alt sasiu pentru masina, care sa ii ofere acesteia un aspect placut si care sa ascunda toate firele. De asemenea, as folosi inca un senzor de distanta care sa fie amplasat in partea din spate, deoarece momentan masina evita doar obstacolele din fata ei.
Arhiva proiectului poate fi gasita aici: atmegacar_cristi_nica_336ca.zip
Data | Operatie |
18.04.2018 | Comanda piese de baza & primire PCB |
21.04.2018 | Realizare schema bloc |
22.04.2018 | Comanda sasiu masina, driver motoare si modul bluetooth |
25.04.2018 | Lipire piese pe placa de paza |
02.05.2018 | Lipire piese pe placa de baza & Pus bootloader |
05.05.2018 | Realizare schema electrica |
12.05.2018 | Realizare conexiune aplicatie mobila↔bluetooth si bluetooth↔placa de baza |
16.05.2018 | Controlul masinii folosind aplicatia mobila |
20.05.2018 | Introducere senzor de distanta si obtinere date de la acesta |
21.05.2018 | Realizare “comunicare” dintre senzorul de distanta si motoare |
22.05.2018 | Testare functionalitati, forma finala a proiectului (hardware si software) |