This shows you the differences between two versions of the page.
|
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 |3 | [[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 |4 | [[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]] | ||