This is an old revision of the document!
Proiectul meu constă într-un sistem automatizat de pontaj bazat pe tehnologia RFID (Radio-Frequency Identification), implementat cu ajutorul unui microcontroler, două module RC522, un ecran LCD, un buzzer și un leg RGB.
Sistemul permite angajaților să înregistreze automat ora de sosire și plecare de la locul de muncă prin simpla apropiere a cardului RFID personal de cititorul corespunzător. La intrare, angajatul apropie cardul de primul cititor RFID pentru a înregistra “Clock In”, iar la plecare, de al doilea cititor pentru “Clock Out”. Ecranul afișează confirmarea operațiunii și timpul de sosire/plecare, iar la sfârșitul zilei, sistemul calculează automat durata petrecută la locul de muncă. De asemenea, sistemul avertizează sonor și vizual când o persoană încearcă să intre/iasă cu cardul unei persoane care deja este în interior sau a ieșit deja.
Piesele utilizate
| Componentă | Cantitate | Preț/Buc (RON) |
|---|---|---|
| Arduino Uno | 1 | 40 |
| Modul RFID MFRC522 | 2 | 15 |
| Modul RTC | 1 | 19 |
| Ecran Led | 1 | 15 |
| Carduri/tag-uri RFID | min. 3 | 5 |
| RGB | 1 | 1 |
| Buzzer | 1 | 4 |
| Breadboard | 2 | 8 |
| Fire de conexiune | 1 set | 35 |
Arduino IDE - mediul de dezvoltare principal pentru programarea microcontrollerului
// RFID Readers #define RST_PIN_IN 8 // Reset pin cititor INTRARE #define RST_PIN_OUT 7 // Reset pin cititor IEȘIRE #define SS_PIN_IN 10 // SDA pin cititor INTRARE #define SS_PIN_OUT 9 // SDA pin cititor IEȘIRE // Feedback Components #define BUZZER_PIN 4 // Pin buzzer audio #define RED_PIN 5 // LED RGB - componenta roșie #define GREEN_PIN 6 // LED RGB - componenta verde #define BLUE_PIN 3 // LED RGB - componenta albastră // I2C Devices (shared bus) // LCD Address: 0x27 // RTC Address: 0x68 (implicit DS3231)
// Structura pentru gestionarea utilizatorilor cunoscuți const int NUM_KNOWN_CARDS = 3; String knownUIDs[NUM_KNOWN_CARDS]; // UID-uri carduri cunoscute String knownNames[NUM_KNOWN_CARDS]; // Numele utilizatorilor unsigned long entryTimes[NUM_KNOWN_CARDS]; // Timestamp-uri intrare bool isInside[NUM_KNOWN_CARDS]; // Status prezență
// Circular buffer pentru istoricul erorilor #define MAX_ERROR_LOG 10 String errorLog[MAX_ERROR_LOG]; int errorCount = 0;
Stări Sistema:
Flow Diagram:
[READY] → Card Detectat → [PROCESSING] → Validare UID
↑ ↓
└── Display Reset ←── [FEEDBACK] ←── Decision Tree:
↓ ├─ Utilizator Cunoscut
[ERROR/ALARM] │ ├─ Intrare Validă → Success
↓ │ ├─ Intrare Dublă → Error
Logging + Feedback │ └─ Ieșire Validă → Success
└─ Utilizator Necunoscut → Warning
String getUID(byte *buffer, byte bufferSize) // Conversie UID la string int findPersonByUID(String uid) // Căutare utilizator în DB
String formatTimeHM(DateTime dt) // Format HH:MM String formatTime(DateTime dt) // Format HH:MM:SS String formatTimeSpent(unsigned long seconds) // Calculare timp petrecut String formatDateTime(DateTime dt) // Format complet dată/oră
void doubleEntryAlarm(int personIndex) // Gestionare intrare dublă void invalidExitAlarm(int personIndex) // Gestionare ieșire invalidă void logError(String errorMessage) // Logging erori cu timestamp
void startupBeep() // Sunet pornire sistem void successBeep() // Sunet intrare reușită void exitBeep() // Sunet ieșire reușită void unknownBeep() // Sunet card necunoscut void errorBeep() // Sunet eroare generală void warningBeep() // Sunet avertizare void alarmBeep() // Sunet alarmă critică
void setRGB(bool red, bool green, bool blue) // Control individual culori void turnOffRGB() // Oprire LED void blinkGreen() // 3 clipiri verzi (succes) void blinkRed() // 5 clipiri roșii (eroare)
void showReadyScreen() // Afișaj mod așteptare // Display updates integrate cu time tracking în main loop
DEBOUNCE_TIME 1500ms previne scanări multiple accidentaleSistemul RFID de control acces implementat oferă următoarele funcționalități:
Proiectul a demonstrat implementarea cu succes a unui sistem complet de control acces bazat pe tehnologia RFID. Soluția dezvoltată integrează multiple componente hardware (cititoare RFID, LCD, RTC, buzzer, LED RGB) într-un sistem coerent și funcțional.
Puncte forte ale implementării:
Aplicabilitate practică: Sistemul poate fi implementat în medii reale pentru controlul accesului în birouri, laboratoare, sau alte spații restricționate, oferind o soluție cost-efectivă și fiabilă.
Fișiere disponibile pentru download:
rfid_attendance_system.ino - codul sursă principalREADME.md - documentația de instalare și utilizareschematic.pdf - schema electrică a conexiunilorSăptămâna 1-2: Configurarea hardware de bază
Săptămâna 3: