This is an old revision of the document!


Sistem de control acces cu RFID, LCD I2C și detecție de vizitator

Autor: Leca Maria-Catalina

Introducere

Proiectul constă în realizarea unui sistem de control acces bazat pe RFID, cu afișare pe LCD I2C și funcție de detecție a vizitatorului. Sistemul permite deschiderea unei uși atunci când este detectat un card RFID autorizat sau atunci când este apăsat un buton de acces manual.

Scopul proiectului este realizarea unui prototip funcțional pentru o ușă inteligentă, care poate identifica utilizatorii prin intermediul unui modul RFID RC522 și poate oferi feedback prin LED-uri, buzzer și afișaj LCD 16×2 cu interfață I2C.

Ideea de la care am pornit a fost construirea unui sistem asemănător cu o yală electronică sau cu un interfon simplificat. Sistemul permite accesul doar pentru persoane autorizate, dar poate și detecta un vizitator prin intermediul unui senzor de sunet.

Proiectul este util deoarece combină mai multe componente hardware și concepte software într-un sistem practic. Pentru alții, poate fi folosit ca punct de plecare pentru un sistem de acces mai complex. Pentru mine, proiectul este util deoarece m-a ajutat să înțeleg mai bine comunicațiile SPI și I2C, controlul unui servo motor, folosirea pinilor GPIO, afișarea mesajelor pe LCD și organizarea codului pentru un sistem embedded.

Ipoteză

Ipoteza proiectului este că folosirea unui sistem RFID împreună cu semnalizare vizuală și sonoră poate îmbunătăți controlul accesului, deoarece permite identificarea rapidă a unui utilizator autorizat și oferă feedback clar în cazul unui acces permis sau respins.

Descriere generală

Sistemul are în centru o placă Arduino Uno, care controlează toate modulele hardware și software ale proiectului. Utilizatorul apropie un card RFID sau un tag RFID de cititorul RFID RC522. Modulul citește UID-ul cardului, iar Arduino compară acest UID cu UID-ul salvat în program.

Dacă UID-ul este valid, sistemul acordă acces permis. În acest caz, se aprinde LED-ul verde, se activează buzzer-ul cu o melodie scurtă, pe LCD apare mesajul de confirmare, iar servo motorul SG90 se rotește pentru a simula deschiderea ușii.

Dacă UID-ul nu este valid, sistemul afișează mesajul Access denied, aprinde sau clipește LED-ul roșu și activează buzzer-ul cu un sunet de eroare. După 3 încercări greșite, sistemul intră într-o stare de blocare timp de 30 de secunde.

Sistemul include și un buton de acces manual, care permite deschiderea ușii fără card. De asemenea, senzorul de sunet detectează un zgomot sau o bătaie, iar sistemul afișează pe LCD mesajul pentru vizitator și activează buzzer-ul ca o sonerie.

Schemă bloc

Schema bloc a proiectului

Schema bloc prezintă modul în care componentele proiectului interacționează cu placa Arduino Uno ATmega328P. Modulul RFID RC522 comunică prin SPI cu microcontrollerul, iar Cardul / Tag-ul RFID este identificat contactless. LCD-ul 16×2 cu I2C este conectat prin liniile SDA / SCL, iar servomotorul SG90 este controlat prin PWM pentru acționarea mecanică a ușii sau barierei fizice.

Modulele LED roșu + LED verde, buzzer activ, buton acces manual și senzor de sunet sunt conectate prin pini GPIO. Calculatorul/laptopul este folosit pentru alimentare 5V și pentru comunicarea de debug prin UART.

Modulele proiectului

Modul Tip Descriere
Arduino Uno Hardware / Controller Controlează toate componentele proiectului
RFID RC522 Hardware / Senzor Citește cardurile și tagurile RFID
Card RFID / Tag RFID Hardware Element folosit pentru identificarea utilizatorului
LCD 16×2 I2C Hardware / Afișaj Afișează starea sistemului
Servo motor SG90 Hardware / Actuator Simulează deschiderea și închiderea ușii
LED roșu Hardware / Semnalizare Indică acces respins sau ușă închisă
LED verde Hardware / Semnalizare Indică acces permis sau ușă deschisă
Buzzer Hardware / Semnalizare sonoră Redă sunete pentru acces permis, respins sau vizitator
Buton Hardware / Input Permite deschiderea manuală a ușii
Senzor de sunet Hardware / Senzor Detectează un vizitator prin zgomot
Firmware Arduino Software Conține logica de control a sistemului
Serial Monitor Software / Debug Afișează mesaje pentru testare și depanare

Modul de interacțiune

Modulul RFID RC522 comunică cu placa Arduino Uno prin interfața SPI. LCD-ul comunică prin I2C, folosind pinii dedicați SDA și SCL ai plăcii Arduino. Servo motorul este controlat printr-un semnal de tip PWM, iar LED-urile, buzzer-ul, butonul și senzorul de sunet sunt conectate la pini digitali de tip GPIO.

Fluxul de funcționare este următorul:

  • sistemul pornește și afișează pe LCD mesajul System started;
  • Arduino așteaptă un card RFID, apăsarea butonului sau activarea senzorului de sunet;
  • dacă este detectat un card, se citește UID-ul;
  • UID-ul este comparat cu UID-ul autorizat;
  • dacă UID-ul este corect, se acordă accesul;
  • dacă UID-ul este greșit, se refuză accesul;
  • după 3 încercări greșite, sistemul se blochează pentru 30 de secunde;
  • dacă este apăsat butonul, ușa se deschide manual;
  • dacă senzorul de sunet detectează un vizitator, buzzer-ul redă un semnal de tip sonerie.

Hardware Design

Listă de piese

Nr. Componentă Cantitate Rol
1 Arduino Uno 1 Placa principală de control
2 Cablu USB 1 Alimentare și programare
3 Laptop / Calculator 1 Scriere cod, încărcare firmware și monitorizare serială
4 LED roșu 1 Semnalizare acces respins / ușă închisă
5 Rezistor pentru LED roșu 1 Limitare curent LED
6 LED verde 1 Semnalizare acces permis / ușă deschisă
7 Rezistor pentru LED verde 1 Limitare curent LED
8 Buzzer activ 1 Feedback sonor
9 Buton 1 Acces manual
10 Rezistor pentru buton 1 Stabilizare semnal buton
11 RFID RC522 1 Citire carduri RFID
12 Cartelă RFID 1 Identificator pentru acces
13 Tag RFID 1 Identificator RFID alternativ
14 Micro servo SG90 1 Simulare deschidere/închidere ușă
15 LCD 16×2 cu I2C 1 Afișare mesaje
16 Senzor de sunet 1 Detecție vizitator

Conexiuni electrice

Componentă Pin componentă Pin Arduino
RFID RC522 SDA / SS D10
RFID RC522 RST D9
RFID RC522 MOSI D11
RFID RC522 MISO D12
RFID RC522 SCK D13
RFID RC522 3.3V 3.3V
RFID RC522 GND GND
Servo SG90 Semnal D3
Servo SG90 VCC 5V
Servo SG90 GND GND
Buzzer activ Semnal D2
Buzzer activ GND GND
LED roșu Anod D4 prin rezistor
LED roșu Catod GND
LED verde Anod D5 prin rezistor
LED verde Catod GND
Buton Semnal D6
Buton GND GND
Senzor de sunet D0 D7
Senzor de sunet VCC 5V
Senzor de sunet GND GND
LCD I2C SDA SDA
LCD I2C SCL SCL
LCD I2C VCC 5V
LCD I2C GND GND

Scheme electrice

Schema electrică a proiectului a fost realizată pe baza conexiunilor dintre placa Arduino Uno și modulele externe: RFID RC522, LCD I2C, servo motor SG90, LED-uri, buzzer activ, buton și senzor de sunet.

Schema electrică a proiectului

În cazul în care schema electrică este încărcată separat pe wiki, fișierul trebuie să aibă un nume simplu, fără spații și fără diacritice, de exemplu schema_electrica.png.

Observații hardware

Modulul RFID RC522 trebuie alimentat la 3.3V, deoarece alimentarea directă la 5V poate deteriora modulul. Comunicarea cu Arduino se face prin SPI, folosind pinii D10-D13.

Afișajul LCD 16×2 cu I2C este conectat la pinii dedicați SDA și SCL ai plăcii Arduino Uno, ceea ce reduce numărul de fire necesare față de un LCD conectat în mod paralel.

Servo motorul SG90 este folosit pentru a simula mecanismul de deschidere al unei uși. Poziția de 0 grade reprezintă ușa închisă, iar poziția de 180 grade reprezintă ușa deschisă.

LED-ul roșu indică starea de ușă închisă, acces respins sau sistem blocat. LED-ul verde indică acces permis sau ușă deschisă. Buzzer-ul activ este folosit pentru confirmări sonore și avertizări.

Diagramă de semnal

Card RFID detectat
        |
        v
Citire UID prin SPI
        |
        v
Comparare UID cu UID autorizat
        |
        +----------------------+
        |                      |
        v                      v
 UID valid                UID invalid
        |                      |
        v                      v
 LED verde ON            LED roșu blink
 Buzzer succes           Buzzer eroare
 LCD Access granted      LCD Access denied
 Servo 180 grade         Incrementare failCount
        |                      |
        v                      v
 Ușă deschisă            Dacă failCount >= 3
        |                      |
        v                      v
 Delay                   Blocare 30 secunde
        |
        v
 Servo 0 grade
 Ușă închisă

Rezultatele simulării / testării hardware

Sistemul a fost testat prin conectarea componentelor pe breadboard. Au fost verificate următoarele funcționalități:

  • citirea unei cartele RFID și a unui tag RFID cu modulul RC522;
  • afișarea mesajelor pe LCD I2C;
  • controlul servo motorului SG90;
  • aprinderea LED-ului roșu și a LED-ului verde;
  • redarea sunetelor prin buzzer activ;
  • apăsarea butonului de acces manual;
  • detecția unui zgomot folosind senzorul de sunet;
  • blocarea sistemului după 3 încercări greșite.

Siguranță hardware

Pentru siguranța montajului, modulul RFID RC522 este alimentat la 3.3V, iar LED-urile sunt conectate prin rezistori pentru limitarea curentului. Conexiunile au fost verificate pentru a evita scurtcircuitele și alimentarea greșită a modulelor.

Software Design

Mediu de dezvoltare

Pentru dezvoltarea aplicației am folosit Arduino IDE. Programul este scris în limbajul C/C++ pentru Arduino și este încărcat pe placa Arduino Uno prin cablul USB.

Pentru testare și depanare am folosit Serial Monitor, unde sunt afișate mesaje despre starea sistemului, cardurile detectate, accesul permis sau respins și starea de blocare a sistemului.

Biblioteci folosite

Bibliotecă Rol
SPI.h Comunicare SPI cu modulul RFID
MFRC522.h Controlul cititorului RFID RC522
Servo.h Controlul servo motorului SG90
Wire.h Comunicare I2C
LiquidCrystal_I2C.h Controlul LCD-ului 16×2 cu interfață I2C

Pini definiți în program

Pinii principali folosiți în aplicație sunt:

Pin Arduino Rol
D10 SS / SDA pentru RFID RC522
D9 RST pentru RFID RC522
D2 Control buzzer activ
D3 Control servo motor SG90
D4 Control LED roșu
D5 Control LED verde
D6 Citire buton acces manual
D7 Citire senzor de sunet
SDA Linie de date pentru LCD I2C
SCL Linie de ceas pentru LCD I2C

Variabile importante

Programul folosește variabile pentru memorarea numărului de încercări greșite, pentru calcularea timpului de blocare temporară și pentru evitarea activării repetate a senzorului de sunet.

În program este memorat UID-ul cardului autorizat, care este comparat cu UID-ul citit de modulul RFID RC522. Dacă cele două valori coincid, sistemul permite accesul.

Algoritmul aplicației

Algoritmul principal al aplicației este:

  • se inițializează modulele în funcția setup();
  • sistemul pornește cu ușa închisă și afișează mesajul Scan card;
  • în funcția loop(), se verifică dacă sistemul este blocat;
  • dacă sistemul este blocat, LED-ul roșu clipește și buzzer-ul emite un semnal de avertizare;
  • dacă sistemul nu este blocat, se verifică senzorul de sunet;
  • dacă senzorul detectează zgomot, se activează funcția de detecție vizitator;
  • se verifică dacă butonul de acces manual este apăsat;
  • dacă butonul este apăsat, ușa se deschide;
  • se verifică dacă există un card RFID nou;
  • dacă este detectat un card, se citește UID-ul;
  • UID-ul citit este comparat cu UID-ul autorizat;
  • dacă UID-ul este valid, se acordă accesul;
  • dacă UID-ul este invalid, se refuză accesul;
  • după 3 încercări greșite, sistemul se blochează timp de 30 de secunde.

Funcții implementate

Funcție Descriere
setup() Inițializează Serial Monitor, RFID-ul, LCD-ul, servo motorul și pinii
loop() Conține logica principală a sistemului
doorClosed() Setează starea pentru ușă închisă
doorOpen() Setează starea pentru ușă deschisă
authorizeAccess() Acordă accesul pentru cardul autorizat
denyAccess() Refuză accesul pentru cardul neautorizat
blinkRedDenied() Clipește LED-ul roșu și activează buzzer-ul
doorOpenWait() Ține ușa deschisă, apoi semnalizează închiderea
visitorRing() Activează semnalul pentru vizitator
lcdMessage() Afișează două linii de text pe LCD

Noțiuni de laborator folosite

Proiectul integrează următoarele noțiuni:

  • GPIO - pentru LED-uri, buzzer, buton și senzorul de sunet;
  • SPI - pentru comunicarea cu modulul RFID RC522;
  • I2C - pentru comunicarea cu LCD-ul 16×2;
  • PWM - pentru controlul servo motorului SG90;
  • UART - pentru afișarea mesajelor în Serial Monitor.

Profilarea și evaluarea codului

Codul a fost organizat în funcții separate pentru a fi mai ușor de citit, testat și modificat. Fiecare funcție are un rol clar: controlul ușii, acordarea accesului, refuzarea accesului, afișarea mesajelor pe LCD sau tratarea detecției de vizitator.

Pentru verificarea funcționării, am folosit mesaje în Serial Monitor, ceea ce a permis urmărirea UID-urilor citite, a stării sistemului și a numărului de încercări greșite.

Rezultate Obţinute

În urma realizării proiectului, am obținut un sistem funcțional de control acces bazat pe RFID. Sistemul poate identifica un card autorizat, poate deschide ușa prin intermediul unui servo motor și poate afișa mesaje relevante pe LCD-ul I2C.

Pentru un card autorizat, sistemul:

  • afișează mesajul Access granted;
  • aprinde LED-ul verde;
  • activează buzzer-ul cu o melodie scurtă;
  • rotește servo motorul la 180 de grade;
  • menține ușa deschisă câteva secunde;
  • readuce servo motorul la poziția inițială.

Pentru un card neautorizat, sistemul:

  • afișează mesajul Access denied;
  • aprinde și clipește LED-ul roșu;
  • activează buzzer-ul cu un ton de eroare;
  • incrementează numărul de încercări greșite.

După 3 încercări greșite, sistemul intră într-o stare de blocare timp de 30 de secunde, timp în care LED-ul roșu și buzzer-ul semnalizează faptul că sistemul este blocat.

De asemenea, a fost implementată cu succes funcția de acces manual prin buton și funcția de detecție de vizitator folosind senzorul de sunet.

Măsurare și verificare

Pentru validarea proiectului au fost urmărite următoarele criterii:

Funcționalitate testată Rezultat
Detectare cartelă RFID Funcțional
Detectare tag RFID Funcțional
Comparare UID autorizat / neautorizat Funcțional
Deschidere cu servo motor SG90 Funcțional
Semnalizare cu LED roșu și LED verde Funcțional
Feedback sonor cu buzzer activ Funcțional
Afișare mesaje pe LCD I2C Funcțional
Deschidere cu buton acces manual Funcțional
Detecție vizitator cu senzor de sunet Funcțional
Blocare după 3 încercări greșite Funcțional

Concluzii

Proiectul Sistem de control acces cu RFID, LCD I2C și detecție de vizitator demonstrează integrarea mai multor componente hardware într-un sistem embedded funcțional. Prin folosirea unui Arduino Uno, a unui modul RFID RC522, a unui LCD I2C, a unui servo motor, a unor LED-uri, a unui buzzer, a unui buton și a unui senzor de sunet, am realizat un prototip complet de sistem de acces.

Cea mai importantă parte a proiectului a fost integrarea comunicațiilor SPI și I2C împreună cu periferice digitale și control PWM. Proiectul m-a ajutat să înțeleg mai bine modul în care componentele hardware comunică între ele și cum poate fi organizat codul pentru un sistem cu mai multe funcționalități.

Sistemul poate fi îmbunătățit în viitor prin:

  • adăugarea mai multor carduri autorizate;
  • folosirea unei încuietori electromagnetice reale;
  • adăugarea unui keypad pentru parolă;
  • conectarea la WiFi pentru logarea accesului;
  • salvarea evenimentelor într-un fișier sau într-o bază de date;
  • folosirea unei surse separate pentru alimentarea servo motorului;
  • realizarea unui PCB dedicat.

Download

Fișierele proiectului vor fi încărcate în repository-ul GitHub și pe pagina de wiki.

Repository GitHub:

Arhiva proiectului:

Fișiere incluse în arhivă:

  • codul sursă Arduino;
  • schema bloc;
  • schema electrică;
  • imagini cu montajul hardware;
  • fișier README;
  • documentația proiectului.

Jurnal

Pe parcursul realizării proiectului am început cu testarea modulului RFID RC522, împreună cu cartela RFID și tag-ul RFID. În această etapă am verificat detectarea cardurilor și citirea UID-ului, pentru a putea diferenția un card autorizat de unul neautorizat.

După funcționarea corectă a părții de RFID, am integrat servo motorul SG90, care simulează mecanismul de deschidere și închidere al ușii. Am testat pozițiile pentru ușă închisă și ușă deschisă, folosind rotația servo motorului.

Următoarea etapă a fost adăugarea LED-urilor și a buzzer-ului, pentru a oferi feedback vizual și sonor. LED-ul verde semnalizează accesul permis, LED-ul roșu indică accesul respins sau sistemul blocat, iar buzzer-ul redă sunete diferite pentru succes, eroare și avertizare.

După partea de semnalizare, am conectat și integrat LCD-ul 16×2 cu interfață I2C, astfel încât sistemul să afișeze mesaje clare pentru utilizator, precum starea de așteptare, card detectat, acces permis, acces respins sau sistem blocat.

În ultima etapă am adăugat senzorul de sunet, folosit pentru detecția vizitatorului. Acesta permite detectarea unui zgomot sau a unei bătăi, iar sistemul răspunde prin afișarea unui mesaj pe LCD și activarea buzzer-ului, simulând o funcție simplă de sonerie/interfon.

La final, am integrat toate modulele într-un singur program, am testat funcționarea completă a sistemului și am verificat scenariile principale: acces permis, acces respins, blocare după 3 încercări greșite, acces manual și detecție vizitator.

Bibliografie/Resurse

Resurse Hardware

Resurse Software

pm/prj2026/bianca.popa1106/maria_catalina.leca.1778277946.txt.gz · Last modified: 2026/05/09 01:05 by maria_catalina.leca
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