This is an old revision of the document!


SentinelGuard - Sistem de Alarmă Inteligent Multi-Senzor

Autor: Daniel Brinza
Grupa: 334CB
Asistent proiect: Cezar Zlatea

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.

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.

Descriere generală

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.

Schemă bloc

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.

Interacțiunea cu utilizatorul

  • Utilizatorul poate arma sau dezarma alarma folosind tastatura matricială 4×4.
  • 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.
  • Buzzerul generează modele sonore diferite în funcție de tipul alarmei.
  • UART prin USB este folosit pentru log-uri, debug și comenzi în timpul dezvoltării și demonstrației.

Concepte de microcontrolere acoperite

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

Design hardware

Listă de componente

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

Placa de dezvoltare

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:

  • mEDBG pentru programare și debugging fără programator extern;
  • Virtual COM Port pentru log-uri și comenzi UART;
  • pinii D0/D1 conectați la UART-ul microcontrolerului, păstrați pentru comunicația serială;
  • pinii SPI D10-D13 pentru ecranul TFT;
  • pinii I2C A4/A5 pentru modulul RTC DS3231;
  • pinii analogici A0-A2 pentru senzori analogici, A2 fiind rezervat doar dacă se folosește fotorezistența opțională;
  • pinul D13/PB5 este partajat cu LED-ul galben onboard D200 și cu semnalul SPI SCK.

Utilizare pini planificată

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

Considerații electrice

  • Placa cu microcontroler funcționează la logică de 5V, iar ecranul TFT va fi 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.
  • 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.
  • Pinii D0/D1 sunt rezervați pentru Virtual COM Port-ul mEDBG și pentru comunicația UART cu PC-ul.
  • 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 4×4 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 mare, va fi adăugat un driver cu tranzistor.
  • Toate modulele trebuie să aibă masă comună.

Tipuri de evenimente

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

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ă.

Mediu de dezvoltare

  • PlatformIO sau Arduino IDE pentru compilarea și încărcarea firmware-ului.
  • Framework Arduino/MiniCore sau configurație AVR compatibilă cu ATmega328P Xplained Mini.
  • mEDBG onboard pentru programare și debugging prin USB.
  • Virtual COM Port mEDBG pentru log-uri și comenzi UART.
  • 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

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

Algoritmul principal

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

Comenzi UART

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

Plan de implementare

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

Rezultate așteptate

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:

  • monitorizare în timp real folosind mai mulți senzori;
  • interfață grafică clară pe ecranul TFT;
  • evenimente marcate cu ora curentă;
  • comportament configurabil pentru armare/dezarmare;
  • integrarea mai multor protocoale de comunicație într-un singur sistem embedded.

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.

Cod sursă și alte resurse

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

Jurnal

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.

Bibliografie / Resurse

pm/prj2026/cezar.zlatea/daniel.brinza.1778321123.txt.gz · Last modified: 2026/05/09 13:05 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