This shows you the differences between two versions of the page.
pm:prj2024:ccontasel:raluca.movileanu [2024/05/17 11:11] ana_maria.diaconu02 [Software Design] |
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> | ||
- | **Cod telecomanda:**Â | + | <note important>LINK GITHUB: https://github.com/Raluck20/Masina_cu_telecomanda</note> |
- | #include<SPI.h>Â | + | |
- | #include<nRF24L01.h>Â | + | |
- | #include<RF24.h>Â | + | |
- | Â | + | |
- | RF24 radio(7, 10);Â | + | |
- | Â | + | |
- | const byte adress[6] = "00001";Â | + | |
- | Â | + | |
- | const int fata = A0; Â | + | |
- | const int spate = A1; Â | + | |
- | const int stanga = A2;Â | + | |
- | const int dreapta = A3; Â | + | |
- | const int fataStanga = A4;Â | + | |
- | const int fataDreapta = A5; Â | + | |
- | const int spateStanga = A6;Â | + | |
- | const int spateDreapta = A7; Â | + | |
- | const int rotireStanga = 3;Â | + | |
- | const int rotireDreapta = 2;Â | + | |
- | Â | + | |
- | int stateFata = 0;Â | + | |
- | int stateSpate = 0;Â | + | |
- | int stateStanga = 0;Â | + | |
- | int stateDreapta = 0;Â | + | |
- | int stateFataStanga = 0;Â | + | |
- | int stateFataDreapta = 0;Â | + | |
- | int stateSpateStanga = 0;Â | + | |
- | int stateSpateDreapta = 0;Â | + | |
- | Â | + | |
- | void setup() {Â | + | |
- | Serial.begin(9600);Â | + | |
- | radio.begin();Â | + | |
- | radio.openWritingPipe(adress);Â | + | |
- | radio.setPALevel(RF24_PA_LOW);Â | + | |
- | radio.stopListening();Â | + | |
- | }Â | + | |
- | Â | + | |
- | void loop() {Â | + | |
- | int valoareFata = analogRead(fata);Â | + | |
- | int valoareSpate = analogRead(spate);Â | + | |
- | int valoareStanga = analogRead(stanga);Â | + | |
- | int valoareDreapta = analogRead(dreapta);Â | + | |
- | int valoareFataStanga = analogRead(fataStanga);Â | + | |
- | int valoareFataDreapta = analogRead(fataDreapta);Â | + | |
- | int valoareSpateStanga = analogRead(spateStanga);Â | + | |
- | int valoareSpateDreapta = analogRead(spateDreapta);Â | + | |
- | Â | + | |
- | if(valoareFata > 1015) {Â | + | |
- | Serial.println("fata");Â | + | |
- | comanda("fata");Â | + | |
- | delay(500);Â | + | |
- | } Â | + | |
- | Â | + | |
- | if(valoareSpate > 1015) {Â | + | |
- | Serial.println("spate");Â | + | |
- | comanda("spate");Â | + | |
- | delay(500);Â | + | |
- | } Â | + | |
- | Â | + | |
- | if(valoareStanga > 1015) {Â | + | |
- | Serial.println("stanga");Â | + | |
- | comanda("stanga");Â | + | |
- | delay(500);Â | + | |
- | } Â | + | |
- | Â | + | |
- | if(valoareDreapta > 1015) {Â | + | |
- | Serial.println("dreapta");Â | + | |
- | comanda("dreapta");Â | + | |
- | delay(500);Â | + | |
- | } Â | + | |
- | Â | + | |
- | if(valoareFataStanga > 1015) {Â | + | |
- | Serial.println("fata stanga");Â | + | |
- | comanda("fata stanga");Â | + | |
- | delay(500);Â | + | |
- | } Â | + | |
- | Â | + | |
- | if(valoareFataDreapta > 1015) {Â | + | |
- | Serial.println("fata dreapta");Â | + | |
- | comanda("fata dreapta");Â | + | |
- | delay(500);Â | + | |
- | } Â | + | |
- | Â | + | |
- | if(valoareSpateStanga > 1015) {Â | + | |
- | Serial.println("spate stanga");Â | + | |
- | comanda("spate stanga");Â | + | |
- | delay(500); Â | + | |
- | } Â | + | |
- | Â | + | |
- | if(valoareSpateDreapta > 1015) {Â | + | |
- | Serial.println("spate dreapta");Â | + | |
- | comanda("spate dreapta");Â | + | |
- | delay(500);Â | + | |
- | } Â | + | |
- | Â | + | |
- | if (digitalRead(rotireStanga) == HIGH) {Â | + | |
- | Serial.println("rotire stanga");Â | + | |
- | comanda("rotire stanga");Â | + | |
- | delay(500);Â | + | |
- | } Â | + | |
- | Â | + | |
- | if (digitalRead(rotireDreapta) == HIGH) {Â | + | |
- | Serial.println("rotire dreapta");Â | + | |
- | comanda("rotire dreapta");Â | + | |
- | delay(500);Â | + | |
- | } Â | + | |
- | }Â | + | |
- | Â | + | |
- | void comanda(const char *mesaj){Â | + | |
- | char message[32];Â | + | |
- | snprintf(message, sizeof(message), "%s", mesaj);Â | + | |
- | radio.write(&message, sizeof(message));Â | + | |
- | } | + | |
+ | **__Telecomanda:__** | ||
- | **Cod masina:**Â | + | Initializare:Â |
- | #include <SPI.h> | + | * Biblioteca SPI este inclusa pentru a permite comunicarea prin protocolul SPI. |
- | #include <nRF24L01.h> | + | * Biblioteca nRF24L01 si RF24 sunt incluse pentru a gestiona modulul de comunicatie wireless RF24. |
- | #include <RF24.h> | + | * 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. |
- | const int motor1Inainte = 45;Â | + | * Se definesc pinii pentru citirea comenzilor (analogici si digitali) de la butoane. |
- | const int motor1Inapoi = 44;Â | + | |
- | const int motor2Inainte = 43;Â | + | |
- | const int motor2Inapoi = 42;Â | + | |
- | Â | + | |
- | const int motor3Inainte = 39;Â | + | |
- | const int motor3Inapoi = 38;Â | + | |
- | const int motor4Inainte = 37;Â | + | |
- | const int motor4Inapoi = 36;Â | + | |
- | Â | + | |
- | const char fata[] = "fata";Â | + | |
- | const char spate[] = "spate";Â | + | |
- | const char stanga[] = "stanga";Â | + | |
- | const char dreapta[] = "dreapta";Â | + | |
- | const char fataStanga[] = "fata stanga";Â | + | |
- | const char fataDreapta[] = "fata dreapta";Â | + | |
- | const char spateStanga[] = "spate stanga";Â | + | |
- | const char spateDreapta[] = "spate dreapta";Â | + | |
- | const char rotireStanga[] = "rotire stanga";Â | + | |
- | const char rotireDreapta[] = "rotire dreapta"; Â | + | |
- | Â | + | |
- | const int buzzer = 22;Â | + | |
- | const int led1 = 26;Â | + | |
- | const int led2 = 27;Â | + | |
- | Â | + | |
- | RF24 radio(2, 53);Â | + | |
- | const byte address[6] = "00001";Â | + | |
- | Â | + | |
- | unsigned long previousMillis = 0;Â | + | |
- | const long interval = 3000; //Interval pentru buzzer si leduri (1.5 sec pornite, 1.5 sec oprite)Â | + | |
- | bool ledState = LOW;Â | + | |
- | bool buzzerState = LOW;Â | + | |
- | Â | + | |
- | void setup() {Â | + | |
- | Serial.begin(9600);Â | + | |
- | Â | + | |
- | radio.begin();Â | + | |
- | radio.openReadingPipe(0, address);Â | + | |
- | radio.setPALevel(RF24_PA_MIN);Â | + | |
- | radio.startListening();Â | + | |
- | Â | + | |
- | pinMode(motor1Inainte, OUTPUT);Â | + | |
- | pinMode(motor1Inapoi, OUTPUT);Â | + | |
- | pinMode(motor2Inainte, OUTPUT);Â | + | |
- | pinMode(motor2Inapoi, OUTPUT);Â | + | |
- | Â | + | |
- | pinMode(motor3Inainte, OUTPUT);Â | + | |
- | pinMode(motor3Inapoi, OUTPUT);Â | + | |
- | pinMode(motor4Inainte, OUTPUT);Â | + | |
- | pinMode(motor4Inapoi, OUTPUT);Â | + | |
- | Â | + | |
- | pinMode(13, OUTPUT);Â | + | |
- | pinMode(12, OUTPUT);Â | + | |
- | pinMode(6, OUTPUT);Â | + | |
- | pinMode(7, OUTPUT);Â | + | |
- | Â | + | |
- | pinMode(buzzer, OUTPUT);Â | + | |
- | pinMode(led1, OUTPUT);Â | + | |
- | pinMode(led2, OUTPUT);Â | + | |
- | }Â | + | |
- | Â | + | |
- | void loop() {Â | + | |
- | analogWrite(13, 150);Â | + | |
- | analogWrite(12, 150);Â | + | |
- | analogWrite(6, 150);Â | + | |
- | analogWrite(7, 150);Â | + | |
- | Â | + | |
- | unsigned long currentMillis = millis();Â | + | |
- | Â | + | |
- | if (currentMillis - previousMillis >= interval) {Â | + | |
- | previousMillis = currentMillis;Â | + | |
- | Â | + | |
- | buzzerState = !buzzerState;Â | + | |
- | ledState = !ledState;Â | + | |
- | Â | + | |
- | if (buzzerState) {Â | + | |
- | tone(buzzer, 100);Â | + | |
- | } else {Â | + | |
- | noTone(buzzer);Â | + | |
- | }Â | + | |
- | Â | + | |
- | digitalWrite(led1, ledState);Â | + | |
- | digitalWrite(led2, ledState);Â | + | |
- | }Â | + | |
- | Â | + | |
- | if (radio.available()) {Â | + | |
- | char text[32] = "";Â | + | |
- | radio.read(&text, sizeof(text));Â | + | |
- | Serial.println(text);Â | + | |
- | Â | + | |
- | if(strcmp(text, fata) == 0){Â | + | |
- | digitalWrite(motor1Inainte, LOW);Â | + | |
- | digitalWrite(motor1Inapoi, HIGH);Â | + | |
- | digitalWrite(motor2Inainte, LOW);Â | + | |
- | digitalWrite(motor2Inapoi, HIGH);Â | + | |
- | digitalWrite(motor3Inainte, HIGH);Â | + | |
- | digitalWrite(motor3Inapoi, LOW);Â | + | |
- | digitalWrite(motor4Inainte, HIGH);Â | + | |
- | digitalWrite(motor4Inapoi, LOW);Â | + | |
- | delay(500);Â | + | |
- | }Â | + | |
- | Â | + | |
- | if(strcmp(text, spate) == 0){Â | + | |
- | digitalWrite(motor1Inainte, HIGH);Â | + | |
- | digitalWrite(motor1Inapoi, LOW);Â | + | |
- | digitalWrite(motor2Inainte, HIGH);Â | + | |
- | digitalWrite(motor2Inapoi, LOW);Â | + | |
- | digitalWrite(motor3Inainte, LOW);Â | + | |
- | digitalWrite(motor3Inapoi, HIGH);Â | + | |
- | digitalWrite(motor4Inainte, LOW);Â | + | |
- | digitalWrite(motor4Inapoi, HIGH);Â | + | |
- | delay(500);Â | + | |
- | }Â | + | |
- | Â | + | |
- | if(strcmp(text, stanga) == 0){Â | + | |
- | digitalWrite(motor1Inainte, LOW);Â | + | |
- | digitalWrite(motor1Inapoi, HIGH);Â | + | |
- | digitalWrite(motor2Inainte, HIGH);Â | + | |
- | digitalWrite(motor2Inapoi, LOW);Â | + | |
- | digitalWrite(motor3Inainte, HIGH);Â | + | |
- | digitalWrite(motor3Inapoi, LOW);Â | + | |
- | digitalWrite(motor4Inainte, LOW);Â | + | |
- | digitalWrite(motor4Inapoi, HIGH);Â | + | |
- | delay(500);Â | + | |
- | }Â | + | |
- | Â | + | |
- | if(strcmp(text, dreapta) == 0){Â | + | |
- | digitalWrite(motor1Inainte, HIGH);Â | + | |
- | digitalWrite(motor1Inapoi, LOW);Â | + | |
- | digitalWrite(motor2Inainte, LOW);Â | + | |
- | digitalWrite(motor2Inapoi, HIGH);Â | + | |
- | digitalWrite(motor3Inainte, LOW);Â | + | |
- | digitalWrite(motor3Inapoi, HIGH);Â | + | |
- | digitalWrite(motor4Inainte, HIGH);Â | + | |
- | digitalWrite(motor4Inapoi, LOW);Â | + | |
- | delay(500);Â | + | |
- | }Â | + | |
- | Â | + | |
- | if(strcmp(text, fataStanga) == 0){Â | + | |
- | digitalWrite(motor1Inainte, LOW);Â | + | |
- | digitalWrite(motor1Inapoi, HIGH);Â | + | |
- | digitalWrite(motor2Inainte, LOW);Â | + | |
- | digitalWrite(motor2Inapoi, LOW);Â | + | |
- | digitalWrite(motor3Inainte, HIGH);Â | + | |
- | digitalWrite(motor3Inapoi, LOW);Â | + | |
- | digitalWrite(motor4Inainte, LOW);Â | + | |
- | digitalWrite(motor4Inapoi, LOW);Â | + | |
- | delay(500);Â | + | |
- | }Â | + | |
- | Â | + | |
- | if(strcmp(text, fataDreapta) == 0){Â | + | |
- | digitalWrite(motor1Inainte, LOW);Â | + | |
- | digitalWrite(motor1Inapoi, LOW);Â | + | |
- | digitalWrite(motor2Inainte, LOW);Â | + | |
- | digitalWrite(motor2Inapoi, HIGH);Â | + | |
- | digitalWrite(motor3Inainte, LOW);Â | + | |
- | digitalWrite(motor3Inapoi, LOW);Â | + | |
- | digitalWrite(motor4Inainte, HIGH);Â | + | |
- | digitalWrite(motor4Inapoi, LOW);Â | + | |
- | delay(500);Â | + | |
- | }Â | + | |
- | Â | + | |
- | if(strcmp(text, spateStanga) == 0){Â | + | |
- | digitalWrite(motor1Inainte, LOW);Â | + | |
- | digitalWrite(motor1Inapoi, LOW);Â | + | |
- | digitalWrite(motor2Inainte, HIGH);Â | + | |
- | digitalWrite(motor2Inapoi, LOW);Â | + | |
- | digitalWrite(motor3Inainte, LOW);Â | + | |
- | digitalWrite(motor3Inapoi, LOW);Â | + | |
- | digitalWrite(motor4Inainte, LOW);Â | + | |
- | digitalWrite(motor4Inapoi, HIGH);Â | + | |
- | delay(500);Â | + | |
- | }Â | + | |
- | Â | + | |
- | if(strcmp(text, spateDreapta) == 0){Â | + | |
- | digitalWrite(motor1Inainte, HIGH);Â | + | |
- | digitalWrite(motor1Inapoi, LOW);Â | + | |
- | digitalWrite(motor2Inainte, LOW);Â | + | |
- | digitalWrite(motor2Inapoi, LOW);Â | + | |
- | digitalWrite(motor3Inainte, LOW);Â | + | |
- | digitalWrite(motor3Inapoi, HIGH);Â | + | |
- | digitalWrite(motor4Inainte, LOW);Â | + | |
- | digitalWrite(motor4Inapoi, LOW);Â | + | |
- | delay(500);Â | + | |
- | }Â | + | |
- | Â | + | |
- | if(strcmp(text, rotireStanga) == 0){Â | + | |
- | digitalWrite(motor1Inainte, LOW);Â | + | |
- | digitalWrite(motor1Inapoi, HIGH);Â | + | |
- | digitalWrite(motor2Inainte, HIGH);Â | + | |
- | digitalWrite(motor2Inapoi, LOW);Â | + | |
- | digitalWrite(motor3Inainte, LOW);Â | + | |
- | digitalWrite(motor3Inapoi, HIGH);Â | + | |
- | digitalWrite(motor4Inainte, HIGH);Â | + | |
- | digitalWrite(motor4Inapoi, LOW);Â | + | |
- | delay(500);Â | + | |
- | }Â | + | |
- | Â | + | |
- | if(strcmp(text, rotireDreapta) == 0){Â | + | |
- | digitalWrite(motor1Inainte, HIGH);Â | + | |
- | digitalWrite(motor1Inapoi, LOW);Â | + | |
- | digitalWrite(motor2Inainte, LOW);Â | + | |
- | digitalWrite(motor2Inapoi, HIGH);Â | + | |
- | digitalWrite(motor3Inainte, HIGH);Â | + | |
- | digitalWrite(motor3Inapoi, LOW);Â | + | |
- | digitalWrite(motor4Inainte, LOW);Â | + | |
- | digitalWrite(motor4Inapoi, HIGH);Â | + | |
- | delay(500);Â | + | |
- | }Â | + | |
- | }Â | + | |
- | Â | + | |
- | if (!radio.available()) {Â | + | |
- | digitalWrite(motor1Inainte, LOW);Â | + | |
- | digitalWrite(motor1Inapoi, LOW);Â | + | |
- | digitalWrite(motor2Inainte, LOW);Â | + | |
- | digitalWrite(motor2Inapoi, LOW);Â | + | |
- | digitalWrite(motor3Inainte, LOW);Â | + | |
- | digitalWrite(motor3Inapoi, LOW);Â | + | |
- | digitalWrite(motor4Inainte, LOW);Â | + | |
- | digitalWrite(motor4Inapoi, LOW);Â | + | |
- | }Â | + | |
- | } | + | |
+ | 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. | ||
- | ===== Rezultate Obţinute ===== | ||
<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 ===== | ||
Line 509: | Line 254: | ||
* 16 mai - proiectare scheme electrice (telecomanda+masina) | * 16 mai - proiectare scheme electrice (telecomanda+masina) | ||
* 13-16 mai - am implementat si modificat codul in paralel cu realizarea componentelor fizice | * 13-16 mai - am implementat si modificat codul in paralel cu realizarea componentelor fizice | ||
+ | * 23 mai - realizare caroserie masina | ||
</note> | </note> | ||
- | {{:pm:prj2024:ccontasel:image_2024-05-16_234616323.png?500|}} | + | {{:pm:prj2024:ccontasel:image_2024-05-24_033722137.png?500|}} |
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||