Cristian PAVEL (87471) - Car in motion

Autorul poate fi contactat la adresa: pcristian97@gmail.com

Introducere

Proiectul consta in realizarea unei masini care poate fi controlata prin Bluetooth printr-o aplicatie de Android. Masina va dispune si de un senzor, care va putea preveni eventuale accidente, dar si de led-uri si buzzer pentru a simula mai indeaproape o masina reala. Am ales acest proiect pentru ca mi se pare fun ca la finalul proiectului sa am o jucarie pe care pot sa o folosesc :).

Descriere Generala

Microcontroller-ul de pe placa de baza va prelua comenzi de la modulul HC-05 prin intermediul interfetei USART. Modulul de BT, de asemenea, va comunica cu aplicatia de Android. Dupa ce primeste o anumita comanda, microcontroller-ul va trimite comenzi la driver-ul de motoare. Acest lucru se va realiza printr-un semnal PWM. Masina dispune de 4 motoare, acestea fiind controlate in perechi de cate 2, deoarece driver-ul nu poate comunica decat cu 2 motoare simultan. Senzorul HC-SR04 va fi folosit pentru a bloca comunicarea cu driver-ul de motoare atunci cand se detecteaza o coliziune. Ledurile si buzzerul sunt pentru a implementa diverse feature-uri care sa ofere realism masinii (faruri, claxon, semnalizare, turatie motor).

Schema bloc

Hardware design

Piese necesare

  • Placa de baza
  • Senzor ultrasonic HC-SR04
  • Modul Bluetooth HC-05
  • Driver Motoare L298N
  • Led-uri
  • Buzzer
  • Rezistente
  • Condensatoare
  • Kit masina
  • Fire conductoare
  • Diode

Schema electrica

Software design

Pentru partea de software m-am folosit de Timer1 pentru generarea semnalelor PWM care vor indica viteza masinii. Timerul este configurat in modul Phase and Frequency Correct cu top la ICR1. Cu OCR1A si OCR1B generez semnalul de la pinii OC1A si OC1B, care sunt conectati la modulul L298N (ENABLEA si ENABLEB). De asemenea, pentru controlul motoarelor (fata-spate) ma joc cu pinii de INPUT ai driverului. Cu modulul de BT comunic prin interfata USART (pinii PD0 si PD1). Aici folosesc o intrerupere pentru a realiza receive la un caracter si in functie de caracterul primit schimb viteza, directia, aprind becuri sau altele. Pentru a folosi senzorul de distanta, activez la intervale regulate pinul TRIGGER pentru 10 us. Dupa care, fac busy-waiting (o alta varianta ar fi fost sa folosesc intreruperi, insa nu se obtineau rezultatele dorite si era mai dificil de gestionat) si astept primirea unui semnal pe ECHO. Folosind, TIMER2 numar cat timp e activat ECHO. In functie de aceasta durata, opresc sau nu motoarele. De asemenea, la oprirea motoarelor trimit si un mesaj catre aplicatia ANDROID pentru a fi afisat userului. Mai folosesc un buzzer care sa simuleze un claxon. Acesta genereaza un sunet intr-o bucla for, folosind un delay potrivit. La mersul cu spatele am leduri care flashuiesc. Acestea au fost implementate cu TIMER0. In bucla principala, trimit TRIGGER prin HCSR04, astept semnal de la ECHO si realizez o parte din logica rezultata din primirea unui semnal de la aplicatia ANDROID. Pentru comunicatia USART m-am folosit de laboratorul 1, restul fiind implementat de mine. Codul poate fi gasit si pe github. Codul a fost scris in VIM.

Aplicatia pentru Android a fost realizata in Android Studio. Interfata Front-End de mai jos are initial 3 butoane. Connect to HC-05 ma conecteaza (folosind adreasa MAC a modulului BT) la HC-05. Disconnect ma deconecteaza. Remote Control ma duce la o noua pagina folosita pentru controlul masinii. Pentru controlul masinii am interfata de mai jos.

Rezultate obtinute

Am avut probleme cu alimentarea. Bateriile nu rezista foarte mult, fiind multi consumatori. Am incercat mai multe variante, printre care 9V (L298N) + 4 AA (placuta) sau 8 AA (placuta + L298N). In ambele cazuri, dupa mai multe folosiri bateriile obosesc si nu mai vor. Varianta finala are 2 baterii de 9V conectate in paralel pentru alimentarea modulului L298N. Pentru alimentarea placutei ma folosesc de regulatorul incorporat in L298N, pentru a scoate 5V.

Concluzii

Proiectul a fost unul interesant. Probleme mari nu am avut decat cu alimentarea (scurta durata de viata a bateriilor :(). Ca o viitoare imbunatatire, ar trebui sa gasesc o sursa de alimentare mai eficienta si durabila si sa adaug mai multi senzori de distanta pozitionati la diferite unghiuri pentru un control mai bun. As dori si sa folosesc alt modul de BT (de tipul BLE) pentru a putea fi folosit si cu o aplicatie de iOS.

Download

Codul sursa incarcat pe uC poate fi gasit pe github. De asemenea, codul sursa de la aplicatia Android github .

Jurnal

20 aprilie - Ales tema proiect, schema bloc
21 aprilie - Comanda componente
3 mai - Asamblare kit masina
4 mai - Schema electrica in EAGLE
11-12 mai - Cablaj + Software HCSR04, HC05 si motoare
18-19 mai - Aplicatie Android

Bibliografie / Resurse

pm/prj2019/ctranca/car-in-motion.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