Mașinuță de poliție teleghidată

Autorul poate fi contactat la adresa: dan.radulescu@stud.acs.upb.ro

Introducere

Tema acestui proiect constă în implementarea unei mașinuțe ce poate fi controlată cu ajutorul unui dispozitiv Android, folosind Bluetooth. De asemenea, mașina va dispune și de un set de LED-uri și de un buzzer pentru a simula un girofar și respectiv o sirenă.

Proiectul are ca scop consolidarea cunoștințelor acumulate în cadrul laboratoarelor de PM, acesta fiind primul meu proiect în care este implicată și partea hardware. Rezultatul ar trebui să fie o jucărie care să îi distreze pe utilizatori.

Descriere Generală

În cadrul proiectului voi implementa și o aplicație Android ce îi va oferi posibilitatea unui smartphone de a se conecta și a trimite comenzi la placă. Va exista câte un buton pentru fiecare funcționalitate, dar și un mecanism pentru a putea seta o putere variabilă pentru motoare.

Smartphone-ul Android va trimite comenzi către modulul HC-05, acesta comunicând cu microcontroller-ul ATmega 324 pe interfața de USART. Apoi, microcontroller-ul va putea activa Buzzer-ul, va putea porni LED-urile sau va trimite semnal PWM către driver-ul L298N, pentru a stabili turația motoarelor de pe fiecare punte. De la microcontroller se vor trimite și semnale pentru controlul direcției fiecărei punți, pe pinii IN1, IN2, IN3, IN4 ai driver-ului L298N (astfel va fi controlat și mecanismul de virare).

Hardware Design

Listă de piese:

Nume piesă Cod piesă
PCB PM 2019
Modul Bluetooth HC-05
Driver de motoare L298N
Kit 4WD Chassis Car -
Modul cu Buzzer activ -
LED-uri 3mm cu Lentile difuze
Sursă de alimentare YwRobot MB-V2
Breadboard HQ 400
Conectori, fire, rezistențe -

Schema electrică a proiectului:

Atât driver-ul de motoare cât și placa sunt alimentate cu ajutorul a doua baterii de 9V montate în paralel. Pentru placă, am folosit o sursă de alimentare (regulator DC-DC-Down) deoarece trebuie alimentată la 5V. Regulatorul a fost plasat pe un breadboard. Prin cablul USB de la regulator la placă, se realizeaza o masă comună, incluzând minusul de pe breadboard.

În cazul modulului HC-05 am folosit și un divizor de tensiune de la 5V la 3V3, deoarece pinul RX poate primi maxim 3V3.

Software Design

Ca medii de dezvoltare am folosit:

  • Atom Editor - C ATmega324
  • Android Studio - Aplicatia Android

Microcontroller

Am utilizat biblioteca USART pusa la dispozitie in laboratorul 1. In usart.c, in functia de initializare a interfetei 0 de pe uC, am setat baud rate-ul la 9600, am pornit si transmisie si receptie si am setat datele de control conform datasheet-ului HC-05: 8 biti de date, 1 bit de stop si fara biti de paritate.

Intr-o bucla infinita, uC asteapta sa primeasca date (caractere), si in functie de caracterul primit va modifica valorile pinilor IN1, 2, 3, 4 sau va modifica pragurile OCR0A, B pentru a obtine viteze diferite. Pentru modificarea vitezei, dupa primirea unui caracter, se asteapta primirea a trei cifre folosite la constructia noii valori a pragurilor.

Pentru LED-uri si buzzer, am folosit intreruperi. Astfel, la anumite intervale date de timerul 1, se va face switch intre LED-urile stinse si pornite sau se va modifica prescalerul timerului 2 pentru a trimite un semnal PWM cu frecventa diferita buzzerului (care simuleaza o sirena).

Aplicatia Android

Aplicatia pune la dispozitie 7 butoane si un seek bar pentru a controla viteza. Prin apasarea butoanelor se vor trimite date (caractere) catre modulul Bluetooth, apoi prin USART catre microcontroller, acesta urmand sa efectueze o anumita actiune.

Cu ajutorul acestei aplicatii se poate:

 
 1) Stabili o noua conexiune cu masina
 2) Deplasa masina
 3) Seta o viteza variabila
 4) Se pot porni LED-urile sau buzzerul

Pentru seek bar, am calculat o functie prin care sa mapez procentul din seek bar intr-o valoare pentru pragurile OCR0A si B. Apoi trimit un String zNr3cifreCoresp.

Rezultate Obținute

Imagini proiect finalizat:

Video: Demo BT Police Car

Concluzii

Am reușit să implementez tot ce mi-am propus la începutul acestui proiect. A fost o experiență interesantă și benefică din punct de vedere didactic având în vedere că am trecut prin marea majoritate a conceptelor învățate în cadrul laboratoarelor.

Am avut câteva dificultăți la partea de debugging, în special la comunicarea Android-Bluetooth-Atmega, însă m-am folosit de consola din Android Studio pentru a observa diverse bug-uri (erori la inițializare socket; trimitere mesaje corect de pe Android dar fără răspuns pe Atmega - Baud Rate-ul era setat la o valoare greșită). Ocazional, se mai întâmplă ca modulul Bluetooth să se reseteze, atunci când toate cele 4 motoare funcționează la putere maximă și sunt porniți și ceilalți consumatori. În acest caz, trebuie apăsat din nou butonul Connect.

Pe viitor, intenționez să mai pun și un senzor de distanță în așa fel încât mașina să se oprească la detecția unui obstacol.

Download

Schema electrica EAGLE

Arhiva contine urmatoarele fisiere:

  • BtPoliceCarServer.c - implementarea din uC
  • MainActivity.java - sursa aplicatiei Android
  • usart.c si usart.h
  • README.txt
  • Makefile - genereaza fisierul hex ce trebuie incarcat apoi in microcontroller

Cod BtPoliceCar

Jurnal

  • Achiziționare kit mașină, modul Bluetooth: 12.04.2019
  • Achiziționare plăcuță și componente de bază: 16.04.2019
  • Lipit placă de bază: 21.04.2019
  • Instalare bootloader: 23.04.2019
  • Achiziționare buzzer, led-uri, breadboard, sursă alimentare: 23.04.2019
  • Demarare montaj alimentare: 24.04.2019
  • Schema electrică Eagle: 4.05.2019
  • Montaj alimentare+date: 6.05.2019
  • Finalizare implementare Android + Atmega: 12.05.2019

Bibliografie/Resurse

pm/prj2019/apredescu/874852.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