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:48]
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 49: Line 55:
 === Schema electrica === === Schema electrica ===
 {{:​pm:​prj2024:​vstoica:​circuit_schema_el.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 89: 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 StudioCodeVisionAVR+  ​Serial.begin(9600)
-  ​* librării şi surse 3rd-party ​(e.gProcyon 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); 
 +  analogWrite(ena0); 
 +  ​analogWrite(enb, 0); 
 + 
 +  lcd.init(); 
 +  lcd.backlight(); 
 +  ​lcd.setCursor(1,​ 0); 
 +  ​lcd.print("SPEED IS 0")
 +
 + 
 </​note>​ </​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.
  
-===== Rezultate Obţinute ​===== +**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)); 
 +}
  
-<note warning> +void Right() { 
-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 << in2) | (1 << in3); 
 +  PORTD &= ~((1 << in1) | (1 << in4)); 
 +
 + 
 +void Stop(
 +  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.1716029321.txt.gz · Last modified: 2024/05/18 13:48 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