Differences

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

Link to this comparison view

pm:prj2026:ciprian.popescu0411:smart-guard [2026/05/22 18:51]
rares_florian.oprea [Schema Bloc]
pm:prj2026:ciprian.popescu0411:smart-guard [2026/05/22 20:29] (current)
rares_florian.oprea [Hardware Design]
Line 5: Line 5:
 ===== Descriere generală ===== ===== 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ă.
  
-    *Proiectul constă într-un prototip ​de alarmă ​inteligentă care monitorizează constant ​zonă prin intermediul ​unui senzor ultrasonic. Când sistemul este armat și senzorul detectează un obiect sau o mișcare sub un prag de distanță prestabilit ​(simulând o intruziune), se declanșează un cronometru de pre-alarmă. Utilizatorul are la dispoziție un timp limitat (ex: 15 secunde) pentru a apropia o cartelă RFID autorizată de cititor pentru a dezarma sistemul. Starea sistemului și timpul rămas sunt afișate pe un modul cu ecrane ​cu 7 segmente. Interfața ​dispune ​de LED-uri ​și avertizări sonore, iar butoanele pot fi folosite pentru setări adiționale ​(ex: introducerea unui cod PIN de rezervă în lipsa cartelei).+    * Spre deosebire ​de 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 =====  ===== Schema Bloc ===== 
  
-{{:​pm:​prj2026:​ciprian.popescu0411:​schemabloc_smart-guard.png?​600|}} +{{:​pm:​prj2026:​ciprian.popescu0411:​schemabloc_smart-guard.v2.png?600|}}
-    * 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ă) +
-===== Schema Bloc =====  +
- +
-{{:​pm:​prj2026:​ciprian.popescu0411:​schemabloc_smart-guard.png?600|}}+
     * Input: Senzor Ultrasonic HC-SR04 (detecție prezență),​ Modul RFID-RC522 (citire cartelă), Butoane modul TM1638 (cod de backup, comenzi)     * 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)     * Procesare: Placă de dezvoltare Arduino Uno (monitorizare senzori, gestionare cronometru, validare UID cartelă, mașină de stări)
Line 73: Line 69:
  
  
-{{:​pm:​prj2026:​ciprian.popescu0411:​milestone_hardware_smartguard.jpeg?​600|}}+{{:​pm:​prj2026:​ciprian.popescu0411:​img_5888.jpeg?​600|}}
 ===== Software Design ===== ===== Software Design =====
  
 +      * Demo proiect: https://​youtu.be/​0NK5whnqt9E
 +      * Github: https://​github.com/​RaresOprea04/​SMART-GUARD
  
-<note tip> +Proiectul a fost dezvoltat în mediul Arduino IDE / PlatformIOfolosind framework-ul Arduino pentru microcontroller-ul ATmega328P ​(placa Arduino Uno)Codul este scris în C++ șeste structurat ​pe o arhitectură robustă de tip **Mașină de Stări ​(Finite State Machine)**. 
-Descrierea codului aplicaţiei (firmware):​ +
-  * mediu de dezvoltare (if any) (e.g. AVR StudioCodeVisionAVR) +
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib) +
-  * algoritmi şstructuri ​pe care plănuiţi să le implementaţi +
-  ​* (etapa 3surse şi funcţii implementate +
-</​note>​+
  
-===== Rezultate Obţinute =====+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"​.
  
-<note tip> +Funcții principale implementate:​
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +
-</​note>​+
  
-===== Concluzii =====+^ 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ță. |
  
-===== Download =====+Biblioteci folosite:
  
-<note warning> +^ Biblioteca ^ Rol ^ 
-O arhivă (sau mai multe dacă este cazulcu fişierele obţinute în urma realizării proiectului:​ surseschemeetcUn fişier READMEun ChangeLog, un script ​de compilare şcopiere automată pe uC crează întotdeauna o impresie bună ;-).+| Arduino.h | Funcții de bază ale framework-ului Arduino: control pini (GPIO), măsurare timp (millisdelayMicroseconds)citire impulsuri (pulseIn) și comunicație Serială UART
 +| SPI.h | Protocolul Serial Peripheral Interfaceabsolut necesar pentru comunicarea rapidă la nivel hardware între placa de dezvoltare ș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|
  
-Fişierele se încarcă pe wiki folosind facilitatea ​**Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:​pm:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul)**Exemplu:​** Dumitru Alin, 331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. +===== Concluzii ===== 
-</​note>​+Dezvoltarea sistemului ​**SMART GUARD** a reprezentat o oportunitate excelentă de a aprofunda concepte complexe de hardware și software embeddedProiectul 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ță.
  
-===== Jurnal ​=====+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 ​=====
  
-<note tip> +Arhiva completă a proiectului **SMART GUARD**, pregătită pentru descărcareAceasta conține codul sursă (PlatformIO ​Arduino), diagramele hardware, fișierul README cu documentația și istoricul versiunilor (ChangeLog).
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. +
-</note>+
  
 +{{:​pm:​prj2026:​ciprian.popescu0411:​smart_guard_v2.zip|}}
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
 <​note>​ <​note>​
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**.+  ​* **Hardware & Datasheets:*
 +    * [[https://​ww1.microchip.com/​downloads/​en/​DeviceDoc/​Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf|Datasheet ATmega328P]] 
 +    * [[https://​www.nxp.com/​docs/​en/​data-sheet/​MFRC522.pdf|Datasheet MFRC522 (Modul RFID)]] 
 +    * Specificații tehnice TM1638 (Modul LED & Key) șHC-SR04. 
 +  ​* **Software & Biblioteci:*
 +    * [[https://​github.com/​miguelbalboa/​rfid|Biblioteca MFRC522 (miguelbalboa)]] 
 +    * [[https://​github.com/​rjbatista/​tm1638-library|Biblioteca TM1638 (rjbatista)]] 
 +    * Documentația oficială Arduino Reference pentru manipularea registrelor și a funcțiilor de timing.
 </​note>​ </​note>​
  
  
pm/prj2026/ciprian.popescu0411/smart-guard.1779465080.txt.gz · Last modified: 2026/05/22 18:51 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