This shows you the differences between two versions of the page.
pm:prj2024:ccontasel:raluca.movileanu [2024/05/24 03:38] raluca.movileanu [Jurnal] |
pm:prj2024:ccontasel:raluca.movileanu [2024/05/26 23:22] (current) raluca.movileanu [Download] |
||
---|---|---|---|
Line 129: | Line 129: | ||
- | Masina si telecomanda sunt complet functionale(se pot observa si ledurile aprinse in imagine). | ||
===== Software Design ===== | ===== Software Design ===== | ||
Line 136: | Line 135: | ||
<note tip> | <note tip> | ||
* Mediu de dezvoltare: Arduino IDE | * Mediu de dezvoltare: Arduino IDE | ||
- | * Librării şi surse 3rd-party: SPI.h, nRF24L01.h, RF24.h | + | * Librarii şi surse 3rd-party: SPI.h, nRF24L01.h, RF24.h |
</note> | </note> | ||
- | ===== Rezultate Obţinute ===== | + |  |
+ | <note important>LINK GITHUB: https://github.com/Raluck20/Masina_cu_telecomanda</note>Â | ||
+ | Â | ||
+ | **__Telecomanda:__**Â | ||
+ | Â | ||
+ | Initializare:Â | ||
+ | * Biblioteca SPI este inclusa pentru a permite comunicarea prin protocolul SPI. | ||
+ | * Biblioteca nRF24L01 si RF24 sunt incluse pentru a gestiona modulul de comunicatie wireless RF24. | ||
+ | * Se defineste un obiect RF24 pentru modulul radio, specificand pinii 7 si 10 pentru conexiune. | ||
+ | * Se defineste adresa de scriere a datelor pentru modulul RF24. | ||
+ | * Se definesc pinii pentru citirea comenzilor (analogici si digitali) de la butoane. | ||
+ | Â | ||
+ | Setup:Â | ||
+ | * Se initializeaza comunicatia seriala pentru debugging la o viteza de 9600 bps. | ||
+ | * Se initializeaza modulul radio si se configureaza pentru scrierea datelor la adresa specificata. | ||
+ | * Se seteaza nivelul de putere al modulului radio si se opreste ascultarea (receptia) pentru a permite transmiterea datelor. | ||
+ | Â | ||
+ | Loop:Â | ||
+ | * In bucla principala, se citesc valorile analogice de la pinii definiti (A0-A7) care corespund directiilor de control: fata, spate, stanga, dreapta, fataStanga, fataDreapta, spateStanga, spateDreapta. | ||
+ | * Daca valorile citite depasesc un anumit prag (1015), se trimite o comanda specifica prin intermediul modulului radio. Comenzile posibile sunt: "fata", "spate", "stanga", "dreapta", "fata stanga", "fata dreapta", "spate stanga", "spate dreapta". | ||
+ | * In plus, se citesc valorile digitale de la pinii 2 si 3 pentru rotatia stanga si dreapta. Daca aceste butoane sunt apasate (valoare HIGH), se trimite comanda corespunzatoare. | ||
+ | * Dupa fiecare comanda trimisa, exista o intarziere de 500 ms pentru a preveni trimiterea continua de comenzi si pentru a oferi un timp de raspuns adecvat. | ||
+ | Â | ||
+ | Functia 'comanda':Â | ||
+ | * Aceasta functie construieste un mesaj de 32 de caractere, care contine comanda de transmisie. Mesajul este transmis folosind functia radio.write prin intermediul modulului RF24. | ||
<note tip> | <note tip> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | __**In codul pentru telecomanda am folosit urmatoarele concepte:**__ |
+ | Â | ||
+ | * **SPI**: Utilizat pentru comunicarea cu modulul RF24 pentru transmisie wireless. | ||
+ | Â | ||
+ | * **GPIO**: Utilizat pentru citirea starii pinilor digitali (rotireStanga si rotireDreapta). | ||
+ | Â | ||
+ | * **ADC**: Utilizat pentru citirea valorilor analogice de la pinii A0-A7 (fata, spate, stanga, dreapta, etc.). | ||
+ | Â | ||
+ | * **UART**: Utilizat pentru comunicarea seriala pentru debug (comunicare cu monitorul serial). | ||
</note> | </note> | ||
- | ===== Concluzii ===== | ||
- | ===== Download ===== | + | **__Masina:__** |
- | <note warning>Â | + | Initializare:Â |
- | 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ă ;-). | + | * SPI.h, nRF24L01.h, RF24.h sunt incluse pentru a permite comunicarea SPI si utilizarea modulului RF24. |
+ | * Se definesc pinii de control pentru motoare (inainte si inapoi pentru fiecare din cele 4 motoare). | ||
+ | * Se definesc comenzile posibile (fata, spate, stanga, dreapta, etc.). | ||
+ | * Se definesc pinii pentru buzzer si LED-uri. | ||
+ | * Se initializeaza modulul RF24 pe pinii 2 si 53 si se seteaza adresa de citire. | ||
+ | * Pinii motoarelor, buzzer-ului si LED-urilor sunt setati ca iesiri. | ||
- | 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**. | + | Setup: |
+ | * Se initializeaza comunicatia seriala. | ||
+ | * Se initializeaza modulul RF24. | ||
+ | * Se configureaza pinii de control ai celor 4 motoare ca iesiri. | ||
+ | * Se configureaza pinii pentru controlul vitezei motoarelor si al buzzer-ului si LED-urilor ca iesiri. | ||
+ | Â | ||
+ | Â | ||
+ | Loop:Â | ||
+ | * Seteaza viteza motoarelor prin iesirile PWM la un nivel constant (150 din 255). | ||
+ | * Schimba starea buzzer-ului si a LED-urilor la fiecare interval de milisecunde (3000 ms), creând un efect de intermitenta (1.5 secunde pornite, 1.5 secunde oprite). | ||
+ | * Verifica daca exista date disponibile pe modulul radio. | ||
+ | * Citeste mesajul primit si Il afiseaza pe monitorul serial. | ||
+ | * In functie de mesajul primit (text), codul controleaza directia de miscare a motoarelor. Pentru fiecare comanda, se schimba starea pinilor corespunzatori motoarelor pentru a executa miscarea dorita (fata, spate, stanga, dreapta, etc.). | ||
+ | * Daca nu exista comenzi disponibile, toate motoarele sunt oprite pentru a preveni miscarea accidentala. | ||
+ | Â | ||
+ | <note tip>Â | ||
+ | __**In codul pentru masina am folosit urmatoarele concepte:**__Â | ||
+ | Â | ||
+ | * **SPI** (Serial Peripheral Interface): Utilizat pentru comunicarea cu modulul RF24 pentru receptia comenzilor wireless. | ||
+ | Â | ||
+ | * **GPIO** (General Purpose Input/Output): Utilizat pentru controlul motoarelor si a LED-urilor. Pinii motoarelor (ex. motor1Inainte, motor1Inapoi, etc.) si LED-urilor (led1, led2) sunt setati ca iesiri. | ||
+ | Â | ||
+ | * **UART** (Universal Asynchronous Receiver-Transmitter): Utilizat pentru comunicarea seriala pentru debugging (comunicare cu monitorul serial). | ||
+ | Â | ||
+ | * **Timere**: Utilizat pentru a alterna starea buzzer-ului si a LED-urilor la fiecare 3 secunde. | ||
+ | Â | ||
+ | * **PWM** (Pulse Width Modulation): Utilizat pentru a seta o valoare PWM pentru anumiti pinii (pentru controlul vitezei). | ||
</note> | </note> | ||
+ | ===== Rezultate Obţinute ===== | ||
+ | |||
+ | {{:pm:prj2024:ccontasel:masina_finala-removebg-preview.png?500|}} | ||
+ | |||
+ | {{:pm:prj2024:ccontasel:telecomanda_finala-removebg-preview_1_.png?500|}} | ||
+ | |||
+ | |||
+ | <html> <iframe width="414" height="896" src="https://www.youtube.com/embed/cTtHTLTAKH0" title="Masina cu Telecomanda" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>Â </html> | ||
+ | |||
+ | ===== Concluzii ===== | ||
+ | |||
+ | Am reusit sa realizez o masina cu telecomanda conform planului propus initial. | ||
+ | |||
+ | **Indicatori de performanta:** | ||
+ | * Timpul dintre trimiterea unei comenzi de la telecomanda si executia acesteia de catre masina < 0.5 secunde. | ||
+ | * Rata de succes a transmiterii si receptiei comenzilor prin modulul RF24 este de 100%. | ||
+ | * Motoarele functioneaza la viteza dorita si mentin o performanta consistenta in timp. | ||
+ | * Nu exista miscare accidentala sau nedorita a masinii cand aceasta nu primeste comenzi. | ||
+ | * Corectitudinea si consistenta functionarii buzzer-ului si LED-urilor. | ||
+ | |||
+ | **Optimizari pe care le-as putea adauga:** | ||
+ | * Atasarea motoarelor in alt mod pe masina. | ||
+ | * Folosirea a mai putinor baterii (eu am ales sa folosesc mai multe si pentru a adauga greutate masinii pentru aderenta). | ||
+ | |||
+ | ===== Download ===== | ||
+ | |||
+ | {{:pm:prj2024:ccontasel:pm_project.zip|}} | ||
===== Jurnal ===== | ===== Jurnal ===== | ||