George-Sebastian PÎRTOACĂ (66847) - Fast and Furious

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

Introducere

Proiectul are ca scop realizarea unei masinute cu telecomanda ce detecteaza obstacolele frontale si nu permite accidente in acest sens. De asemenea, masinuta va dispune si de un claxon pentru atentionarea diferitelor situatii in trafic m(. Controlul masinii se va face prin inclinarea telecomenzii in anumite unghiuri si pe anumite directii (alese in mod natural, pentru un control cat mai facil). De asemenea, restul comenzilor catre masinuta (precum claxon) se vor da tot cu ajutorul unor butoane plasate pe telecomanda. Comunicatia intre telecomanda si masinuta se va realiza prin tehnologia Bluetooth. Ideea acestui proiect provine din seria de filme de actiune The Fast and the Furious a carei ultima pelicula abia a fost lansata in cinematografe. Proiectul este util pentru a invata cum se interfateaza diferitele componente pe care le voi utiliza (precum modulul de Bluetooth) cu un microcontroler dar si pentru a-mi cultiva pasiunea pentru masini :-X

Descriere generală

<imgcaption shema_bloc_telecomanda|Schema bloc pentru telecomanda>  </imgcaption>

Comunicatia intre microcontroler si modulul de bluetooth se face prin interfata seriala USART. Modulul de Bluetooth lucreaza in modul master si transmite comenzi cate modulul de Bluetooth de pe masinuta (care, implicit, va fi slave). Periodic, uC citeste datele de la accelerometru, folosind pinii conectati la convertorul analogic-digital, pentru a sesiza eventualele schimbari si pentru a transmite comenzile corespunzatoare catre microcontrolerul de pe masinuta. Microcontrolerul va lua decizii pe baza a doua unghiuri pe care acesta le poate masura (unghiul din planul XoY nu poate fi masurat doar pe baza accelerometrului, dar doua unghiuri sunt suficiente). Pentru mai multe detalii se pot consulta: Unghiurile lui Euler si Axele unui avion. Unul dintre aceste unghiuri va da acceleratia masinii iar celalat directia. Date importante vor fi afisate pe LCD (in functie si de timpul extra de care dispun pentru implementarea proiectului pot sa adaug anumite feature-uri bonus precum: masurarea vitezei masinii, muzica la bord). Butonul de joystick se va folosi ca alternativa de control pentru accelerometru deoarece ofera un control mai fin.

<imgcaption shema_bloc_masina|Schema bloc pentru masina> </imgcaption>

Masinuta va avea 4 motoare (2 fata si 2 spate) - 4×4 8-) iar directia se va modifica prin schimbarea vitezei de rotatie a rotilor de pe o parte sau alta a masinii. Pentru a asigura curentul necesar consumat de cele 4 motoare am ales sa folosesc driverul L298N. Acesta trebuie alimentat la o tensiune mai mare sau egala cu 9V (eu am ales sa folosesc 12V) si poate fi controlat folosind PWM pentru a modifica turatia motoarelor. Modulul de Bluetooth lucreaza in mod slave si asteapta date de la telecomanda. Microcontrolerul discuta cu un sensor de distanta (care va fi amplasat frontal) pentru a putea evita eventualele coliziuni ale masinutei (cand se detecteaza obiecte la o anumita distanta, aproximativ 20cm, masinuta nu va mai inainta). Buzzer-ul este folosit pentru implementarea claxonului.

Hardware Design

Lista de piese:

Nume Distribuitor
Placa de baza PM 2017 Echipa PM 8-)
Modul Bluetooth HC-05 Optimus Digital
Motor cu reductor, cuplu 0.8 kg * cm Optimus Digital
Buzzer Optimus Digital
Driver motoare L298N Optimus Digital
Senzor ultrasonic HC-SR04 Optimus Digital
LCD 16×2 Robofun
Sasiu si roti Optimus Digital
Fire mama-mama Optimus Digital
Fire mama-tata Optimus Digital
Rezistente Optimus Digital
Condensatoare Optimus Digital
Acumulatori Optimus Digital
Modul Accelerometru MPU6050 Optimus Digital
Buton Joystick PS2 Biaxial Optimus Digital

<imgcaption schema_telecomanda|Schema electrica pentru telecomanda> </imgcaption>

<imgcaption schema_masina|Schema electrica pentru masina>  </imgcaption>

Software Design

Pentru dezvoltarea aplicatiei am folosit editorul Vim si AVR GCC Toolchain pentru Linux. Exista doua programe distincte: unul care ruleaza pe uC-ul de pe masinuta si celalalt care ruleaza pe uC-ul de pe telecomanda. Codul contine anumite biblioteci 3rd-party si anumite biblioteci scrise de mine. Bibliotecile folosite (care nu sunt scrise de mine) sunt urmatoarele:

  • controller-ul de LCD (codul din laborator);
  • codul pentru transmisia seriala prin USART (cel din laborator);
  • controller-ul pentru MPU 6050
  • comunicatia prin I2C (inclusa in packet-ul pentru MPU 6050)

Drivere-le scrise de mine sunt:

  • controller-ul pentru senzorul de distanta HC-SR04;
  • controller-ul pentru L298N;
  • controller-ul pentru butonul de joystick;
  • configurarea si comunicatia HC-05 master - slave.

Configurarea modulului de Bluetooth in modul master trebuie facuta “offline” inainte de utilizarea modulului. Trebuie configurate aspecte precum: numele si parola modulului, adresa MAC a dispozitivului slave la care acesta trebuie sa se conecteze, care este rata de transfer prin USART (BAUD rate), etc. Dupa aceasta configurare, modulul master se conecteaza automat la modulul slave precizat, ceea ce reduce complexitatea codului “online”.

Detalii despre cod se pot gasi in repo-ul de pe GitHub.

Rezultate Obţinute

Concluzii

A fost unul dintre cele mai interesante proiecte din facultate. Am investit destul de mult timp (si bani LOL) dar a meritat efortul. In urma proiectului am invatat multe despre electronica (in mod cert mai multe decat am invatat la cursul de EEA) si am realizat cat de dificil este sa lipesti pini cu un letcon de 80W si fludor de 2mm. Multumiri speciale pentru acumulatorii LiPo care au facut ca masina sa se poate utiliza mai mult de 2 minute fara schimbarea bateriilor.

Download

Codul sursa si alte fisiere relevante se pot descarca din repo-ul de pe GitHub.

Bibliografie/Resurse

pm/prj2017/anitu/masinuta_pirtoaca_george_sebastian_335cb_2017.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