Nicolae-Ovidiu DĂNCILĂ (78394) - Bluetooth RC Car

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Proiectul consta in controlarea unei masinute de jucarie prin bluetooth folosind o aplicatie instalata pe un smartphone Android. Aceasta poate fi miscata in directia dorita prin apasarea unor butoane. De asemenea, va exista si un buzzer folosind pentru claxon si LED-uri folosite pentru faruri.

Ideea mi s-a parut foarte interesanta de prima data cand am auzit-o si mi se pare foarte util si practic (in comparatie cu masinutele controlate cu telecomanda) sa poti controla masinuta de pe telefon. Astfel, nu mai este necesara folosirea unei telecomenzi si nici baterii suplimentare pentru aceasta.

Personal, consider ca este un proiect care reprezinta atat o oportunitate de a invata foarte multe lucruri noi cat si o sursa de amuzament.

Descriere generală

Prin intermediu aplicatiei instalata pe un device care are BlueTooth si sistem de operare Android, se trimit comenzi catre modulul BlueTooth, iar acesta trimite mai departe catre microcontroller. Cu ajutorul driver-ului pentru motoare, acesta poate sa miste motoarele in functie de comanda primita sau sa aprind/ stinga farurile sau luminile de faza lunga sau sa declanseze buzzer-ul pentru claxon.

Schema bloc:

Hardware Design

Lista componente folosite:

Denumire Cantitate
PCB 1
Microcontroller ATmega324 1
Masinuta sasiu 2 motoare (angrenare si directie) 1
Driver motoare L298B 1
Soclu baterie 9V 1
Soclu pentru 6 baterii AA 1
Baterie 1.5V AA LR6 6
Modul Bluetooth HC-05 1
LED albb 4
LED rosu 2
Rezistența 470 6
Rezistenta 1K 1
Rezistenta 2K 1
Fire mama-mama si mama-tata 30

Schema electrica initiala:

Schema electrica finala:

Fata de schema initiala:

  • Am conectat buzzer-ul la portul PD5 pentru a folosi registrul OCR1A pentru comandarea lui prin PWM.
  • Am adaugat 2 LED-uri pentru efectul de “faza lunga” al farurilor din fata.
  • Am modificat conexiunea cu modulul Bluetooth HC-05 care era gresita, adaugand un divizor de tensiune de la 5V la 3.3V folosind o rezistenta de 1K si una de 2K intre portul PD1(TXD) al placii si portul RX al modulului deoarece, in specificatiile acestuia, tensiunea recomandata pentru realizarea comunicatiei este de 3.3V.

Schema electrica in format .sch: schema_electrica_dancila_ovidiu_331cb.sch

Software Design

  • Mediu de dezvoltare folosit: Android Studio
  • Compilator pentru programul destinat placutei: avr-gcc
  • Editor de text folosit: Notepad++

Aplicatie android

Screenshot al aplicatiei:

Am creat listeneri care verifica actiuni de apasare si de realease a butoanelor:

  • Pentru butoanele de lumini si faza lunga am setat doar listener pentru apasare deoarece la apasarea butonului se schimba starea luminilor (aprinse/ stinse)
  • Butonul de Conectare efectueaza conectarea la modulul Bluetooth HC-05. Daca Bluetooth-ul de pe device-ul de pe care este folosita aplicatia nu este conectat, apare o fereastra de interogare a activarii Bluetooth-ului dupa care se incepe procesul de conectare.
  • Restul butoanelor au fost gandite pentru a avea o actiune atata timp cand butonul este pornit. Astfel, la apasarea butonului se trimite o comanda de incepere a actiunii, iar la release se trimite o comanda de oprire a actiunii (descrisa in comentariile din cod).

Obtinerea MAC-ului pentru modulul HC-05 a fost realizata folosind aplicatia de android “Bluetooth Finder”, iar port-ul UUID din specificatile modulului.

Apk-ul aplicatiei: apk_android_dancilaovidiu.zip

Programul incarcat pe microcontroler

  • Am folosit functia usart_init() si functia usart_data_receive pentru receptionarea mesajelor de la modulul Bluetooth. Functia de initializare seteaza baud rate-ul la 9600 (am pastrat valoarea folosita in laborator deoarece aceasta face parte din baud rate-urile suportate de modul), porneste transmisia activand biti TXEN0 si RXEN0 si seteaza formatul frame-ului la 8 biti de date, 1 bit de stop si fara paritate conform specificatiilor din Datasheet-ul modulului Bluetooth HC-05.
  • Am creat functii de initializare pentru: lumini, lumini faza lunga, buzzer si motoare in care setez bitii specifici porturilor unde sunt conectate componentele pe 1 pentru a stabili faptul ca sunt de Output.
  • Am creat functii de schimbare a starilor (descrise mult mai bine in comentarii) care se apeleaza in bucla while(1) din main in functie de comanda primita.
  • Pentru testare (cand modulul bluetooth este deconectat de la placa) am realizat si schimbarea starii LED-ului de pe placa (PD7) o data la 500 de milisecunde.
  • Pentru controlul buzzer-ului am folosit PWM. Astfel, l-am conectat la portul PD5 si am folosit setarile preluate din laborator. Am initializat registrul OCR1A cu 255 deoarece, initial, se doreste ca buzzer-ul sa nu scoata sunet. In momentul activarii buzzer-ului se schimba valoarea OCR1A pe 255/2 pentru a sta jumatate din timp pe 1 si jumatate din timp pe 0.

Rezultate Obţinute

Masina este functionala doar ca bateria nu ofera suficient curent motoarelor astfel incat sa aiba forta sa miste foarte repede toata greutatea masinii. O idee mai buna ar fi fost achizitionarea unui soclu de 6 baterii R6 (AA) pentru alimentarea driver-ului de motoare, dar am realizat acest lucru prea tarziu ca sa mai pot face acest lucru.

Poze cu proiectul:

Update: Am achizitionat un soclu de 6 baterii R6 si 6 baterii LR6. Cu aceste baterii, motoarele au suficienta putere pentru a misca masina.

Video de prezentare: ubGmCWjX4oU

Concluzii

Mi s-a parut un proiect foarte interesant din care am invatat foarte multe lucruri noi. Am fost foarte entuzismat cand am vazut ca functioneaza cum imi doresc. Din pacate, a ramas problema cu miscatul destul de incet datorita curentului mic furnizat de bateria de 9V si a greutatii destul de mare a masinutei. Pe viitor, imi doresc achizitionarea unui soclu de 6 baterii AA si alimentarea driver-ului de motoare la acesta pentru o putere mai mare (din pacate nu am mai avut timp sa fac acest lucru inainte de prezentarea de la PM Fair).

Download

Jurnal

  • 23.04.2018 - Crearea paginii de wiki si descrierea proiectului si a obiectivelor.
  • 27.04.2018 - Finalizarea lipiturilor pe placa de baza.
  • 30.04.2018 - Demontarea si scoaterea placutei initiale de la o masina teleghidata prin telecomanda.
  • 01.05.2018 - Gaurirea farurilor masinii cu bormasina pentru a face loc led-urilor pentru faruri.
  • 04.05.2018 - Incarcarea bootloader-ului si a primului program minimal pe placa de baza.
  • 06.05.2018 - Crearea schemei electrice a proiectului si actualizarea paginii de wiki a proiectului.
  • 11.05.2018 - Lipirea rezistentelor pentru led-uri si a header-elor de pini.
  • 17.05.2018 - Lipirea tuturor componentelor pe placa de test si legarea cu fire mama-mama si mama-tata a componentelor. Testarea lipiturilor.
  • 18.05.2018 - Crearea layout-ului aplicatiei android.
  • 20.05.2018 - Conectarea motoarelor de la masinuta la driver-ul de motoare si finalizarea aplicatiei Android.
  • 21.05.2018 - Scrierea codului pentru placuta si incarcarea acestuia. Testarea functionalitatilor. Observarea problemei ca motoarele nu primesc suficient curent pentru a fi capabili sa miste toata greutatea masinii
  • 22.05.2018 - Incercarea metodelor de rezolvare a problemei puterii prin achizitionarea unei baterii de 12V (inutil) si rezolvarea (oarecum) prin achizitionarea unei baterii de 9V mai puternice (GP Ultra).
  • 23.05.2018 - Actualizarea paginii de wiki a proiectului si testarea acestuia
  • 24.05.2018 - Teste finale ale proiectului si pregatirea lui pentru prezentarea + Achizitionarea altei baterii (GP Ultra) pentru a fi sigur de functionarea optima in momentul DEMO-ului de la PM Fair.

Bibliografie/Resurse

  1. Inspiratie aplicatie Android: Android-Bluetooth-Control-LED-Part-2
  2. DataSheet Modul Bluetooth HC-05: istd016A.pdf
  3. DataSheet Driver motoare L298N: L298N.html
  4. Inspiratie de la proiectele din anii precedenti
  • Documentația în format PDF
pm/prj2018/adraghici/ovidiudancila.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0