Table of Contents

Cristi NICA (78496) - Atmega Car

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

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.

Descriere generală

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:

Hardware Design

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:

Software Design

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

Rezultate Obţinute

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.

cristi_nica_5.jpg

Concluzii

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.

Download

Arhiva proiectului poate fi gasita aici: atmegacar_cristi_nica_336ca.zip

Jurnal

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)

Bibliografie/Resurse

  1. Tutorial pentru masurarea distantei folosind HC-SR04 si Microcontroller AVR: distance-measurement-using-hc-sr04-avr
  2. Documentatie driver motoare: L298_H_Bridge.pdf
  3. Tutorial pentru utilizarea driverului pentru motoareuse-l298n-motor-driver