Differences

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

Link to this comparison view

pm:prj2026:victor.stoica0203:cosmin.buciu1904 [2026/05/18 12:19]
cosmin.buciu1904 [Descrierea Arhitecturii Sistemului]
pm:prj2026:victor.stoica0203:cosmin.buciu1904 [2026/05/23 12:38] (current)
cosmin.buciu1904 [Jurnal]
Line 54: Line 54:
 | LED RGB                                 | 1     | [[https://​sigmanortec.ro/​LED-RGB-5mm-4-pini-Anod-comun-p126008495| Link]]|1.51 | | LED RGB                                 | 1     | [[https://​sigmanortec.ro/​LED-RGB-5mm-4-pini-Anod-comun-p126008495| Link]]|1.51 |
 | Buton                              | 1     | [[https://​www.bitmi.ro/​electronica/​modul-buton-switch-ky-004-10672.html| Link]] |2.99        | | Buton                              | 1     | [[https://​www.bitmi.ro/​electronica/​modul-buton-switch-ky-004-10672.html| Link]] |2.99        |
-| Fire Dupont Tată-Tată 20cm               |TBD    | [[https://​www.bitmi.ro/​electronica/​40-x-fire-dupont-tata-tata-20cm-10511.html| Link]]|0.23+| Rezistențe ​                         |3    | [[https://​www.bitmi.ro/​electronica/​set-rezistori-20-de-valori-400-bucati-10-10m-1-4w-11255.html| Link]]|19.99 (1 set)         | 
-Rezistențe ​                         ​|   | [[https://​www.bitmi.ro/​electronica/​set-rezistori-20-de-valori-400-bucati-10-10m-1-4w-11255.html| Link]]|0.10         |+| Fire Dupont Tată-Tată 20cm               |20    | [[https://​www.bitmi.ro/​electronica/​40-x-fire-dupont-tata-tata-20cm-10511.html| Link]]|8.99 (1 set)
 +Fire Dupont Tată-Mamă 20cm               |   | [[https://​www.bitmi.ro/​electronica/​40-x-fire-dupont-tata-mama-20cm-10512.html| Link]]|6.99 (1 set)|
 ^ Preț total ^ ^ ^ 123.36 RON ^ ^ Preț total ^ ^ ^ 123.36 RON ^
  
Line 92: Line 93:
  
 **Biblioteci utilizate:​** **Biblioteci utilizate:​**
-  * **LiquidCrystal_I2C:​** ​Utilizată pentru controlul afișajului LCD prin protocolul I2C, permițând gestionarea mesajelor pe cele două linii ale ecranului+  * **LiquidCrystal_I2C:​** ​utilizată pentru controlul afișajului LCD prin protocolul I2C, permițând gestionarea mesajelor pe cele două linii ale ecranului
  
-  * **Keypad:​** ​Permite ​gestionarea matricei de taste 3x4, citirea input-ului și tratarea fenomenului de debounce (pentru a evita citirile false la apăsare)+  * **Keypad:​** ​permite ​gestionarea matricei de taste 3x4, citirea input-ului și tratarea fenomenului de debounce (pentru a evita citirile false la apăsare)
  
-  * **Wire:​** ​Biblioteca ​standard pentru comunicația I2C+  * **Wire:​** ​biblioteca ​standard pentru comunicația I2C 
 + 
 +**Elementul de noutate al proiectului:​** constă în reproducerea fizică a unei mecanice competitive de e-sports (defuse contracronometru) într-un sistem embedded bazat pe stări. Noutatea constă în multitasking-ul audio: suprapunerea dinamică a două fluxuri sonore independente (bip-ul bombei și ticăitul de defuse) pe un singur buzzer, fără a deforma unda PWM principală. 
 + 
 +**Justificarea utilizării funcționalităților din laborator:​** 
 +  * **Timer 1 în mod Fast PWM** (Laborator Timere/​PWM):​ configurează Timerul 1 în Modul 14 (prescaler de 8) pentru a genera frecvențe audio flexibile pe buzzer, menținând un Duty Cycle fix de 50%. 
 + 
 +  * **Timer 2 în mod CTC** (Laborator Timere/​PWM):​ configurat pe 8 biți cu prescaler de 64 -> generează o întrerupere la fiecare 1 ms, înlocuind complet funcția software standard millis(). 
 + 
 +  * **Întreruperi Hardware Pin Change** (Laborator Întreruperi):​ activate prin regiștrii PCICR și PCMSK2 pe Pinul 2 -> permit citirea asincronă a butonului pentru reset/​defuse instantaneu,​ fără blocarea procesorului. 
 + 
 +  * **Manipulare Directă a Porturilor** (Laborator GPIO): utilizarea regiștrilor DDRB, DDRD, PORTB și PORTD elimină latențele funcțiilor Arduino, permițând comutarea LED-ului RGB într-un singur ciclu de ceas. 
 + 
 +**Scheletul proiectului și interacțiunea funcționalităților:​** programul este structurat ca un Automat de Stări Finit (FSM) rulat în loop() printr-un bloc "​switch-case":​ 
 + 
 +  * **B_IDLE:** scanează tastatura pentru stocarea codului, oferă opțiunea de mascare a caracterelor (Hidden / Visible Mode) înainte de armare și gestionează întreruperea de reset. 
 + 
 +  * **B_ARMED:​** monitorizează decrementarea cronometrului,​ sincronizează pulsațiile LED-ului RGB și, la detectarea asincronă a apăsării butonului, randează progresul dezamorsării pe ecran în paralel cu generarea sunetului secundar intercalat. 
 + 
 +  * **B_EXPLODED / B_DEFUSED:​** reprezintă stările terminale în care sistemul rulează secvențele audio-vizuale de final (zgomot alb bazat pe frecvențe aleatorii sau melodie de succes), după care reinițializează automat toate variabilele pentru revenirea în starea inițială. 
 + 
 +**Calibrarea perifericelor și sincronizarea I/O:** 
 + 
 +  * **Stabilizarea electrică a intrării:​** calibrarea butonului s-a realizat prin activarea hardware a rezistenței interne de Pull-Up a microcontrolerului,​ fixând o stare stabilă de HIGH în repaus și eliminând zgomotul de fond (efectul de pin flotant). 
 + 
 +  * **Sincronizarea progresului vizual:** calibrarea barei de defuse s-a efectuat prin corelarea timpului fizic de acționare (5 secunde) cu densitatea de pixeli a ecranului. Împărțirea simetrică a intervalului la cele 7 caractere ale codului a determinat o rată de eșantionare de exact 714 ms per segment, asigurând o actualizare fluidă și liniară pe LCD. 
 + 
 +**Optimizări arhitecturale realizate:​** 
 + 
 +  * **Optimizare de timp (Hardware Multitasking):​** înlocuirea totală a funcției software standard millis() cu un ceas intern generat pe baza Timerului 2. Prin mutarea contorului direct într-o rutină de întrerupere hardware (ISR) la fiecare o milisecundă,​ s-a eliminat overhead-ul software și s-a redus masiv timpul de ocupare a procesorului. 
 + 
 +  * **Optimizare de calcul (Eficiență computațională):​** în cadrul algoritmului de generare a frecvențelor PWM pentru buzzer, operațiile matematice costisitoare (înmulțiri și împărțiri repetitive de numere mari) au fost simplificate direct prin constante pre-calculate hardware în cod. Astfel, procesorul execută o singură operație aritmetică de bază per apel, salvând cicluri critice de ceas în momentele de alertă maximă (mai ales în ultimele 10 secunde până la explozie).
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
 +[[https://​youtube.com/​shorts/​4AbxcBFpYPQ|Video Proiect]]
 +
 +Materialul video prezintă funcționarea montajului fizic realizat pe placa Arduino Uno. Sunt ilustrate etapele de armare a sistemului prin tastatură, comportamentul alarmelor sonore și vizuale, precum și simularea procesului de dezamorsare contracronometru utilizând butonul hardware.
 ===== Concluzii ===== ===== Concluzii =====
 +Proiectul a demonstrat cu succes realizarea unui dispozitiv interactiv de simulare, utilizând eficient resursele hardware ale unei plăci de dezvoltare **Arduino Uno** (bazată pe microcontrolerul **ATmega328P**). Lucrarea a evidențiat faptul că o astfel de platformă accesibilă poate fi transformată dintr-un simplu kit de testare într-un sistem embedded rapid și stabil, capabil să ruleze o logică complexă în timp real.
  
 +Pe lângă dezvoltarea algoritmului de joc, proiectul a oferit o experiență practică valoroasă în structurarea codului și în sincronizarea proceselor. Cea mai importantă realizare a fost eliminarea completă a blocajelor software: actualizarea ecranului, scanarea tastelor și generarea alertelor sonore rulează fluid și simultan. Acest lucru garantează un răspuns instantaneu la acțiunile utilizatorului și demonstrează cum optimizarea atentă a programului permite obținerea unui multitasking real pe un hardware limitat.
 ===== Download ===== ===== Download =====
 +
 +  * {{:​pm:​prj2026:​victor.stoica0203:​bomb.zip|}}
 ===== Jurnal ===== ===== Jurnal =====
  
Line 110: Line 149:
   * 08.05.2026 - Finalizarea milestone-ului de documentație pentru proiect   * 08.05.2026 - Finalizarea milestone-ului de documentație pentru proiect
   * 11.05.2026 - Realizarea schemei electrice și a pinout-ului pentru milestone-ul hardware   * 11.05.2026 - Realizarea schemei electrice și a pinout-ului pentru milestone-ul hardware
 +  * 19.05.2026 - Finalizarea codului în Arduino IDE și validarea funcționalităților pe hardware 
 +  * 22.05.2026 - Actualizarea paginii cu detalii de Software Design 
 +  * 23.05.2026 - Atașare videoclip și finalizarea paginii corespunzătoare proiectului meu
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-**Resurse Software**+**Resurse ​Hardware & Software**
   * Laboratoarele PM   * Laboratoarele PM
   * [[https://​ww1.microchip.com/​downloads/​en/​DeviceDoc/​Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf|Datasheet ATmega328P]]   * [[https://​ww1.microchip.com/​downloads/​en/​DeviceDoc/​Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf|Datasheet ATmega328P]]
pm/prj2026/victor.stoica0203/cosmin.buciu1904.1779095945.txt.gz · Last modified: 2026/05/18 12:19 by cosmin.buciu1904
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