The Bomb

Nume: Buciu Cosmin

Grupă: 333CA

Introducere

Ce face proiectul?

Proiectul constă în realizarea unui dispozitiv electronic interactiv care simulează sistemul de armare al unei bombe, inspirat din mecanicile jocurilor tactice. Utilizatorul interacționează cu o tastatură numerică pentru a introduce un cod de securitate format din 7 cifre. Odată ce codul este validat, sistemul pornește o numărătoare inversă afișată în timp real pe un ecran LCD. În această fază, utilizatorul poate încerca dezamorsarea prin menținerea apăsată a unui buton timp de 5 secunde, acțiune care generează un sunet electronic secundar, intercalat simultan peste bipurile de alertă ale bombei, indiferent de timpul rămas.

Pe durata cronometrării, un buzzer pasiv emite semnale sonore scurte (bip-uri) care se accelerează pe măsură ce timpul expiră, crescând tensiunea. În final, dacă timpul se scurge complet, sistemul semnalează „explozia” prin avertizări sonore continue și prin feedback vizual (mesaj de alertă pe ecran și schimbarea stării LED-ului RGB).

Care este scopul lui?

Scopul principal este crearea unui joc de strategie și dexteritate sub presiune, care să demonstreze cum un microcontroler poate gestiona procese secvențiale și simultane. Sistemul trebuie să preia și să valideze un cod de la tastatură, iar ulterior să declanșeze o stare de alertă în care rulează un Timer pentru cronometrarea precisă. În această a doua fază, microcontrolerul trebuie să actualizeze constant informația pe ecranul I2C și să genereze semnale PWM pentru buzzer în mod sincronizat cu timpul rămas și să proceseze asincron procesul de dezamorsare prin buton și suprapunerea audio aferentă, fără a bloca execuția programului. Este un exercițiu de logică aplicată unde dispozitivul trece prin stări diferite și oferă feedback instantaneu utilizatorului.

Care a fost ideea de la care am pornit?

Ideea mi-a venit inspirându-mă din jocurile video de tip shooter, unde există mecanica de a introduce un cod pentru a activa un anumit obiect dar și cea de dezamorsare contracronometru. Mi-am dorit să aduc acest element virtual în lumea reală, folosind componente electronice accesibile. De asemenea, am vrut să văd dacă pot reproduce acea interacțiune folosind un buzzer pasiv și un ecran LCD, transformând o funcție software de verificare a unei parole într-un montaj fizic pe care utilizatorul îl poate opera prin apăsarea tastelor.

De ce este util proiectul?

Utilitatea proiectului constă în exemplificarea modului în care un microcontroler poate implementa un sistem de securitate de bază, integrând controlul accesului prin parolă cu avertizări sonore și vizuale. Dispozitivul servește ca un model practic pentru înțelegerea proceselor de monitorizare în timp real și a modului în care un automat de stări poate gestiona corect trecerea de la faza de autentificare la cea de monitorizare contracronometru și de întrerupere hardware a alertei în condiții de multitasking electronic.

Descriere generală

Schema bloc

Descrierea Arhitecturii Sistemului

Proiectul este construit pe o arhitectură de tip Input-Process-Output, având la bază placa de dezvoltare Arduino Uno (echipată cu microcontrolerul ATmega328P). Fluxul de date este gestionat între următoarele module:

  • Unitatea de Procesare (Logica Centrală): Reprezintă componenta software care rulează pe placă. Aceasta validează codul de acces și gestionează tranziția între stările sistemului folosind timerele interne pentru precizia cronometrării.
  • Modulul de Input (Keypad & Buton): Permite utilizatorului introducerea parolei prin keypad (GPIO) și resetarea instantanee a codului în faza inițială sau dezamorsarea sistemului în faza de alertă, prin acționarea unui buton dedicat.
  • Modulul de Output Vizual (LCD & LED RGB): Oferă feedback vizual prin două căi: ecranul LCD afișează timpul via protocol I2C, în timp ce LED-ul RGB semnalizează stările prin pini GPIO / PWM dedicați.
  • Modulul de Output Audio (Buzzer): Generează alerte sonore variabile folosind semnale PWM, controlate în timp real în funcție de cronometru.
  • Interfața de Comunicare (PC): Realizată prin conexiune USB, aceasta asigură alimentarea electrică și permite monitorizarea datelor prin Serial Monitor pentru depanarea codului.

Hardware Design

Bill of Materials

Componentă Cantitate Link Preț unitar (RON)
Placă dezvoltare Arduino UNO ATmega 328P 1 Link30.93
Display LCD 1602 1 Link 13.99
Modul interfață I2C 1 Link 9.99
Buzzer pasiv 1 Link 2.99
Breadboard 1 Link 13.99
Tastatură matricială rigidă 3×4 1 Link 17.99
LED RGB 1 Link1.51
Buton 1 Link 2.99
Rezistențe 3 Link19.99 (1 set)
Fire Dupont Tată-Tată 20cm 20 Link8.99 (1 set)
Fire Dupont Tată-Mamă 20cm 4 Link6.99 (1 set)
Preț total 123.36 RON

Funcționalitatea Componentelor

Componentă Rol în proiect
LCD 1602 Afișează instrucțiunile, feedback-ul pentru cod și rezultatul accesului
Tastatură 3×4 Permite introducerea numerică a codului și gestionarea software a datelor introduse
Buzzer Pasiv Emite tonuri distincte pentru validarea tastării, succes sau eroare
Buton Resetează instantaneu codul introdus în faza de repaus sau declanșează procesul de dezamorsare (defuse) în faza de alertă, acționând prin intermediul unei întreruperi hardware externe
LED RGB Semnalizarea optică a stării sistemului
Rezistențe de 220 Ω Protejarea diodelor LED prin limitarea curentului electric la valori sigure

Schema electrică

Pinout

Componentă Pin Arduino Tip Pin Utilitate
LCD 1602 A4 (SDA) Date I2C Transmite datele text către ecran
LCD 1602 A5 (SCL) Clock I2C Sincronizează transmisia datelor între Arduino și LCD
Tastatură matricială 3×4 4, 6, 8 Digital Conectați la coloanele tastaturii
Tastatură matricială 3×4 3, 5, 7, 13 Digital Conectați la rândurile tastaturii
Buton 2 PCINT Declanșează întreruperea hardware pentru resetare sau dezamorsare
LED RGB (Red) 9 PWM Permite controlul intensității pentru culoarea Red
LED RGB (Green) 10 PWM Permite controlul intensității pentru culoarea Green
LED RGB (Blue) 11 PWM Permite controlul intensității pentru culoarea Blue
Buzzer pasiv 12 Digital Trimite semnalul sonor
Linie de Tensiune 5V Power Distribuie tensiunea de 5V către magistrala de alimentare pozitivă a componentelor (LCD, Buzzer, LED)
Referință (GND) GND Power Închide circuitul pentru toate componentele

Software Design

Mediu de dezvoltare: Arduino IDE → ales pentru simplitatea procesului de upload și integrarea rapidă a Serial Monitor-ului necesar pentru depanarea logicii de acces

Biblioteci utilizate:

  • 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 3×4, citirea input-ului și tratarea fenomenului de debounce (pentru a evita citirile false la apăsare)
  • 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

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

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

Jurnal

  • 27.04.2026 - Alegerea temei proiectului și confirmarea acestuia
  • 29.04.2026 - Comandarea pieselor necesare
  • 06.05.2026 - Crearea paginii ocw 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
  • 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

Resurse Hardware & Software

Export to PDF

pm/prj2026/victor.stoica0203/cosmin.buciu1904.txt · Last modified: 2026/05/23 12:38 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