This is an old revision of the document!
Autor: Daniel Brinza
Grupa: 334CB
Asistent proiect: Cezar Zlatea
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.
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.
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.
Sistemul este organizat în jurul microcontrolerului, care citește senzorii, actualizează starea alarmei și controlează interfața cu utilizatorul.
Principalele stări de funcționare sunt:
DEZARMAT - senzorii pot fi monitorizați, dar sirena nu pornește la evenimente normale.ARMAT - alarma urmărește activ mișcarea, fumul/gazul, zgomotele puternice și apropierea de panou.PRE_ALARMA - a fost detectat un eveniment suspect, iar sistemul așteaptă confirmarea sau expirarea unui timp scurt.ALARMA - buzzerul este activ, ecranul TFT afișează cauza declanșării, iar evenimentul este transmis prin UART.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ă 4×4 din kit.
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.
| Concept | Utilizare în proiect |
|---|---|
| GPIO | Citirea senzorilor digitali și controlul modulelor simple |
| Î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 |
| ADC | Citirea senzorului MQ-2, a tastaturii prin divizor rezistiv și opțional a fotorezistenței/senzorului de sunet |
| UART | Log-uri și comenzi prin conexiunea serială USB |
| SPI | Comunicația cu ecranul TFT |
| I2C | Comunicația cu modulul RTC DS3231 |
| Componentă | Cantitate | Rol în proiect | Interfață |
|---|---|---|---|
| ATmega328P Xplained Mini | 1 | Controler principal | GPIO, ADC, UART, SPI, I2C |
| Breadboard | 1 | Realizarea prototipului | - |
| Fire jumper | multiple | Conectarea componentelor | - |
| Ecran TFT SPI 2.8 inch, 240×320, ST7789V | 1 | Interfață grafică pentru stare, alerte și meniu | SPI |
| Convertor de nivel logic cu 8 canale | 1 | Conversie semnale 5V microcontroler la 3.3V pentru ecran | SPI/GPIO prin level shifting |
| Senzor PIR HC-SR501 sau echivalent | 1 | Detectarea mișcării în zona protejată | Intrare digitală / întrerupere |
| 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 |
| Baterie CR2032 | 1 | Backup pentru modulul RTC | - |
| Buzzer pasiv | 1 | Sirenă cu tonuri diferite | PWM |
| Modul senzor de sunet | 1 | Detectarea zgomotelor puternice | Intrare digitală/analogică |
| 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 |
| Rezistențe | multiple | Pull-up, divizoare de tensiune, limitare curent și citire tastatură | - |
| Tastatură matricială 4×4 | 1 | Introducere PIN | ADC prin divizor rezistiv |
Proiectul folosește placa ATmega328P Xplained Mini. Aceasta 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.
Funcționalități ale plăcii folosite în proiect:
Pinout-ul poate fi ajustat în etapa de integrare, însă următoarea mapare este planul inițial pentru ATmega328P Xplained Mini.
| Modul | Semnal | Pin placă | Pin ATmega328P | Header | Observații |
|---|---|---|---|---|---|
| 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ă |
| Buzzer pasiv | SIG | D3 | PD3 / OC2B | J201 pin 4 | PWM prin Timer2, separat de Timer1 |
| HC-SR04 | TRIG | D4 | PD4 | J201 pin 5 | Impuls de trigger generat de microcontroler |
| TFT backlight, opțional | BL | D6 | PD6 / PWM | J201 pin 7 | Control luminozitate; poate fi legat fix dacă nu se controlează din software |
| TFT Display | RST | D7 | PD7 | J201 pin 8 | Reset ecran, trecut prin level shifter |
| HC-SR04 | ECHO | D8 | PB0 | J200 pin 1 | Măsurare timp răspuns; poate fi citit prin GPIO/timer |
| TFT Display | DC | D9 | PB1 | J200 pin 2 | Data/Command, trecut prin level shifter |
| TFT Display | CS | D10 | PB2 / SS | J200 pin 3 | Chip select SPI, trecut prin level shifter |
| 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 rămâne nefolosit dacă afișajul nu trimite date spre MCU |
| 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 |
| 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ă |
| Tastatură 4×4 | ieșire divizor rezistiv | A3 | PC3 / ADC3 | J203 pin 4 | Citire PIN prin ADC; evită ocuparea a 8 pini GPIO |
| RTC DS3231 | SDA | A4 / D18 | PC4 / SDA | J200 pin 9 / J203 pin 5 | Magistrală I2C |
| RTC DS3231 | SCL | A5 / D19 | PC5 / SCL | J200 pin 10 / J203 pin 6 | Magistrală I2C |
| Eveniment | Senzor | Reacția sistemului |
|---|---|---|
| Mișcare detectată | PIR | Intrare în starea PRE_ALARMA sau 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 |
| Obiect apropiat de panou | Ultrasonic | Aprindere ecran sau stare de avertizare |
| Lumină ambientală scăzută | Fotorezistență opțională | Schimbare temă/luminozitate ecran, doar dacă modulul rămâne în proiect |
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ă.
| Modul | Responsabilitate |
|---|---|
sensors | Citește PIR, MQ-2, senzorul de sunet, senzorul ultrasonic și, dacă este păstrată, fotorezistența opțională |
alarm_state | Implementează stările DEZARMAT, ARMAT, PRE_ALARMA, ALARMA și MENIU |
display_ui | Desenează dashboard-ul TFT, avertizările și meniurile |
rtc_time | Citește data/ora din DS3231 și formatează timestamp-uri |
serial_console | Trimite log-uri și primește comenzi prin UART folosind Virtual COM Port-ul mEDBG |
buzzer | Generează modele sonore folosind timere/PWM |
input | Procesează tastatura matricială 4×4 pentru PIN și comenzi de meniu |
initializare periferice
afisare ecran de pornire pe TFT
incarcare praguri implicite
while true:
citire senzori
actualizare stare alarma
actualizare model buzzer
actualizare ecran TFT cand apar schimbari
trimitere evenimente importante prin UART
procesare input utilizator
| Comandă | Efect |
|---|---|
ARM | Armează alarma |
DISARM 1234 | Dezarmează alarma dacă PIN-ul este corect |
STATUS | Afișează starea curentă și valorile senzorilor |
THRESHOLD GAS 350 | Actualizează pragul pentru senzorul MQ-2 |
LOGS | Afișează ultimele evenimente |
Proiectul va fi implementat incremental, astfel încât fiecare componentă hardware să fie testată separat înainte de integrarea finală.
| 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 |
| 2 | Conectarea și testarea buzzerului | Generarea unor beep-uri simple folosind timer/PWM |
| 3 | Conectarea senzorului PIR | Afișarea evenimentelor de mișcare prin UART și testarea întreruperii |
| 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 |
| 6 | Conectarea ecranului TFT prin level shifter | Afișarea unui ecran de pornire și a dashboard-ului |
| 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 |
| 9 | Adăugarea introducerii PIN-ului prin tastatura matricială 4×4 | Armare/dezarmare din interfața utilizatorului |
| 10 | Integrare finală și demo | Declanșarea fiecărui senzor și verificarea ecranului, buzzerului și log-urilor UART |
Rezultatul final așteptat este un prototip funcțional de alarmă multi-senzor. Dispozitivul trebuie să detecteze evenimente de securitate, să afișeze feedback clar pe ecranul TFT, să genereze alerte sonore și să ofere mesaje de debug/stare prin UART.
La finalul proiectului, prototipul trebuie să demonstreze:
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.
Codul sursă, schemele electrice, pozele și materialele demo vor fi încărcate într-un repository public de GitHub.
Repository GitHub: https://github.com/dqnyb/SentinelGuard
| 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. |
| DE_COMPLETAT | Componentele hardware au fost comandate și verificate. |
| DE_COMPLETAT | Senzorii au fost testați individual pe breadboard. |
| DE_COMPLETAT | Ecranul TFT și modulul RTC au fost integrate. |
| DE_COMPLETAT | Automatul de stări al alarmei și demo-ul final au fost implementate. |