Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2024:vstoica:valentin.ionescu02 [2024/05/18 13:43]
valentin.ionescu02 [Hardware Design]
pm:prj2024:vstoica:valentin.ionescu02 [2024/05/26 21:10] (current)
valentin.ionescu02 [Download]
Line 31: Line 31:
   * Rezistenta de 400 Ohmi   * Rezistenta de 400 Ohmi
   * Acumulatoare   * Acumulatoare
 + ​Pieste pentru lama de taiat iarba:
 +  * Baterie 9v
 +  * Motor DC
 +  * Elice de plastic
 +  * Fire
 +
 </​note>​ </​note>​
   * ATmega328P: Este responsabil pentru interpretarea comenzilor Bluetooth primite de la modulul HC-05 și pentru controlul funcțiilor mașinii și a LED-urilor.   * ATmega328P: Este responsabil pentru interpretarea comenzilor Bluetooth primite de la modulul HC-05 și pentru controlul funcțiilor mașinii și a LED-urilor.
Line 48: Line 54:
  
 === Schema electrica === === Schema electrica ===
-{{:​pm:​prj2024:​vstoica:​sc_electric.png?800|}}+{{:​pm:​prj2024:​vstoica:​circuit_schema_el.png?800|}} 
 + 
 +=== Schema electrica elice ===  
 +{{:​pm:​prj2024:​vstoica:​elice.png?​500|}} 
  
 === Componentele conectate === === Componentele conectate ===
Line 54: Line 64:
 {{:​pm:​prj2024:​vstoica:​masin1.jpeg?​200|}} {{:​pm:​prj2024:​vstoica:​masin1.jpeg?​200|}}
 {{:​pm:​prj2024:​vstoica:​untitled.jpeg?​200|}} {{:​pm:​prj2024:​vstoica:​untitled.jpeg?​200|}}
 +{{:​pm:​prj2024:​vstoica:​iarba3.jpeg?​200|}}
 +{{:​pm:​prj2024:​vstoica:​iarba1.jpeg?​200|}}
 +{{:​pm:​prj2024:​vstoica:​iarba2.jpeg?​200|}}
  
 === Pini folositi == === Pini folositi ==
Line 68: Line 81:
  * Comenzile primite de la modulul HC-05 sunt trimise la modulul care controleaza motoarele prin pinii de semnale digitale  * Comenzile primite de la modulul HC-05 sunt trimise la modulul care controleaza motoarele prin pinii de semnale digitale
 Am ales pinii 4,5,6,7 de la microcontroler Am ales pinii 4,5,6,7 de la microcontroler
 +
 + * Pinii 10 si 11 de la microcontroler conectati la pinii ENA si ENB de la modulul L298N controleaza viteza motoarelor prin PWM 
  
  * LED urile sunt conectate la pin ul digital 9 de la microcontroler si alimentarea la pinul de 3.3V  * LED urile sunt conectate la pin ul digital 9 de la microcontroler si alimentarea la pinul de 3.3V
 + 
 + * Pinii VCC SI GND de la LCD cu interfata I2C sunt conectati la pinii de 5v si, respecitv GND ai microcontrolerului.
 + 
 + * Pinii SDA SI SCL ai LCD ului sunt concectati la microcontroler prin pinii A4 si A5(SDA SI SCL)
 +
 +
 +
 +
 +
 +
  
  
Line 77: Line 102:
 ===== Software Design ===== ===== Software Design =====
  
 +  * **Mediu de dezvoltare:​** Arduino IDE
 +  * **biblioteci folosite:** Wire.h si LiquidCrystal_I2C.h (pentru controlul motoarelor, comunicație I2C și afișarea pe LCD.) 
 +  * **Pentru viteza motoarelor** am folosit o variabila globala.
 +  * Am definit pinii pentru controlul motoarelor(**in1,​2,​3,​4**),​ pentru viteza(**ena,​enb (PWM)**) si pentru led uri
  
 +**Funcția setup** este utilizată pentru a inițializa hardware-ul și setările necesare.
 <note tip> <note tip>
-Descrierea codului aplicaţiei ​(firmware): + void setup() { 
-  ​* mediu de dezvoltare ​(if any) (e.g. AVR Studio, CodeVisionAVR+  ​Serial.begin(9600)
-  ​* librării şi surse 3rd-party ​(e.g. Procyon AVRlib+  DDRD |= (1 << in1) | (1 << in2) | (1 << in3) | (1 << in4); 
-  ​* algoritmi şi structuri pe care plănuiţi să le implementaţi +  ​DDRB |= (1 << ena) | (1 << enb) | (1 << led); 
-  ​(etapa 3surse şi funcţii implementate +  ​PORTB |= (1 << led); 
-</​note>​+  ​analogWrite(ena, 0); 
 +  ​analogWrite(enb,​ 0);
  
-===== Rezultate Obţinute =====+  lcd.init();​ 
 +  lcd.backlight();​ 
 +  lcd.setCursor(1,​ 0); 
 +  lcd.print("​SPEED IS 0"); 
 +
 +  
 +</​note>​ 
 +  * Inițializare comunicarea serială (Serial.begin(9600))  
 +  * **in1, in2, in3, in4**: pini digitali setați ca ieșiri,​pentru a controla direcția motoarelor. 
 +  * **ena, enb**: pini de ieșire care controlează viteza motoarelor folosind PWM. 
 +  * **led**: pin de ieșire pentru LEDuri,​pentru semnalizarea diferitelor stări. 
 +  * **analogWrite**:​ setează viteza inițială a motoarelor la 0, oprind motoarele la pornirea sistemului.
  
 +**Funcția loop** este responsabilă pentru citirea comenzilor de la interfața serială și pentru controlarea comportamentului vehiculului pe baza acestor comenzi.Se verifica daca există date disponibile pe interfața serială.
 +Daca da, se citeste o valoare care reprezinta ce functie trebuie apelata.Se seteaza viteza motoarelor si se afiseaza
 +pe lcd valoare ei.
 +<note tip >
 +void loop() {
 +  if (Serial.available() > 0) {
 +    char value = Serial.read();​
 +    analogWrite(ena,​ Speed);
 +    analogWrite(enb,​ Speed);
 +    lcd.clear();​
 +    lcd.print("​SPEED IS ");
 +    lcd.print(Speed);​
 +    lcd.print(" ​  "​);  ​
 +    ​
 +    if (value == '​B'​) {
 +      Forward();
 +    }
 +    else if (value == '​F'​) {
 +      Back();
 +    }
 +    else if (value == '​L'​) {
 +      Left();
 +    }
 +    else if (value == '​R'​) {
 +      Right();
 +    }
 +    else if (value == '​X'​) {
 +       Speed = 255;
 +    }
 +    else if (value == '​Y'​) {
 +      Speed = 120;
 +    }
 +    else if (value == '​S'​) {
 +      Stop();
 +    }
 +    else if (value == '​M'​ || value == '​N'​)
 +    {
 +        PORTB &= ~(1 << led);
 +    }
 +     else if (value == '​m'​ || value == '​n'​)
 +    {
 +        PORTB |= (1 << led);
 +    }
 +    ​
 +  }
 +}
 +</​note>​
 +Funcțiile **“Forward()“,​“BACK()“ ,​“LEFT()“,​ “RIGHT()“ și “STOP()“** sunt responsabile de controlul mișcării masinii.
 <note tip> <note tip>
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +void Forward() { 
-</note>+  PORTD |= (1 << in1) | (1 << in3); 
 +  PORTD &= ~((1 << in2) | (1 << in4)); 
 +}
  
-===== Concluzii =====+void Back() { 
 +  PORTD |(1 << in2) | (1 << in4); 
 +  PORTD &~((1 << in1) | (1 << in3)); 
 +}
  
-===== Download =====+void Left() { 
 +  PORTD |(1 << in1) | (1 << in4); 
 +  PORTD &~((1 << in2) | (1 << in3)); 
 +
 + 
 +void Right() { 
 +  PORTD |(1 << in2) | (1 << in3); 
 +  PORTD &~((1 << in1) | (1 << in4)); 
 +}
  
-<note warning> +void Stop() { 
-O arhivă ​(sau mai multe dacă este cazulcu 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ă ;-).+  PORTD &= ~((1 << in1| (1 << in2| (1 << in3) | (1 << in4)); 
 +}
  
-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**. 
 </​note>​ </​note>​
  
-===== Jurnal ===== 
  
-<note tip> + 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul ​de proiect progresul ​proiectului. +===== Rezultate Obţinute ===== 
-</​note>​+ 
 +https://​drive.google.com/​file/​d/​1ADtn8xu3hT9tyJ2f52uw-6Ngnt1La_3Z/​view?​usp=drive_link 
 +===== Concluzii ===== 
 + 
 +Finalizarea acestui proiect a fost o experiență extrem de satisfăcătoare,​ oferindu-mi ocazia de a integra ​și aplica cunoștințele de hardware și software într-un mod creativ și util. Proiectarea și construirea unei mașini de jucărie controlate prin Bluetooth, echipată cu LED-uri pentru faruri și stopuri, și cu o elice pentru tăiatul ierbii, mi-au permis ​să explorez numeroase aspecte ale ingineriei și programării. Afișarea vitezei pe un ecran LCD a adăugat un plus de interactivitate și funcționalitate ​proiectului. Acest proiect nu doar că mi-a îmbogățit abilitățile tehnice, dar mi-a și stimulat dorința de a lucra la proiecte similare în viitor
 +===== Download ===== 
 +{{:​pm:​prj2024:​vstoica:​proiect_pm.zip|}}
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +**Resurse Software**
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** ​şi **Resurse Hardware**. +  * **Arduino Libraries** 
-</note>+  * **LiquidCrystal_I2C Library Documentation** 
 +  * **Wire Library Documentation** 
 + 
 +**Resurse Hardware**
 +  * **Datasheet Arduino Uno** 
 +  * **Datasheet L298N Motor Driver** 
 +  * **Datasheet HC-05** 
 +  * **https://​www.youtube.com/​watch?​v=CvqHkXeXN3M** 
 +  * **https://​www.youtube.com/​watch?​v=bNZv3dZpmSU** 
 +  * **https://​www.youtube.com/​watch?​v=ykgt4v7_4y4** 
 +  * **https://​www.youtube.com/​watch?​v=E2sTbpFsvXI**
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
  
pm/prj2024/vstoica/valentin.ionescu02.1716028984.txt.gz · Last modified: 2024/05/18 13:43 by valentin.ionescu02
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