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 14:38]
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 93: Line 103:
  
   * **Mediu de dezvoltare:​** Arduino IDE   * **Mediu de dezvoltare:​** Arduino IDE
-  * **biblioteci folosite:** Wire.h si LiquidCrystal_I2C.h +  * **biblioteci folosite:** Wire.h si LiquidCrystal_I2C.h ​(pentru controlul motoarelor, comunicație I2C și afișarea pe LCD.)  
-  * **Surse şi funcţii implementate**: +  * **Pentru viteza motoarelor** am folosit o variabila globala. 
- <​note tip> +  * Am definit pinii pentru controlul motoarelor(**in1,​2,​3,​4**),​ pentru viteza(**ena,​enb (PWM)**) si pentru led uri 
-   ​void setup() {+ 
 +**Funcția setup** este utilizată pentru a inițializa hardware-ul și setările necesare. 
 +<note tip> 
 + void setup() {
   Serial.begin(9600);​   Serial.begin(9600);​
-  ​pinMode(in1, OUTPUT)+  ​DDRD |= (1 << ​in1) (1 << ​in2) (1 << ​in3) (1 << ​in4); 
-  pinMode(in2, OUTPUT)+  ​DDRB |= (1 << ​ena) (1 << ​enb) | (1 << led); 
-  pinMode(in3, OUTPUT)+  ​PORTB |= (1 << ​led);
-  pinMode(in4, OUTPUT); +
-  ​pinMode(ena, OUTPUT)+
-  pinMode(enb, OUTPUT); +
-  ​pinMode(led,OUTPUT);+
   analogWrite(ena,​ 0);   analogWrite(ena,​ 0);
   analogWrite(enb,​ 0);   analogWrite(enb,​ 0);
 +
   lcd.init();   lcd.init();
   lcd.backlight();​   lcd.backlight();​
   lcd.setCursor(1,​ 0);   lcd.setCursor(1,​ 0);
   lcd.print("​SPEED IS 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.
 +
 +**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 > <note tip >
 void loop() { void loop() {
Line 147: Line 167:
     else if (value == '​M'​ || value == '​N'​)     else if (value == '​M'​ || value == '​N'​)
     {     {
-        ​digitalWrite(led, LOW);+        ​PORTB &= ~(1 << ​led);
     }     }
      else if (value == '​m'​ || value == '​n'​)      else if (value == '​m'​ || value == '​n'​)
     {     {
-        ​digitalWrite(led,HIGH ); +        ​PORTB |= (1 << ​led); 
-    } +    } 
 +    ​
   }   }
 +}
 </​note>​ </​note>​
 +Funcțiile **“Forward()“,​“BACK()“ ,​“LEFT()“,​ “RIGHT()“ și “STOP()“** sunt responsabile de controlul mișcării masinii.
 <note tip> <note tip>
 void Forward() { void Forward() {
-  ​digitalWrite(in1, HIGH)+  ​PORTD |= (1 << ​in1) (1 << in3); 
-  digitalWrite(in2, LOW); +  ​PORTD &= ~((1 << in2(1 << ​in4));
-  ​digitalWrite(in3, HIGH)+
-  digitalWrite(in4, LOW);+
 } }
  
 void Back() { void Back() {
-  ​digitalWrite(in1, LOW)+  ​PORTD |= (1 << in2(1 << in4); 
-  digitalWrite(in2, HIGH); +  ​PORTD &= ~((1 << in1) | (1 << ​in3));
-  ​digitalWrite(in3, LOW)+
-  digitalWrite(in4,​ HIGH);+
 } }
  
 void Left() { void Left() {
-  ​digitalWrite(in1, HIGH); +  ​PORTD |= (1 << ​in1) | (1 << in4); 
-  ​digitalWrite(in2, LOW)+  ​PORTD &= ~((1 << ​in2) (1 << ​in3));
-  digitalWrite(in3, LOW)+
-  digitalWrite(in4,​ HIGH);+
 } }
  
 void Right() { void Right() {
-  ​digitalWrite(in1,​ LOW); +  ​PORTD |= (1 << ​in2) (1 << ​in3); 
-  digitalWrite(in2, HIGH)+  ​PORTD &= ~((1 << in1) | (1 << ​in4));
-  digitalWrite(in3, HIGH); +
-  ​digitalWrite(in4, LOW);+
 } }
 +
 void Stop() { void Stop() {
-  ​digitalWrite(in1, LOW)+  ​PORTD &= ~((1 << ​in1) (1 << ​in2) (1 << ​in3) (1 << ​in4));
-  digitalWrite(in2, LOW)+
-  digitalWrite(in3, LOW)+
-  digitalWrite(in4, LOW);+
 } }
 +
 </​note>​ </​note>​
  
Line 195: Line 209:
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +https://​drive.google.com/​file/​d/​1ADtn8xu3hT9tyJ2f52uw-6Ngnt1La_3Z/view?​usp=drive_link
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +
-</note> +
 ===== Concluzii ===== ===== 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 ===== ===== Download =====
 +{{:​pm:​prj2024:​vstoica:​proiect_pm.zip|}}
  
-<note warning>​ +===== Bibliografie/​Resurse =====
-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**. +**Resurse Software**
-</​note>​+  ​* **Arduino Libraries** 
 +  ​* **LiquidCrystal_I2C Library Documentation** 
 +  ​* **Wire Library Documentation**
  
-===== Jurnal ===== +**Resurse Hardware**: 
- +  * **Datasheet Arduino Uno** 
-<note tip> +  * **Datasheet L298N Motor Driver** 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. +  * **Datasheet HC-05** 
-</note> +  * **https://www.youtube.com/​watch?​v=CvqHkXeXN3M** 
- +  * **https://​www.youtube.com/​watch?​v=bNZv3dZpmSU** 
-===== Bibliografie/Resurse ====+  ​* **https://www.youtube.com/​watch?​v=ykgt4v7_4y4** 
- +  * **https://​www.youtube.com/​watch?​v=E2sTbpFsvXI**
-<​note>​ +
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. +
-</note>+
  
 <​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.1716032289.txt.gz · Last modified: 2024/05/18 14:38 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