Autorul poate fi contactat la adresa: gpirtoaca@gmail.com
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 . 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
<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 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.
Lista de piese:
Nume | Distribuitor |
---|---|
Placa de baza PM 2017 | Echipa PM ![]() |
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>
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:
Drivere-le scrise de mine sunt:
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.
A fost unul dintre cele mai interesante proiecte din facultate. Am investit destul de mult timp (si bani ) 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.
Codul sursa si alte fisiere relevante se pot descarca din repo-ul de pe GitHub.