Table of Contents

Dan-Iulian MUNTEAN (66928) - iMobile

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

La origine proiectul avea ca scop realizarea unei masini controlate prin Bluetooth cu ajutorul unui dispozitiv cu Android. Insa totul avea sa se schimbe in seara dinaintea colocviului la PM. In timp ce citeam Laboratorul 5 am realizat ca ar constitui o provocare mult mai mare daca as putea controla masinuta cu ajutorul miscarilor mainii, folosind evident un accelerometru. Discutand despre aceasta idee impreuna cu un coleg din semigrupa cealalta, am decis ca noul meu proiect avea sa constituie tot o masina controlata prin Bluetooth, insa telecomanda va fi reprezentata sub forma unei manusi care va avea montat un accelerometru ce va inregistra diverse miscari ale mainii.

Descriere generală

Comunicarea intre telecomanda si masina se va realiza prin Bluetooth cu ajutorul a doua module HC-05, unul Slave, unul Master. Telecomanda va prelua datele de la accelerometru si in functie de inclinatie va transmite masinii comenzi de deplasare fata, spate, stanga, dreapta, precum si o crestere a vitezei cu cat unghiul de inclinatie este mai mare.

Schema bloc pentru masina:

Schema bloc pentru telecomanda:

Hardware Design

Lista de componente:

Nume componenta Cantitate Distribuitor
Placa de baza PM 2 Echipa PM
Modul Bluetooth HC-05 2 Optimus Digital
Modul accelerometru ADXL345 1 Optimus Digital
Modul cu driver L298N 1 Optimus Digital
Kit robot cu 2 motoare 1 Optimus Digital
Fire mama-mama 20 Optimus Digital
Fire mama-tata 30 Optimus Digital
Modul cu driver L9110S 2 Optimus Digital
Baterii 9V 3 Optimus Digital
Banda izoliera 1 Optimus Digital
Masina de jucarie 1 Auchan
Breadboard 1 Optimus Digital

Schema electrica masina:

Schema telecomanda:

Software Design

Pentru masina am folosit:

Mediu de dezvoltare: Sublime Text

Biblioteci: avr/io.h, util/delay.h

Pentru comunicatia prin interfata USART si pentru PWM am folosit codul prezent la laboratoare.

Pentru aplicatia android:

Mediu de dezvoltare: Android Studio

Rezultate Obţinute

Am niste poze sumare a cum arata masina desfacuta. Voi adauga altele dupa ce o voi monta.

Un link catre YouTube unde demonstrez mai bine functionalitatea proiectului: https://www.youtube.com/watch?v=nHW_tNmrZVg

Concluzii

A fost de departe cel mai interesant proiect la care am lucrat in cadrul acestei facultati. Nu am reusit sa implementez tot exact cum mi-am prospus(cum am zis si in jurnal, accelerometrul a fost defect si nu am avut de unde sa fac rost de altul), insa consider ca am atins scopul proiectului. Am invatat enorm de multe, atat pe partea hardware cat si despre Android si am inceput sa nu mai consider electronicile din anul 2 atat de neimportante pe cat credeam. In viitor sigur voi mai lucra cu placutele de PM si cu Android. Urmatorul pas este sa imi achizitionez un Raspberry Pi si impreuna cu cele 2 placute la PM, Arduino Uno si multi senzori sa fac ceva mult mai complex si mai smecher. Singurul meu regret e ca probabil nu voi mai intalni un proiect asa de interesant ca acesta in timpul ce il mai am de petrecut in facultate.Asta e, va trebui sa vin eu cu idei…

Download

Acesta este codul pentru placuta:

munteandaniulian335cb_codplacuta.zip

Avem si aplicatia android insa mai am un pic de modificat la ea:

munteandaniulian335cb_aplicatieandroid.zip

Jurnal

24.04.2017 - Prima placa de baza este completa, am fost la laborator si mi-am incarcat bootloader-ul pe ea

08.05.2017 - A doua placa de baza este completa, am incarcat si pe aceasta bootloader-ul. Am cumparat masina de la Auchan si m-am jucat cu ea, demontand circuitele si conectand motoarele la driver L298S. Am constatat ca nu se disipa suficienta putere pe fiecare motor atunci cand sunt utilizate simultan ambele.

10.05.2017 - In urma constatarilor efectuate am decis sa folosesc 2 drivere L9110S, unul pentru fiecare motor alimentat de la o baterie de 9V, iar placuta va fi alimentata de la cei 4 acumulatori de 1.2V care alimentau masina initial.Astfel se va da suficienta putere fiecarui motor.

17.05.2017 - Am inceput lucrul la partea de masina. Am conectat modulul HC-05 la placuta si am reusit sa comunic cu acesta folosind TeraTerm de pe laptop. Am conectat si motorul care asigura deplasarea masinii in fata sau in spate si am scris software-ul necesar pentru a putea controla masina prin bluetooth cu ajutorul calculatorului. Ma simt foarte mandru :)

19.05.2017 - Am decis sa continui munca la proiect, axandu-ma pe construirea telecomenzii. Nu am vrut sa trec a doua placuta la 3.3V asa ca am folosit divizoare rezistive pentru a conecta liniile MOSI, SCL, CS intre accelerometru si placuta. M-am chinuit toata seara incercand sa citesc ceva de la accelerometru fara succes insa.

20.05.2017 - Inarmat cu forte proaspete, am decis sa schimb abordarea. Am trecut placuta de PM la 3.3V si am conectat direct modulul de bluetooth si accelerometrul. Din nefericire si aceasta incercare de a stabili o comunicatie cu acesta nu a avut succes. Am fost nevoit sa scot ultimul AS din maneca, am conectat accelerometrul la Arduino folosind o biblioteca pusa la dispozitie de cei de la Sparkfun care oferea posibilitatea realizarii conexiunii atat prin SPI cat si prin I2C. Insa nici acum nu am reusit sa comunic cu accelerometrul ====⇒ Concluzia la care am ajuns a fost ca acesta fie s-a ars, fie era defect de la inceput. DISPERARE……….. MARE DISPERARE.

21.05.2017 - Am pierdut timp bun din zi cautand solutii la problema. Din pacate la optimus digital nu se mai gasea modelul meu de accelrometru si nici alta piesa similara la un pret rezonabil. La robofun acelasi ADXL345 era 100 de lei in conditiile in care eu am dat 14 lei pe el…. Dupa mult timp de gandire am decis sa pivotez si sa controlez masina din accelerometrul telefonului.O decizie destul de indrazneata dat fiind faptul ca nu mai lucrasem niciodata cu Android. Am reusit pana seara cu ajutorul unui tutorial de pe Internet si citind din documentatia oficiala sa scriu o aplicatie care putea controla sumar un motor al masinii. Parca nu mai e totul asa negru … :)

22.05.2017 - Am voribit cu asistentul la laborator si a fost ok cu decizia mea de a pivota la o aplicatie Android. Ajuns acasa, m-am apucat frenetic de a scrie cod pentru Android, aplicatia mea prinzand contur cu fiecare ora ce trecea.

23.05.2017 - Am continuat munca la aplicatie, aceasta permitand alegerea modului de control al masinii, fie automat prin accelerometru, fie manual cu ajutorul a a doua seekbar-uri. Dupa pranz am inceput sa scriu codul necesar pentru placuta. Am avut o REVELATIE care mi-a usurat mult protocolul prin care se transmit comenzi masinii: Am folosit un singur byte pentru a transmite comenzi. Cei mai semnificativi 4 biti codifica gradul de deplasare stanga/dreapta, iar ceilalti 4 biti codifica viteza cu care se deplaseaza masina in fata sau in spate. In total am 4 viteze fata/ 4 viteze spate/ 4 viteze stanga/ 4 viteze dreapta.

24.05.2017 - Am terminat in proportie de 90% codul atat pentru Android cat si pentru placuta si am conectat toate componentele masinii, efectuand si un test, care s-a dovedit un SUCCES adevarat. Tot ce mai am de facut este sa mai lucrez un pic la interfata grafica pe android, sa scriu niste comentarii in cod si sa asamblez masina complet. Pana la PM Fair ar trebui sa fiu gata :)

Bibliografie/Resurse

Bibliografie/Resurse

Resurse Software:

1.Laboratoarele de PM: http://cs.curs.pub.ro/wiki/pm

2.Datasheet ATMEGA324: http://cs.curs.pub.ro/wiki/pm/_media/doc8272.pdf

3.WinAVR: https://sourceforge.net/projects/winavr/files/

4. Sublime Text: https://www.sublimetext.com/

5. Android Studio: https://developer.android.com/studio/index.html

6. Documentatie oficiala Android: https://developer.android.com/guide/index.html

7. Tutorial Android conexiune bluetooth cu arduino: http://www.instructables.com/id/Android-Bluetooth-Control-LED-Part-2/

Resurse Hardware:

1.Laboratoarele de PM: http://cs.curs.pub.ro/wiki/pm

2.Datasheet ATMEGA324: http://cs.curs.pub.ro/wiki/pm/_media/doc8272.pdf

3.Datasheet bluetooth HC-05: http://www.electronicaestudio.com/docs/istd016A.pdf