Differences

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

Link to this comparison view

pm:prj2025:iotelea:bogdan.fratiman [2025/05/19 19:18]
bogdan.fratiman [Mini Barrier]
pm:prj2025:iotelea:bogdan.fratiman [2025/05/26 12:08] (current)
bogdan.fratiman
Line 40: Line 40:
   - Cabluri jumper   - Cabluri jumper
 </​note>​ </​note>​
 +
 +{{:​pm:​prj2025:​iotelea:​barrier_down.jpg?​300|}} ​ {{:​pm:​prj2025:​iotelea:​barrier_up.jpg?​300|}}
  
 === Schema electrică === === Schema electrică ===
 {{:​pm:​prj2025:​iotelea:​bogdan-schema-electrica.png?​700|}} {{:​pm:​prj2025:​iotelea:​bogdan-schema-electrica.png?​700|}}
-<note tip> +
-Aici puneţi tot ce ţine de hardware design: +
-  * listă de piese +
-  * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri,​ e.g. http://​www.captain.at/​electronic-atmega16-mmc-schematic.png) +
-  * diagrame de semnal  +
-  * rezultatele simulării +
-</​note>​+
  
  
Line 56: Line 52:
  
 <note tip> <note tip>
-Descrierea codului aplicaţiei (firmware):​ +**Mediu ​de dezvoltare:** Arduino IDE 8-O 
-  ​mediu de dezvoltare ​(if any) (e.g. AVR Studio, CodeVisionAVR) + 
-  librării şi surse 3rd-party ​(e.g. Procyon AVRlib) +**Librării şi surse 3rd-party:** ''​LiquidCrystal_I2C.h''​ - pentru interfața I2C a LCD-ului 
-  algoritmi ​şi structuri ​pe care plănuiţsă le implementaţ+ 
-  (etapa 3) surse şi funcţii implementate+**Algoritmi ​şi structuri:** Structura sistemului este asemănătoare unui state machine cu 4 stări: ''​IDLE'',​ ''​CAR_IN'',​ ''​CAR_OUT''​ ș''​FULL'',​ determinate de distanța măsurată șstarea butonului, tratat ca întrerupere externă. Controlul servomotorului se face prin generarea unui semnal PWM folosind Timer1, configurat in mod fast PWM cu TOP = ICR1. 
 + 
 +**Surse ​şi funcţii implementate:**  
 +   * ''​setup()''​ - Inițializează toate perifericele și configurează Timer1 în mod Fast PWM (WGM13:0 = 14) cu TOP = ICR1 = 40000, pentru a genera un semnal PWM de 50 Hz pe pinul OC1A (pin 9), cu un prescaler de 8, potrivit pentru servomotorul SG90: 
 +    <code java> 
 +TCCR1A = (1 << WGM11); 
 +TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS11); 
 + 
 +ICR1 = 40000; 
 +TCCR1A |= (1 << COM1A1); 
 +</​code>​ 
 +   * ''​setServoAngle(int angle)''​ - Primește un unghi între 0° și 180°, îl convertește într-un impuls PWM între 750 și 2300 µs, apoi setează valoarea în OCR1A: 
 +<code java> 
 +int pulseWidth = map(angle, 0, 180, 750, 2300); 
 +OCR1A = pulseWidth * 2; 
 +</​code>​ 
 +   * ''​handleButtonPress()''​ - Activează rutina de întrerupere pentru buton setând flag-ul ''​buttonPressed''​. 
 +<code java> 
 +attachInterrupt(digitalPinToInterrupt(buttonPin),​ handleButtonPress,​ RISING); 
 +    </​code>​ 
 +   * ''​loop()''​ - Bucla principală a programului. Se ocupă de: 
 +      * măsurarea distanței cu senzorul HC-SR04 
 +<code java> 
 +      digitalWrite(trigPin,​ LOW); 
 +      delayMicroseconds(2);​ 
 +      digitalWrite(trigPin,​ HIGH); 
 +      delayMicroseconds(10);​ 
 +      digitalWrite(trigPin,​ LOW); 
 + 
 +      long duration = pulseIn(echoPin,​ HIGH); 
 +      float distance = duration * 0.034 / 2; 
 +</​code>​ 
 +      * actualizarea ecranului LCD 
 +      * verificarea stării butonului 
 +      * acționarea barierei prin apeluri la ''​setServoAngle(...)''​
 </​note>​ </​note>​
  
Line 66: Line 96:
  
 <note tip> <note tip>
-Care au fost rezultatele obţinute în urma realizării proiectului vostru.+Link Youtube: 
 + 
 +https://​youtube.com/​shorts/​j4JR8kcPbFc?​feature=share 
 </​note>​ </​note>​
  
 ===== Concluzii ===== ===== Concluzii =====
  
-===== Download ===== +Proiectul **Mini Barrier** integrează mai multe componente hardware într-un sistem funcțional, de la controlul unui servomotor fără a folosi librăria Servo.h, prin configurarea directă a Timer-ului 1 în mod Fast PWM, până la tratarea butonului prin întrerupere externă și afișarea informațiilor ​pe un ecran LCD folosind ​protocolul I2C. 
- +Implementarea a demonstrat o aplicare practică a noțiunilor ​de bază din programarea microcontrolerelorprecum și modul în care acestea pot fi combinate într-o aplicație reală și interactivă.
-<note warning>​ +
-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 ChangeLogun 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 Alin331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. +
-</​note>​+
  
 ===== Jurnal ===== ===== Jurnal =====
  
 <note tip> <note tip>
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.+**M1 – Documentație** - Am început redactarea paginii de OCW prin completarea următoarelor secțiuni: descriere, introducere,​ schema bloc șlista/​descrierea componentelor hardware. 
 + 
 +**M2 – Hardware** - Am adăgat schema electrică pe pagina de wiki și am realizat montajul parțial al proiectului atât hardware cât și software: LED-uri, buton, LCD. 
 + 
 +**M3 - Software** - Am completat montajul și după ce m-am asigurat că toate componentele funcționează și logica state machine-ului este corectă am aplicat cunoștințele din laboratoare:​ Timer1 cu Fast PWM pentru servo, întreruperi pentru buton, I2C pentru LCD.
 </​note>​ </​note>​
  
Line 89: Line 121:
 <​note>​ <​note>​
 Repo Github: https://​github.com/​bogdiw/​mini-barrier Repo Github: https://​github.com/​bogdiw/​mini-barrier
 +</​note>​
 +
 +<note important>​
 +Resurse utilizate:
 +
 +https://​forum.arduino.cc/​t/​controlling-a-single-servo-using-pwm-and-timer-1/​491621
 +
 +https://​www.youtube.com/​watch?​v=aQy3DGSIGm4
 </​note>​ </​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/prj2025/iotelea/bogdan.fratiman.1747671510.txt.gz · Last modified: 2025/05/19 19:18 by bogdan.fratiman
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