This is an old revision of the document!
Racing Car
Autor
Introducere
Scopul proiectului este realizarea unei masinute ce poate fi controlata printr-o aplicatie mobila android. De-a lungul timpului am avut mai multe masinute, dar fiecare dintre acestea putea fi controlata printr-o telecomanda. Lipsa unei baterii sau pierderea telecomenzii a reprezentat de multe ori un motiv suficient pentru a nu mai folosi masinuta. In cadrul acestui proiect, conectarea se va realiza cu ajutorul unui modul de Bluetooth. Masinuta va dispune de leduri pentru a putea simula semnalizarea, stopurile si farurile unei masini. De asemenea, va avea lumini suplimentare ce vor putea fi aprinse pentru modul de noapte si va dispune de un mini sistem audio.
Descriere generală
Bateria de 9V va alimenta placuta Arduino. Aplicatia dezvoltata android se va conecta
la masinuta, prin modulul Bluetooth HC-05 ce este legat la placuta Arduino UNO. Utilizatorul va putea trimite din aplicatie informatiile urmatoare masinutei: unghiul rotatiei volanului care va trimite datele catre driver motor, care la randul sau va porni in directia potrivita unul dintre motorasele DC, cel responsabil de stabilirea directiei, aprinderea semnalului stanga, dreapta, sau ambele ( avarii ) ce determina stingerea sau aprinderea de led-uri, apasarea pedalei de frana sau de acceleratie ce va determina driver-ul de motor sa porneasca motorasul responsabil de tractiune, pornirea modului de noapte si pornirea mini sistemului audio prin activarea speaker-ului.
Schema bloc
Hardware Design
Schema electrica
Software Design
Mediu de dezvoltare: Arduino IDE 1.8.20.
Aplicatie Android
Aplicatia mobila android a fost dezvoltata in intregime de mine. In implementarea ei am folosit
o biblioteca care a oferit o interfata de conectare la comunicarea seriala prin bluetooth. Cu ajutorul aplicatiei,
utilizatorul se poate conecta la orice dispozitiv bluetooth din apropiere cu care a reusit sa faca pair pana in acel moment. Daca conectarea a reusit, atunci se pot trimite informatii catre placuta arduino, ce detine modulul de bluetooth, in functie de o codificare ale carei reguli le voi explica in continuare. Pentru a putea obtine raspunsuri in timp real, a fost nevoie sa incerc sa reduc informatia trimisa astfel incat am
compactat datele in char-uri pe care le voi trimite mai departe.
Semnal stanga ON/OFF - codificare → (0/6)
Semnal dreapta ON/OFF - codificare → (1/7)
Semnal avarii ON/OFF - codificare → (2/8)
Semnal muzica ON/OFF - codificare → (3/9)
Semnal pozitii si faruri ON/OFF - codificare → (4/10)
Semnal lumini de noapte ( NEON ) ON/OFF - codificare → (5/11)
Semnal frana / mers cu spatele ON/OFF ( viteza fixa ) - codificare → (12/13)
Acceleratie - dinamica/adaptabila - semnal trimis de catre pedala de acceleratie in functie de unghiul apasarii. Poate lua valori de la 0 la 10 - codificarea → (20 → 30)
Volan - se poate roti 90 de grade la stanga, respectiv 90 de grade la dreapta. Cele 180 de grade sunt mapate in 18 unitati ( 10 grade = 1 unitate ) care sunt codificate rezervand valorile (40 → 58)
Cod Arduino
Definesc notele muzicale, melodia si intializez variabile precum ( tempo, divider, noteDuration, key .. ).
Definesc cod-urile corespunzatoare fiecarui semnal, precum si capetele intervalelor din codificarea Acceleratiei si a Miscarii Volanului pentru a putea interpreta informatia primita de la bluetooth.
Definesc pinii : am folosit, pentru a ajusta viteza motoraselor, pinii 9,10 cu functia PWM; pentru comunicarea prin bluetooth am folosit chiar pinii 0-1 RX,TX. De asemenea, am configurat modulul de bluetooth sa transmita informatia printr-un baud rate = 115200.
Functia loop() : verifica daca poate citi un char, daca un char a fost citit, atunci interpreteaza informatia. Daca s-a stabilit pornirea difuzorului, atunci se va apela functia playSong(), altfel se va executa actiunea ( celelalte sunt actiuni scurte ) si se va iesi din functia loop.
Functia playSong() face ca functia loop() sa nu se mai apeleze, astfel incat, la fiecare nota cantata, voi verifica daca s-a primit ceva de la bluetooth, in caz afirmativ, interpretarea informatiei primite va avea prioritate.
Un mic algoritm dezvoltat este cel al stabilirii tensiunii primite de motorasul responsabil de directie, prin PWM, pentru a simula cat mai bine miscarea naturala a volanului. Masinuta avea ceva mici probleme, era putin dezechilibrata in ce priveste directia, de asemenea sistemul de tip “puzzle” dispune de un arc care face ca rotile sa doreasca sa revina intotdeauna in pozitia normala. Astfel, motorasul de directie trebuie sa reziste fortei elastice a arcului. Am incercat sa ofer niste impulsuri mai puternice la inceputul schimbarii directiei si apoi sa revin la o viteza mai redusa doar pentru a-si mentine traiectoria.
Rezultate Obţinute
Aplicatia Android
Masinuta
Care au fost rezultatele obţinute în urma realizării proiectului vostru.
Concluzii
Download
O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună

.
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.
Jurnal
Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.
Bibliografie/Resurse