This is an old revision of the document!


SMART GUARD

Introducere

  • Acest proiect are ca scop crearea unui sistem de securitate și monitorizare interactiv numit “SMART GUARD”. Sistemul îmbină detecția distanței pentru protejarea unui perimetru cu autentificarea pe bază de frecvență radio (RFID) pentru controlul accesului. Proiectul oferă un mecanism realist de armare, o fereastră de timp pentru dezarmare (pre-alarmă) și avertizări multi-senzoriale (vizuale și sonore), simulând un sistem de securitate comercial.

Descriere generală

  • Proiectul constă într-un prototip de alarmă hibridă, guvernat de o Mașină de Stări (FSM) non-blocantă. În modul armat, un senzor ultrasonic acționează ca o „barieră virtuală”. Când un obiect încalcă perimetrul (scăzând sub pragul critic de distanță), se declanșează un cronometru de pre-alarmă. Utilizatorul aflat la ușă are la dispoziție 15 secunde pentru a apropia o cartelă RFID autorizată și a opri alerta, altfel sistemul intră în starea de alarmă generală.
  • Spre deosebire de o alarmă clasică, SMART GUARD rulează o bază de date dinamică în memorie. Prin intermediul butoanelor de pe interfața hardware principală (modulul LED & Key), administratorul poate adăuga cartele noi sau elimina cartele compromise direct pe loc, modulul afișând UID-urile hexazecimale pe afișajul cu 7 segmente. Interfața locală oferă un feedback multi-senzorial complex: texte de tranzitare (SECURE, dEnIEd, SAFE), progress-bar pe LED-uri pentru timpul rămas, avertizări sonore stratificate și indicatoare luminoase externe de acces (Verde/Roșu).
  • Paralel cu interfața fizică de la punctul de acces, sistemul comunică bidirecțional printr-un terminal UART cu o stație de monitorizare (PC). Această interfață este destinată personalului de securitate care urmărește camerele video. Terminalul generează rapoarte la fiecare scanare a unei cartele (inclusiv încercările respinse) și acceptă comenzi scrise. Astfel, un gardian poate arma/dezarma sistemul de la distanță pentru un vizitator fără cartelă, sau poate tasta comanda „PANIC” pentru a declanșa instantaneu alarma dacă observă o activitate suspectă pe monitor, indiferent de starea senzorilor locali.

Schema Bloc

  • Input: Senzor Ultrasonic HC-SR04 (detecție prezență), Modul RFID-RC522 (citire cartelă), Butoane modul TM1638 (cod de backup, comenzi)
  • Procesare: Placă de dezvoltare Arduino Uno (monitorizare senzori, gestionare cronometru, validare UID cartelă, mașină de stări)
  • Output: Display 7-segmente TM1638 (afișare mesaje/timer), LED-uri TM1638, LED Roșu & LED Verde extern (indicatori de stare), Buzzer (avertizare sonoră)

Hardware Design

Lista de piese (Bill of Materials):

  • Placă de dezvoltare Arduino Uno (sau compatibilă): Microcontroller-ul central care gestionează logica sistemului (state machine), procesează semnalele senzorilor și controlează ieșirile.
  • Modul Cititor RFID-RC522 + Cartele/Tag-uri: Folosit pentru a citi identificatorul unic (UID) al cartelelor pentru a autoriza accesul. Comunică prin protocolul SPI.
  • Senzor Ultrasonic HC-SR04: Acționează ca o „barieră virtuală” în zona de securitate. Măsoară constant distanța, iar scăderea bruscă a distanței citite indică o prezență neautorizată și declanșează pre-alarma.
  • Modul LED & Key (bazat pe TM1638): Interfața principală cu utilizatorul. Display-urile cu 7 segmente afișează mesaje (ex: “SAFE”, “ALERT”) și cronometrul invers, LED-urile indică vizual armarea, iar butoanele permit adăugarea/ștergerea cartelelor sau accesarea modului de sistem.
  • Buzzer: Componenta care emite avertizările sonore: bip-uri de confirmare la citirea cardurilor, sunet intermitent în pre-alarmă și un sunet continuu când sistemul este breșat.
  • LED Roșu (5mm) + Rezistență (ex. 220Ω - 330Ω): Indicator vizual de alertă plasat pe breadboard. Semnalează vizual starea de armare (SECURE) și clipește agresiv în caz de refuz (DENIED) sau alertă.
  • LED Verde (5mm) + Rezistență (ex. 220Ω - 330Ω): Indicator vizual de siguranță. Confirmă starea de repaus a sistemului (IDLE/SAFE) și se aprinde scurt pentru a confirma citirea cu succes a unui card autorizat.
  • Breadboard: Placa de bază utilizată pentru conectarea tuturor firelor, distribuirea alimentării (GND și 5V/3.3V) de la Arduino și prototiparea circuitului fără lipire.
  • Set fire Dupont (Jumper wires): Tip Mamă-Tată și Tată-Tată, utilizate pentru realizarea tuturor conexiunilor electrice și de date.

Conexiunile hardware de până acum sunt următoarele:

Componenta Conectare
Breadboard 5V microcontroller → bara VCC (roșie) superioară breadboard
Breadboard 3.3V microcontroller → bara VCC (roșie) inferioară breadboard
Breadboard GND microcontroller → barele GND (albastre) breadboard
Componenta Pin componenta Conectare
Senzor Ultrasonic HC-SR04 VCC 5V breadboard
Senzor Ultrasonic HC-SR04 GND GND breadboard
Senzor Ultrasonic HC-SR04 Trig Pin 6 microcontroller
Senzor Ultrasonic HC-SR04 Echo Pin 7 microcontroller
Componenta Pin componenta Conectare
Modul RFID-RC522 3.3V 3.3V breadboard
Modul RFID-RC522 GND GND breadboard
Modul RFID-RC522 RST Pin 9 microcontroller
Modul RFID-RC522 SDA (SS) Pin 10 microcontroller
Modul RFID-RC522 MOSI Pin 11 microcontroller
Modul RFID-RC522 MISO Pin 12 microcontroller
Modul RFID-RC522 SCK Pin 13 microcontroller
Componenta Pin componenta Conectare
Modul TM1638 (LED & Key) VCC 5V breadboard
Modul TM1638 (LED & Key) GND GND breadboard
Modul TM1638 (LED & Key) STB Pin 2 microcontroller
Modul TM1638 (LED & Key) CLK Pin 3 microcontroller
Modul TM1638 (LED & Key) DIO Pin 4 microcontroller
Componenta Pin componenta Conectare
Buzzer Pin semnal (+) Pin 5 microcontroller
Buzzer GND (-) GND breadboard
LED Roșu Extern Anod (+) conectat prin rezistență Pin 8 microcontroller
LED Roșu Extern Catod (-) GND breadboard
LED Verde Extern Anod (+) conectat prin rezistență Pin A4 microcontroller
LED Verde Extern Catod (-) GND breadboard

Software Design

Proiectul a fost dezvoltat în mediul Arduino IDE / PlatformIO, folosind framework-ul Arduino pentru microcontroller-ul ATmega328P (placa Arduino Uno). Codul este scris în C++ și este structurat pe o arhitectură robustă de tip Mașină de Stări (Finite State Machine).

Abordarea este predominant non-blocantă, utilizând funcția `millis()` pentru măsurarea timpului (Timer hardware). Această arhitectură permite monitorizarea simultană și în timp real a senzorului ultrasonic, a cititorului RFID, a stării butoanelor de pe modulul TM1638 și a comenzilor primite de la distanță prin consola UART (Serial Monitor), fără ca execuția programului să “înghețe”.

Funcții principale implementate:

Functie Rol
setup() Inițializează pinii pentru senzori, buzzer și LED-uri, setează un timeout optimizat pentru portul Serial, pornește comunicația SPI, inițializează modulele RFID și TM1638, și afișează mesajul de pornire pe Serial.
loop() Reprezintă bucla principală a programului. Evaluează continuu starea curentă a mașinii (IDLE, ARMAT, PRE-ALARMA, ALARMA, ADAUGARE, STERGERE), citește butoanele și apelează listener-ul pentru comenzile UART.
isMasterCard() Verifică dacă UID-ul cardului scanat aparține cardului Master (card invincibil cu acces de administrator, codat hard în memorie).
isAuthorizedCard() Verifică dacă un card scanat are drept de acces, căutându-i UID-ul în baza de date dinamică stocată în memoria RAM sau verificând dacă este cardul Master.
printeazaUIDSerial() Formatează UID-ul citit în hexazecimal și generează log-uri detaliate în consola UART pentru trasabilitatea evenimentelor de securitate (folosind macro-ul F() pentru salvarea memoriei SRAM).
afiseazaUIDPeEcran() Descompune octeții UID-ului și utilizează un font HEX custom pentru a afișa identificatorul cardului direct pe cele 8 display-uri cu 7-segmente ale modulului TM1638.
afiseazaAccesRespins() Declanșează secvența vizuală și sonoră de eroare (pâlpâire LED roșu + buzzer intermitent + textul “dEnIEd”) la respingerea unei cartele neautorizate.
executaDezarmareCuSucces() Funcție de tranziție care oprește avertizările, afișează mesajul de siguranță (“SAFE”), emite un bip de confirmare și trece sistemul înapoi în starea de repaus (IDLE).
afiseazaTimerCentrat() Calculează zecile și unitățile din timpul de pre-alarmă rămas și le afișează centrat, în formatul ”- X Y -”, pe display.
afiseazaStareArmatCuDistanta() Construiește interfața modului radar (“On” urmat de valoarea distanței în centimetri) afișată în timp ce sistemul este armat.
afiseazaTimpPeLEDuri() Folosește funcția map() pentru a stinge treptat cele 8 LED-uri roșii de pe modulul TM1638, oferind un progress-bar vizual intuitiv în timpul perioadei de pre-alarmă.
citesteDistantaFiltrata() Implementează un filtru software de tip *Averaging Filter*. Ia 3 eșantioane consecutive de la senzorul HC-SR04, elimină valorile nule/aberante și returnează media aritmetică pentru o stabilitate maximă a citirilor.
proceseazaComenziSeriale() Implementează un terminal UART bidirecțional pe bază de buffer (String acumulativ), care permite unui operator PC să trimită comenzi text (ARM, DISARM, PANIC, STATUS) pentru a controla sistemul de la distanță.

Biblioteci folosite:

Biblioteca Rol
Arduino.h Funcții de bază ale framework-ului Arduino: control pini (GPIO), măsurare timp (millis, delayMicroseconds), citire impulsuri (pulseIn) și comunicație Serială UART.
SPI.h Protocolul Serial Peripheral Interface, absolut necesar pentru comunicarea rapidă la nivel hardware între placa de dezvoltare și modulul cititor RFID.
MFRC522.h Gestionează inițializarea cipului RC522, emisia undelor radio de 13.56MHz și citirea/decriptarea ID-ului (UID) de pe tag-urile și cartelele de securitate scanate.
TM1638.h Gestionează multiplexarea prin 3 fire (STB, CLK, DIO) necesară pentru a controla simultan cele 8 afișaje cu 7 segmente, cele 8 LED-uri roșii și pentru a citi starea celor 8 butoane integrate.

Concluzii

Dezvoltarea sistemului SMART GUARD a reprezentat o oportunitate excelentă de a aprofunda concepte complexe de hardware și software embedded. Proiectul a evoluat spectaculos de la o simplă alarmă de proximitate la un sistem hibrid de control acces, capabil să gestioneze memorii dinamice și comenzi de la distanță.

Principala provocare a proiectului a fost gestionarea corectă a resurselor limitate ale microcontroller-ului ATmega328P. Implementarea terminalului UART bogat în mesaje de log a dus inițial la depășirea memoriei SRAM (Stack Crash) și la resetarea plăcii în buclă. Problema a fost rezolvată optimizând arhitectura software și folosind macro-ul F() pentru a forța compilatorul să citească string-urile direct din memoria Flash (ajungând la un consum stabil de sub 50% RAM).

Din punct de vedere arhitectural, trecerea la o Mașină de Stări (Finite State Machine) complet non-blocantă, bazată pe Timere hardware (millis()) în detrimentul funcțiilor de tip delay(), a fost un succes. Aceasta i-a permis sistemului să ruleze în paralel: să filtreze zgomotul senzorului ultrasonic, să afișeze fluid interfața pe modulul TM1638, să asculte magistrala SPI pentru carduri RFID și să mențină portul UART deschis pentru consolă.

Rezultatul este un produs robust, interactiv și foarte apropiat de standardele comerciale de securitate.

Download

Arhiva completă a proiectului SMART GUARD, pregătită pentru descărcare. Aceasta conține codul sursă (PlatformIO / Arduino), diagramele hardware, fișierul README cu documentația și istoricul versiunilor (ChangeLog).

Descarcă Arhiva Proiectului - SMART GUARD (v2.0)

Bibliografie/Resurse

pm/prj2026/ciprian.popescu0411/smart-guard.1779470865.txt.gz · Last modified: 2026/05/22 20:27 by rares_florian.oprea
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