Differences

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

Link to this comparison view

pm:prj2026:cezar.zlatea:daniel.brinza [2026/05/09 13:09]
daniel.brinza
pm:prj2026:cezar.zlatea:daniel.brinza [2026/05/15 20:36] (current)
daniel.brinza
Line 7: Line 7:
 ===== Introducere ===== ===== Introducere =====
  
-SentinelGuard este un sistem de alarmă inteligent construit în jurul plăcii ​ATmega328P Xplained Mini. Sistemul monitorizează mai multe tipuri de evenimente relevante pentru securitatea unei camere: mișcare în zona protejată, fum sau gaze inflamabile,​ zgomote puternice și apropierea unei persoane de panoul alarmei. La detectarea unui eveniment suspect, sistemul reacționează local printr-un buzzer, afișează starea curentă pe un ecran TFT color și transmite mesaje de stare/debug prin UART către calculator.+SentinelGuard este un sistem de alarmă inteligent ​pe care l-am construit în jurul plăcii ​Arduino Uno. Sistemul monitorizează mai multe tipuri de evenimente relevante pentru securitatea unei camere: mișcare în zona protejată, fum sau gaze inflamabile,​ zgomote puternice și apropierea unei persoane de panoul alarmei. La detectarea unui eveniment suspect, sistemul reacționează local printr-un buzzer, afișează starea curentă pe un ecran TFT color și transmite mesaje de stare/debug prin UART către calculator.
  
-Scopul proiectului este integrarea mai multor periferice și protocoale de comunicație într-o aplicație embedded practică. Alarma nu este doar o demonstrație simplă cu un senzor, ci un sistem cu mai multe stări de funcționare,​ interfață grafică, evenimente marcate temporal și mai multe surse de intrare.+Scopul proiectului ​meu este integrarea mai multor periferice și protocoale de comunicație într-o aplicație embedded practică. Alarma nu este doar o demonstrație simplă cu un senzor, ci un sistem cu mai multe stări de funcționare,​ interfață grafică, evenimente marcate temporal și mai multe surse de intrare.
  
-Ideea proiectului a pornit de la un scenariu real: protejarea unei camere, a unui birou sau a unei zone restrânse cu un dispozitiv compact care poate detecta rapid mișcare, fum/gaz sau activitate neobișnuită. Din punct de vedere didactic, ​proiectul este util deoarece folosește ​GPIO, întreruperi externe, timere/PWM, ADC, UART, SPI și I2C în același firmware.+Ideea proiectului a pornit de la un scenariu real: protejarea unei camere, a unui birou sau a unei zone restrânse cu un dispozitiv compact care poate detecta rapid mișcare, fum/gaz sau activitate neobișnuită. Din punct de vedere didactic, ​am urmărit să folosesc ​GPIO, întreruperi externe, timere/PWM, ADC, UART, SPI și I2C în același firmware.
  
 ===== Descriere generală ===== ===== Descriere generală =====
  
-Sistemul este organizat în jurul microcontrolerului,​ care citește senzorii, actualizează starea alarmei și controlează interfața cu utilizatorul.+Am organizat ​sistemul ​în jurul microcontrolerului,​ care citește senzorii, actualizează starea alarmei și controlează interfața cu utilizatorul.
  
 Principalele stări de funcționare sunt: Principalele stări de funcționare sunt:
Line 25: Line 25:
   * ''​MENIU/​SETARI''​ - ecran pentru praguri, mod de armare și starea senzorilor.   * ''​MENIU/​SETARI''​ - ecran pentru praguri, mod de armare și starea senzorilor.
  
-Ecranul TFT este folosit ca interfață principală de afișare. Acesta afișează starea curentă a alarmei, ora curentă citită de la modulul RTC, ultimele evenimente și valorile senzorilor. Introducerea PIN-ului și navigarea prin meniu se vor face folosind tastatura matricială 4x4 din kit.+Am folosit ​ecranul TFT ca interfață principală de afișare. Acesta afișează starea curentă a alarmei, ora curentă citită de la modulul RTC, ultimele evenimente și valorile senzorilor.
  
 ==== Schemă bloc ==== ==== Schemă bloc ====
Line 31: Line 31:
 {{block_diagram_compact.png?​650|Schema bloc SentinelGuard}} {{block_diagram_compact.png?​650|Schema bloc SentinelGuard}}
  
-Schema ​bloc evidențiază ​fluxul principal al sistemului: senzorii trimit evenimente și valori către placa ATmega328P Xplained Mini, iar microcontrolerul actualizează interfața TFT, controlează buzzerul și transmite log-uri prin UART. Ecranul TFT este conectat ​printr-un convertor ​de nivel logic, deoarece placa lucrează la logică de 5V, iar ecranul este tratat ca dispozitiv de 3.3V. Fotorezistența apare în schemă ca modul opțional; aceasta poate fi eliminată din versiunea finală dacă proiectul devine prea aglomerat sau dacă nu este necesară pentru demonstrație.+În schema ​bloc se vede fluxul principal al sistemului: senzorii trimit evenimente și valori către placa Arduino Uno, iar microcontrolerul actualizează interfața TFT, controlează buzzerul și transmite log-uri prin UART. Ecranul TFT este conectat ​prin adaptare ​de nivel logic, deoarece placa lucrează la logică de 5V, iar ecranul este tratat ca dispozitiv de 3.3V.
  
 ==== Interacțiunea cu utilizatorul ==== ==== Interacțiunea cu utilizatorul ====
  
-  * Utilizatorul poate arma sau dezarma alarma folosind tastatura matricială 4x4. 
   * Sistemul afișează un dashboard cu ora curentă, starea alarmei și starea senzorilor.   * Sistemul afișează un dashboard cu ora curentă, starea alarmei și starea senzorilor.
   * Când un senzor este declanșat, ecranul evidențiază sursa evenimentului.   * Când un senzor este declanșat, ecranul evidențiază sursa evenimentului.
-  * Buzzerul generează ​modele sonore diferite în funcție de tipul alarmei.+  * Buzzerul generează ​semnalizare sonoră la depășirea pragurilor.
   * UART prin USB este folosit pentru log-uri, debug și comenzi în timpul dezvoltării și demonstrației.   * UART prin USB este folosit pentru log-uri, debug și comenzi în timpul dezvoltării și demonstrației.
  
Line 47: Line 46:
 | Întreruperi externe | Detectarea rapidă a mișcării de la senzorul PIR | | Întreruperi externe | Detectarea rapidă a mișcării de la senzorul PIR |
 | Timere / PWM | Modele sonore pentru buzzer și temporizări pentru stările alarmei | | Timere / PWM | Modele sonore pentru buzzer și temporizări pentru stările alarmei |
-| ADC | Citirea senzorului MQ-2, a tastaturii prin divizor rezistiv ​și opțional ​fotorezistenței/​senzorului de sunet |+| ADC | Citirea senzorului MQ-2 și a senzorului de sunet |
 | UART | Log-uri și comenzi prin conexiunea serială USB | | UART | Log-uri și comenzi prin conexiunea serială USB |
 | SPI | Comunicația cu ecranul TFT | | SPI | Comunicația cu ecranul TFT |
-| I2C | Comunicația cu modulul RTC DS3231 |+| I2C | Comunicația cu modulul RTC DS3231 ​/ DS1307 ​|
  
 ===== Design hardware ===== ===== Design hardware =====
Line 57: Line 56:
  
 ^ Componentă ^ Cantitate ^ Rol în proiect ^ Interfață ^ ^ Componentă ^ Cantitate ^ Rol în proiect ^ Interfață ^
-ATmega328P Xplained Mini | 1 | Controler principal | GPIO, ADC, UART, SPI, I2C |+Arduino Uno | 1 | Controler principal | GPIO, ADC, UART, SPI, I2C |
 | Breadboard | 1 | Realizarea prototipului | - | | Breadboard | 1 | Realizarea prototipului | - |
 | Fire jumper | multiple | Conectarea componentelor | - | | Fire jumper | multiple | Conectarea componentelor | - |
-| Ecran TFT SPI 2.8 inch, 240x320, ST7789V | 1 | Interfață grafică pentru stare, alerte și meniu | SPI | +| Ecran TFT SPI 2.8 inch, 240x320, ST7789V | 1 | Interfață grafică pentru stare, alerte și valori senzori ​| SPI | 
-Convertor ​de nivel logic cu 8 canale | 1 | Conversie semnale ​5V microcontroler la 3.3V pentru ​ecran SPI/GPIO prin level shifting ​+Divizoare rezistive 330R / 510R | 4 perechi | Adaptare ​de nivel logic 5V -> ~3V pentru ​liniile TFT | GPIO / SPI 
-| Senzor PIR HC-SR501 sau echivalent | 1 | Detectarea mișcării în zona protejată | Intrare digitală ​/ întrerupere ​|+| Senzor PIR HC-SR501 sau echivalent | 1 | Detectarea mișcării în zona protejată | Intrare digitală |
 | Modul senzor MQ-2 fum/gaz | 1 | Detectarea fumului și gazelor inflamabile | Intrare analogică | | Modul senzor MQ-2 fum/gaz | 1 | Detectarea fumului și gazelor inflamabile | Intrare analogică |
-| Modul RTC DS3231 | 1 | Păstrarea orei pentru log-uri | I2C |+| Modul RTC DS3231 ​/ DS1307 compatibil ​| 1 | Păstrarea orei pentru log-uri ​și afișare ​| I2C |
 | Baterie CR2032 | 1 | Backup pentru modulul RTC | - | | Baterie CR2032 | 1 | Backup pentru modulul RTC | - |
-| Buzzer pasiv | 1 | Sirenă ​cu tonuri diferite ​| PWM | +| Buzzer pasiv | 1 | Sirenă ​/ alertă sonoră ​| PWM / semnal digital ​
-| Modul senzor de sunet | 1 | Detectarea zgomotelor puternice | Intrare ​digitală/analogică |+| Modul senzor de sunet | 1 | Detectarea zgomotelor puternice | Intrare analogică |
 | Senzor ultrasonic HC-SR04 | 1 | Detectarea apropierii de panoul alarmei | GPIO + măsurare timp | | Senzor ultrasonic HC-SR04 | 1 | Detectarea apropierii de panoul alarmei | GPIO + măsurare timp |
-Fotorezistență ​0/1 | Modul opțional pentru măsurarea luminii ambientale; este posibil să nu fie inclus în versiunea finală | ADC | +Buton push-button ​| 1 | Oprire locală a sunetului / confirmare alarmă | Intrare digitală |
-| Rezistențe | multiple | Pull-up, divizoare de tensiune, limitare curent și citire tastatură | - | +
-| Tastatură matricială 4x4 | 1 | Introducere PIN | ADC prin divizor rezistiv ​|+
  
 ==== Placa de dezvoltare ==== ==== Placa de dezvoltare ====
  
-Proiectul folosește ​placa ATmega328P Xplained MiniAceasta include debugger/​programator integrat mEDBG, alimentare prin USB, Virtual COM Port pentru comunicație serială cu PC-ul și headere compatibile cu stilul Arduino. În configurația implicităplaca este alimentată prin USB, iar microcontrolerul funcționează la 5V și 16 MHz.+În implementarea actuală am folosit ​placa Arduino UnoAm ales-o deoarece este compatibilă cu modulele din kitoferă suficienți pini pentru etapa curentă a prototipului ​și permite dezvoltare rapidă în PlatformIO.
  
 Funcționalități ale plăcii folosite în proiect: Funcționalități ale plăcii folosite în proiect:
  
-  * mEDBG pentru programare și debugging fără programator extern; +  * interfață USB pentru ​alimentare ​și upload firmware
-  * Virtual COM Port pentru ​log-uri ​și comenzi UART+  * UART serial ​pentru ​debug
-  * pinii D0/D1 conectați la UART-ul microcontrolerului,​ păstrați ​pentru ​comunicația serială+  * SPI hardware ​pentru ecranul TFT; 
-  * pinii SPI D10-D13 ​pentru ecranul TFT; +  * I2C pentru modulul RTC; 
-  * pinii I2C A4/A5 pentru modulul RTC DS3231+  * ADC pentru MQ-și senzorul de sunet
-  * pinii analogici A0-A2 pentru senzori analogici, A2 fiind rezervat doar dacă se folosește fotorezistența opțională+  * GPIO pentru PIR, HC-SR04, buzzer ​și buton.
-  * pinul D13/PB5 este partajat cu LED-ul galben onboard D200 și cu semnalul SPI SCK.+
  
-==== Utilizare pini planificată ====+==== Stadiul actual al implementării hardware ​====
  
-Pinout-ul va fi ajustat în etapa de integrareînsă următoarea mapare este planul inițial pentru ATmega328P Xplained Mini.+În stadiul actualam realizat și am testat incremental prototipul hardware SentinelGuard pe placa Arduino Uno. Scopul acestei etape a fost să validez individual componentele și apoi să le integrez treptat într-un montaj unic.
  
-Modul ^ Semnal ^ Pin placă ^ Pin ATmega328P ^ Header ^ Observații ​+În acest moment, am conectat fizic și am testat următoarele module: 
-UART mEDBG RXD, TXD D0, D1 | PD0, PD1 J201 pin 1, J201 pin 2 | Folosit ​pentru ​Virtual COM Port; nu se alocă altor module ​+ 
-PIR HC-SR501 | OUT | D2 PD2 / INT0 | J201 pin 3 | Intrare cu întrerupere externă pentru detecție rapidă | +  * ecranul TFT SPI 2.8 inch ST7789V; 
-| Buzzer pasiv | SIG | D3 | PD3 / OC2B | J201 pin 4 | PWM prin Timer2, separat ​de Timer1 ​+  * senzorul ultrasonic HC-SR04; 
-| HC-SR04 TRIG D4 PD4 J201 pin 5 Impuls ​de trigger generat de microcontroler ​+  * buzzerul pasiv; 
-TFT backlight, opțional ​BL D6 PD6 / PWM J201 pin 7 Control luminozitate;​ poate fi legat fix dacă nu se controlează din software | +  * senzorul PIR; 
-TFT Display ​RST D7 PD7 J201 pin 8 Reset ecran, trecut prin level shifter ​+  * senzorul MQ-2; 
-| HC-SR04 | ECHO D8 PB0 J200 pin 1 Măsurare timp răspuns; poate fi citit prin GPIO/​timer ​+  * senzorul de sunet; 
-| TFT Display ​| DC | D9 | PB1 | J200 pin 2 | Data/​Command,​ trecut prin level shifter ​+  * modulul RTC DS3231 / DS1307 compatibil I2C; 
-| TFT Display ​| CS | D10 | PB2 / SS | J200 pin 3 | Chip select SPI, trecut prin level shifter ​+  * butonul de tip silence / acknowledge. 
-| TFT Display ​| MOSI | D11 | PB3 / MOSI | J200 pin 4 | Hardware SPI, trecut prin level shifter ​+ 
-| TFT Display ​| MISO | D12 | PB4 / MISO | J200 pin 5 | Hardware SPI; poate mâne nefolosit dacă afișajul nu trimite date spre MCU +Am realizat integrarea etapizat, deoarece proiectul conține multe periferice și există constrângeri reale legate de numărul de pini disponibili,​ nivelele logice și stabilitatea alimentării. În mod special, ecranul TFT a necesitat o atenție suplimentară,​ deoarece panoul funcționează pe logică de 3.3V, în timp ce microcontrolerul lucrează la 5V. 
-| TFT Display ​| SCK | D13 | PB5 / SCK | J200 pin 6 | Hardware SPI; partajat cu LED-ul onboard D200 + 
-| MQ-2 | AO | A0 | PC0 / ADC0 | J203 pin 1 | Citire analogică pentru fum/​gaz ​+În urma testelor, am observat că convertorul de nivel logic cu 8 canale disponibil în kit nu a oferit un comportament stabil pentru semnalele SPI ale display-ului. Din acest motiv, în montajul hardware real utilizat în prezentare am adoptat o soluție alternativă:​ divizoare rezistive pentru liniile SPI de ieșire ale microcontrolerului către TFT. Această soluție s-a dovedit stabilă și a permis funcționarea corectă a ecranului. 
-| Senzor sunet | AO | A1 | PC1 / ADC1 J203 pin 2 Citire analogică pentru prag de zgomot ​+ 
-Fotorezistență ​divizor tensiune ​A2 PC2 / ADC2 | J203 pin 3 | Opțională; poate fi eliminată din versiunea finală | +==== Componente folosite și rolul lor în proiect ==== 
-| Tastatură 4x4 | ieșire divizor rezistiv ​A3 PC3 / ADC3 | J203 pin 4 | Citire PIN prin ADCevită ocuparea ​8 pini GPIO | + 
-| RTC DS3231 | SDA | A4 / D18 | PC4 / SDA | J200 pin 9 / J203 pin 5 | Magistrală I2C | +Componentă ^ Rol în proiect ​
-RTC DS3231 | SCL | A5 / D19 | PC5 / SCL | J200 pin 10 / J203 pin 6 | Magistrală I2C |+Arduino Uno controler principal folosit pentru prototiparea și integrarea modulelor ​| 
 +TFT SPI 2.8 inch ST7789V ​interfață grafică ​pentru ​afișarea stării sistemului și a valorilor senzorilor ​
 +| HC-SR04 măsurarea distanței față de panoul alarmei / detectarea apropierii ​
 +| Buzzer pasiv | semnalizare acustică la depășirea pragurilor sau în starea ​de alarmă ​
 +PIR HC-SR501 detectarea mișcării în zona monitorizată ​| 
 +MQ-2 detectarea fumului / gazelor inflamabile prin ieșire analogică ​| 
 +| Senzor ​de sunet | detectarea zgomotelor puternice prin ieșire analogică ​
 +RTC DS3231 / DS1307 compatibil ​furnizarea orei curente pentru afișare și log-uri ​| 
 +Buton „Silence” ​confirmarea locală a alarmei sau dezactivarea soneriei ​| 
 + 
 +==== Pinii utilizați în implementarea actuală ==== 
 + 
 +Maparea de mai jos reflectă stadiul curent al montajului fizic pe care l-am realizat și al testelor efectuate:​ 
 + 
 +^ Modul ^ Semnal ^ Pin utilizat ^ 
 +PIR OUT D2 | 
 +Buzzer pasiv SIG | D3 
 +| HC-SR04 | TRIG D4 | 
 +Buton silence ​ieșire buton | D5 | 
 +| HC-SR04 | ECHO | D8 
 +| TFT ST7789V ​| DC | D9 | 
 +| TFT ST7789V ​| CS | D10 | 
 +| TFT ST7789V ​| MOSI / SDI | D11 | 
 +| TFT ST7789V ​| MISO / SDO | D12 (opțional, în unele teste a mas neutilizat) ​
 +| TFT ST7789V ​| SCK | D13 | 
 +| MQ-2 | AO | A0 | 
 +| Senzor ​de sunet | AO | A1 | 
 +RTC SDA | A4 
 +RTC SCL A5 | 
 + 
 +==== Explicația alegerii pinilor ==== 
 + 
 +  * Pinii D10-D13 au fost rezervați pentru interfața SPI hardware a ecranului TFT, deoarece aceștia oferă cea mai bună compatibilitate și cel mai bun debit pentru actualizarea ecranului. 
 +  * HC-SR04 folosește doi pini digitali separați: unul pentru impulsul de trigger și unul pentru măsurarea duratei ecoului. 
 +  * Buzzerul a fost conectat la D3, pin potrivit pentru generarea de semnal periodic. 
 +  * Senzorii analogici MQ-2 și modulul de sunet au fost conectați pe A0 și A1 pentru a permite citirea unor valori variabile și compararea lor cu praguri software. 
 +  * RTC-ul a fost conectat la A4/A5, deoarece aceștia reprezintă magistrala I2C standard pe Arduino Uno. 
 +  * Butonul de silence a fost conectat la D5 și configurat software cu rezistență internă de tip ''​INPUT_PULLUP'',​ astfel încât apăsarea butonului produce o tranziție la nivel LOW. 
 + 
 +==== Schema electrică și explicații ==== 
 + 
 +Am validat schema de principiu atât în simulator, cât și prin montaj fizic. În simulare am verificat traseele, interacțiunea dintre module și maparea pinilor, iar în montajul real am confirmat funcționalitatea și constrângerile practice. 
 + 
 +Un aspect important al implementării a fost conectarea ecranului TFT ST7789V. Deoarece acesta folosește logică de 3.3V, iar placa de control operează la 5V, am coborât liniile SPI de ieșire către ecran de la 5V la aproximativ 3V folosind divizoare rezistive. Pentru fiecare linie SPI critică am folosit următoarea structură:​ 
 + 
 +  * rezistență de 330 ohmi între pinul Arduino și nodul de semnal; 
 +  * rezistență de 510 ohmi între nodul de semnal și GND; 
 +  * nodul intermediar a fost conectat la pinul TFT corespunzător. 
 + 
 +Această soluție a fost aplicată pentru: 
 + 
 +  * SCK; 
 +  * MOSI / SDI; 
 +  * CS; 
 +  * DC. 
 + 
 +Pinii de alimentare ai ecranului au fost conectați astfel: 
 + 
 +  * VCC al modulului TFT la 5V, deoarece placa adaptor a display-ului include regulator onboard; 
 +  * GND la masa comună; 
 +  * LED și RESET la 3.3V, conform testelor hardware realizate. 
 + 
 +Toate modulele folosesc masă comună, iar alimentarea este distribuită prin breadboard. 
 + 
 +=== Simulare conexiuni === 
 + 
 +{{sentinelguard_simulation.png?​700|Simularea conexiunilor hardware în Wokwi}} 
 + 
 +Figura de mai sus prezintă schema de conectare pe care am validat-o în simulator. Am folosit simularea pentru verificarea mapării pinilor și pentru testarea logicii de integrare înaintea realizării montajului fizic. 
 + 
 +=== Montaj fizic curent === 
 + 
 +{{sentinelguard_real_setup.jpg?​700|Montajul fizic curent al prototipului SentinelGuard}} 
 + 
 +Figura de mai sus prezintă stadiul actual al montajului fizic. Se observă placa de dezvoltare, breadboard-ul central, ecranul TFT conectat ​prin divizoare rezistive și senzorii principali pe care i-am integrat în jurul sistemului. 
 + 
 +=== Dovadă de funcționare === 
 + 
 +În stadiul actual am validat funcționarea fiecărui modul hardware principal din proiect. Am verificat individual și în montaj real: 
 + 
 +  * senzorul ultrasonic HC-SR04; 
 +  * senzorul PIR; 
 +  * senzorul MQ-2; 
 +  * senzorul de sunet; 
 +  * buzzerul; 
 +  * modulul RTC; 
 +  * ecranul TFT. 
 + 
 +În imaginea montajului fizic se poate observa afișarea unei valori numerice pe ecran, ceea ce confirmă că interfațde afișare funcționează corect în hardware real. În plus, pe parcursul testelor am confirmat pentru fiecare modul următoarele:​ 
 + 
 +  * HC-SR04 transmite distanțe valide, iar valorile pot fi afișate live pe ecran; 
 +  * buzzerul reacționează corect la depășirea pragurilor configurate;​ 
 +  * senzorul PIR generează semnal la detectarea mișcării;​ 
 +  * MQ-2 oferă valori analogice care pot fi citite și comparate cu un prag software; 
 +  * senzorul de sunet oferă valori analogice utilizabile pentru detectarea zgomotelor puternice;​ 
 +  * modulul ​RTC poate furniza ora curentă prin magistrala ​I2C
 +  * ecranul TFT este inițializat corect și poate afișa valori și stări în timp real. 
 + 
 +Prin aceste teste am validat că fiecare senzor și fiecare periferic important din SentinelGuard este funcțional și poate fi integrat în firmware-ul comun al sistemului.
  
 ==== Considerații electrice ==== ==== Considerații electrice ====
  
-  * Placa cu microcontroler funcționează la logică de 5V, iar ecranul TFT va fi tratat ca dispozitiv logic de 3.3V. +  * Placa cu microcontroler funcționează la logică de 5V, iar ecranul TFT este tratat ca dispozitiv logic de 3.3V. 
-  * Semnalele SPI și semnalele de control ale ecranului ​vor trece prin convertorul de nivel logic cu 8 canale+  * Semnalele SPI și semnalele de control ale ecranului ​au fost adaptate hardware ​cu divizoare rezistive
-  * Placa ATmega328P Xplained Mini oferă alimentare prin USB și ieșire de 3.3V de la regulatorul onboard; consumul ecranului, mai ales pentru backlight, trebuie verificat înainte de alimentarea directă din pinul de 3.3V. +  * MQ-2 are nevoie de o perioadă de încălzire înainte ca valorile citite să devină stabile. 
-  * Pinii D0/D1 sunt rezervați pentru Virtual COM Port-ul mEDBG și pentru comunicația UART cu PC-ul. +  * Buzzerul este comandat de pe un pin digital; dacă în integrarea finală curentul devine insuficientse poate adăuga un tranzistor ​driver.
-  * Pentru ca Virtual COM Port-ul prin mEDBG să funcționeze corect, terminalul serial trebuie să activeze semnalul DTR. +
-  * Pinul D13/PB5 este folosit pentru SPI SCK și este partajat cu LED-ul galben onboard D200, deci LED-ul onboard nu va fi folosit ca indicator independent în timpul comunicației SPI. +
-  * Tastatura 4x4 va fi citită printr-un divizor rezistiv conectat la A3, astfel încât introducerea PIN-ului să nu ocupe 8 pini digitali. +
-  * Modulul DS3231 comunică prin I2C și va fi alimentat conform specificațiilor modulului. +
-  * Senzorul ​MQ-2 are nevoie de o perioadă de încălzire înainte ca valorile citite să devină stabile. +
-  * Buzzerul este comandat de pe un pin cu PWM. Dacă necesarul de curent este prea mareva fi adăugat un driver ​cu tranzistor.+
   * Toate modulele trebuie să aibă masă comună.   * Toate modulele trebuie să aibă masă comună.
  
Line 130: Line 218:
 | Mișcare detectată | PIR | Intrare în starea PRE_ALARMA sau ALARMA | | Mișcare detectată | PIR | Intrare în starea PRE_ALARMA sau ALARMA |
 | Prag fum/gaz depășit | MQ-2 | Intrare imediată în starea ALARMA | | Prag fum/gaz depășit | MQ-2 | Intrare imediată în starea ALARMA |
-| Zgomot puternic detectat | Senzor sunet | Intrare în PRE_ALARMA, cu prag configurabil | +| Zgomot puternic detectat | Senzor ​de sunet | Intrare în PRE_ALARMA, cu prag configurabil | 
-| Obiect apropiat de panou | Ultrasonic | Aprindere ​ecran sau stare de avertizare ​+| Obiect apropiat de panou | Ultrasonic | Afișare pe ecran și stare de avertizare |
-| Lumină ambientală scăzută | Fotorezistență opțională | Schimbare temă/​luminozitate ecran, doar dacă modulul rămâne în proiect ​|+
  
 ===== Design software ===== ===== Design software =====
  
-Firmware-ul ​va fi scris în C/C++ pentru ​microcontroler ​AVR. Implementarea va fi împărțită în module mici, astfel încât fiecare bloc hardware să poată fi testat separat înainte de integrarea completă.+Firmware-ul ​este scris în C pentru ​microcontrolerul ​AVR. Am împărțit ​implementarea pe etape, astfel încât fiecare bloc hardware să poată fi testat separat înainte de integrarea completă.
  
 ==== Mediu de dezvoltare ==== ==== Mediu de dezvoltare ====
  
-  * PlatformIO ​sau Arduino IDE pentru compilarea și încărcarea firmware-ului. +  * PlatformIO pentru compilarea și încărcarea firmware-ului; 
-  * Framework Arduino/​MiniCore sau configurație ​AVR compatibilă cu ATmega328P Xplained Mini. +  * toolchain ​AVR pentru ​Arduino Uno; 
-  * mEDBG onboard ​pentru ​programare și debugging prin USB. +  * monitor serial ​pentru log-uri și debug; 
-  * Virtual COM Port mEDBG pentru log-uri și comenzi UART. +  * simulator Wokwi pentru ​verificarea conexiunilor ​și a logicii hardware.
-  * Serial Monitor sau alt program de terminal cu DTR activat. +
-  * Fritzing/​KiCad/​draw.io ​pentru ​schema electrică ​și diagrame, dacă este nevoie.+
  
 ==== Module software planificate ==== ==== Module software planificate ====
  
 ^ Modul ^ Responsabilitate ^ ^ Modul ^ Responsabilitate ^
-| ''​sensors''​ | Citește PIR, MQ-2, senzorul de sunetsenzorul ultrasonic ​și, dacă este păstrată, fotorezistența opțională ​+| ''​sensors''​ | Citește PIR, MQ-2, senzorul de sunet și senzorul ultrasonic | 
-| ''​alarm_state''​ | Implementează stările DEZARMAT, ARMAT, PRE_ALARMA, ALARMA ​și MENIU +| ''​alarm_state''​ | Implementează stările DEZARMAT, ARMAT, PRE_ALARMA și ALARMA ​
-| ''​display_ui''​ | Desenează dashboard-ul TFTavertizările ​și meniurile ​+| ''​display_ui''​ | Desenează dashboard-ul TFT și avertizările | 
-| ''​rtc_time''​ | Citește data/ora din DS3231 ​și formatează timestamp-uri | +| ''​rtc_time''​ | Citește data/ora din RTC și formatează timestamp-uri | 
-| ''​serial_console''​ | Trimite log-uri ​și primește comenzi ​prin UART folosind Virtual COM Port-ul mEDBG +| ''​serial_console''​ | Trimite log-uri prin UART | 
-| ''​buzzer''​ | Generează ​modele sonore folosind timere/PWM | +| ''​buzzer''​ | Generează ​semnalizarea sonoră |
-| ''​input''​ | Procesează tastatura matricială 4x4 pentru PIN și comenzi de meniu |+
  
 ==== Algoritmul principal ==== ==== Algoritmul principal ====
Line 168: Line 252:
     citire senzori     citire senzori
     actualizare stare alarma     actualizare stare alarma
-    actualizare ​model buzzer+    actualizare buzzer
     actualizare ecran TFT cand apar schimbari     actualizare ecran TFT cand apar schimbari
     trimitere evenimente importante prin UART     trimitere evenimente importante prin UART
-    procesare input utilizator 
 </​code>​ </​code>​
  
Line 177: Line 260:
  
 ^ Comandă ^ Efect ^ ^ Comandă ^ Efect ^
-| ''​ARM''​ | Armează alarma | 
-| ''​DISARM 1234''​ | Dezarmează alarma dacă PIN-ul este corect | 
 | ''​STATUS''​ | Afișează starea curentă și valorile senzorilor | | ''​STATUS''​ | Afișează starea curentă și valorile senzorilor |
-| ''​THRESHOLD GAS 350''​ | Actualizează pragul pentru senzorul MQ-2 | 
 | ''​LOGS''​ | Afișează ultimele evenimente | | ''​LOGS''​ | Afișează ultimele evenimente |
  
 ===== Plan de implementare ===== ===== Plan de implementare =====
  
-Proiectul va fi implementat incremental,​ astfel încât fiecare componentă hardware să fie testată separat înainte de integrarea finală.+Am implementat ​proiectul ​incremental,​ astfel încât fiecare componentă hardware să fie testată separat înainte de integrarea finală.
  
 ^ Pas ^ Activitate ^ Metodă de validare ^ ^ Pas ^ Activitate ^ Metodă de validare ^
-| 1 | Alimentarea plăcii ​ATmega328P Xplained Mini și testarea UART prin mEDBG | Trimitere și recepție mesaje simple în Serial Monitor, cu DTR activ +| 1 | Alimentarea plăcii și testarea UART | Trimitere și recepție mesaje simple în Serial Monitor | 
-| 2 | Conectarea și testarea buzzerului | Generarea unor beep-uri simple ​folosind timer/​PWM ​+| 2 | Conectarea și testarea buzzerului | Generarea unor beep-uri simple | 
-| 3 | Conectarea senzorului PIR | Afișarea evenimentelor de mișcare prin UART și testarea întreruperii ​|+| 3 | Conectarea senzorului PIR | Afișarea evenimentelor de mișcare prin UART |
 | 4 | Conectarea senzorului MQ-2 | Citirea valorilor ADC și stabilirea unui prag de fum/gaz | | 4 | Conectarea senzorului MQ-2 | Citirea valorilor ADC și stabilirea unui prag de fum/gaz |
-| 5 | Conectarea modulului RTC DS3231 ​| Citirea datei și orei prin I2C | +| 5 | Conectarea modulului RTC | Citirea datei și orei prin I2C | 
-| 6 | Conectarea ecranului TFT prin level shifter ​| Afișarea unui ecran de pornire ​și a dashboard-ului ​|+| 6 | Conectarea ecranului TFT | Afișarea unui ecran de test și a valorilor live |
 | 7 | Adăugarea senzorului de sunet și a senzorului ultrasonic | Afișarea valorilor și a stărilor pe ecran | | 7 | Adăugarea senzorului de sunet și a senzorului ultrasonic | Afișarea valorilor și a stărilor pe ecran |
-| 8 | Implementarea automatului de stări al alarmei | Testarea tranzițiilor ​DEZARMAT, ARMAT, PRE_ALARMA, ALARMA ​+| 8 | Implementarea automatului de stări al alarmei | Testarea tranzițiilor ​între stări ​
-| 9 | Adăugarea introducerii PIN-ului prin tastatura matricială 4x4 | Armare/​dezarmare din interfața utilizatorului | +| 9 | Integrare finală și demo | Declanșarea fiecărui senzor și verificarea ecranului, buzzerului și UART |
-| 10 | Integrare finală și demo | Declanșarea fiecărui senzor și verificarea ecranului, buzzerului și log-urilor ​UART |+
  
 ===== Rezultate așteptate ===== ===== Rezultate așteptate =====
Line 208: Line 287:
   * interfață grafică clară pe ecranul TFT;   * interfață grafică clară pe ecranul TFT;
   * evenimente marcate cu ora curentă;   * evenimente marcate cu ora curentă;
-  * comportament configurabil pentru armare/​dezarmare;​ 
   * integrarea mai multor protocoale de comunicație într-un singur sistem embedded.   * integrarea mai multor protocoale de comunicație într-un singur sistem embedded.
  
 ===== Concluzii ===== ===== Concluzii =====
  
-Acest proiect ​reprezintă o metodă practică de a combina ​senzori, protocoale de comunicație și interfață grafică pe un microcontroler cu resurse limitate. Principala provocare ​este integrarea tuturor modulelor astfel încât firmware-ul să rămână responsiv, iar memoria să fie folosită eficient. Ecranul TFT și numărul mare de senzori cresc dificultatea proiectului,​ dar fac demonstrația finală mult mai relevantă decât o alarmă bazată pe un singur senzor.+Prin acest proiect ​am urmărit să combin ​senzori, protocoale de comunicație și interfață grafică pe un microcontroler cu resurse limitate. Principala provocare ​a fost integrarea tuturor modulelor astfel încât firmware-ul să rămână responsiv, iar memoria să fie folosită eficient. Ecranul TFT și numărul mare de senzori cresc dificultatea proiectului,​ dar fac demonstrația finală mult mai relevantă decât o alarmă bazată pe un singur senzor.
  
 ===== Cod sursă și alte resurse ===== ===== Cod sursă și alte resurse =====
Line 225: Line 303:
 ^ Dată ^ Progres ^ ^ Dată ^ Progres ^
 | 09 mai 2026 | Alegerea temei: SentinelGuard - sistem de alarmă inteligent multi-senzor. A fost redactată documentația inițială și lista de componente. | | 09 mai 2026 | Alegerea temei: SentinelGuard - sistem de alarmă inteligent multi-senzor. A fost redactată documentația inițială și lista de componente. |
-DE_COMPLETAT ​Componentele ​hardware ​au fost comandate ​și verificate. | +13 mai 2026 Am realizat conectarea componentelor ​hardware ​pe breadboard ​și am început testarea lor incrementală. | 
-DE_COMPLETAT ​Senzorii au fost testați individual pe breadboard. | +14 mai 2026 Am adus ecranul TFT în stare funcțională în hardware real, folosind divizoare rezistive pentru adaptarea semnalelor SPI. | 
-DE_COMPLETAT ​Ecranul TFT și modulul RTC au fost integrate. | +15 mai 2026 Am integrat senzorii validați cu afișare live pe ecran și alertă sonoră prin buzzer. | 
-| DE_COMPLETAT | Automatul de stări al alarmei ​și demo-ul final au fost implementate. |+| DE_COMPLETAT | Integrarea dashboard-ului final, afișarea simultană a tuturor senzorilor, actualizarea în timp real a valorilor ​și implementarea logicii complete de alarmă. |
  
 ===== Bibliografie / Resurse ===== ===== Bibliografie / Resurse =====
Line 234: Line 312:
   * [[https://​ocw.cs.pub.ro/​courses/​pm/​prj2026|Pagina proiecte PM 2026]]   * [[https://​ocw.cs.pub.ro/​courses/​pm/​prj2026|Pagina proiecte PM 2026]]
   * [[https://​ocw.cs.pub.ro/​courses/​pm/​pm/​prj2021/​template|Template documentație proiect PM]]   * [[https://​ocw.cs.pub.ro/​courses/​pm/​pm/​prj2021/​template|Template documentație proiect PM]]
-  * [[https://ocw.cs.pub.ro/​courses/​pm/​proiect/​xplainedmini|Tutorial OCW ATmega328P Xplained Mini]] +  * [[https://store-usa.arduino.cc/products/arduino-uno-rev3|Arduino Uno Rev3]]
-  * [[https://​ww1.microchip.com/downloads/en/​DeviceDoc/​Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf|Datasheet ATmega328P]] +
-  * [[https://​www.microchip.com/​en-us/​development-tool/​atmega328p-xmini|ATmega328P Xplained Mini]]+
   * [[https://​www.analog.com/​media/​en/​technical-documentation/​data-sheets/​DS3231.pdf|Datasheet DS3231]]   * [[https://​www.analog.com/​media/​en/​technical-documentation/​data-sheets/​DS3231.pdf|Datasheet DS3231]]
   * [[https://​www.winsen-sensor.com/​d/​files/​manual/​mq-2.pdf|Datasheet senzor MQ-2]]   * [[https://​www.winsen-sensor.com/​d/​files/​manual/​mq-2.pdf|Datasheet senzor MQ-2]]
Line 242: Line 318:
   * [[https://​www.emag.ro/​display-tft-spi-2-8-inch-240x320-lcd-cu-touchscreen-driver-st7789v-arduino-emg359/​pd/​DP347SYBM/​|Ecran TFT SPI 2.8 inch]]   * [[https://​www.emag.ro/​display-tft-spi-2-8-inch-240x320-lcd-cu-touchscreen-driver-st7789v-arduino-emg359/​pd/​DP347SYBM/​|Ecran TFT SPI 2.8 inch]]
   * [[https://​www.emag.ro/​detector-de-fum-si-gaze-inflamabile-mq-2-gpl-propan-hidrogen-metan-albastru-argintiu-5904162804931/​pd/​D72GKLMBM/​|Modul senzor MQ-2 fum/gaz]]   * [[https://​www.emag.ro/​detector-de-fum-si-gaze-inflamabile-mq-2-gpl-propan-hidrogen-metan-albastru-argintiu-5904162804931/​pd/​D72GKLMBM/​|Modul senzor MQ-2 fum/gaz]]
-  * [[https://​www.emag.ro/​convertor-de-nivel-logic-cu-8-canale-elektroweb-albastru-2-e-060/​pd/​D1HWDMYBM/​|Convertor de nivel logic cu 8 canale]] 
  
 <​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/prj2026/cezar.zlatea/daniel.brinza.txt · Last modified: 2026/05/15 20:36 by daniel.brinza
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