Project Aperçu rapide
Construire le temps: 4-6 heures | Coût: 25-35 $ | Difficulté: Débutant
Ce que vous apprendrez: Communication SPI / I2C, stockage EEPROM, programmation d’horloge en temps réel, gestion des cartes RFID
Applications: Assistance au bureau, suivi des étudiants, contrôle d’accès, gestion des visiteurs




Libraries and Dependencies
#include
#include
#include
#include "RTClib.h"
#include
#define RST_PIN 7 // optional
#define SS_PIN 10
#define BUTTON_MENU 8
#define BUTTON_SELECT 9
#define EEPROM_ADDR 0x50
MFRC522 mfrc522(SS_PIN, RST_PIN);
RTC_DS1307 rtc;
LiquidCrystal_I2C lcd(0x27, 16, 2);
MFRC522::MIFARE_Key key;
#define NAME_START_BLOCK 4
#define ID_START_BLOCK 8
#define NAME_LENGTH 32
#define ID_LENGTH 8
#define MAX_LOGS 30
#define LOG_SIZE 80
int logCount = 0;
int insideCount = 0;
enum MenuState {
MENU_HOME,
MENU_VIEW_LOGS,
MENU_STATUS,
MENU_CLEAR_LOGS,
MENU_SET_TIME
};
MenuState currentMenu = MENU_HOME;
int menuIndex = 0;
unsigned long lastButtonPress = 0;
unsigned long lastLCDUpdate = 0;
unsigned long homeScreenTimer = 0;
bool inSubMenu = false;
int logViewIndex = 0;
unsigned long lastScrollTime = 0;
int scrollPosition = 0;
String currentScrollText = "";
bool isScrolling = false;
#define SCROLL_DELAY 500
#define SCROLL_PAUSE 2000
bool menuButtonPressed = false;
bool selectButtonPressed = false;
Serial.begin(9600);
pinMode(BUTTON_MENU, INPUT_PULLUP);
pinMode(BUTTON_SELECT, INPUT_PULLUP);
lcd.begin();
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("RFID Attendance");
lcd.setCursor(0, 1);
lcd.print("Starting up...");
delay(2000);
SPI.begin();
mfrc522.PCD_Init();
Wire.begin();
if (!rtc.begin()) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("RTC Error!");
Serial.println(F("RTC Error!"));
while(1); // Stop execution if RTC fails
}
for (byte i = 0; i < 6; i++) {
key.keyByte[i] = 0xFF;
}
logCount = readInt(0); // Read log count from address 0
insideCount = readInt(2); // Read inside count from address 2
if (logCount < 0 || logCount > MAX_LOGS) logCount = 0;
if (insideCount < 0) insideCount = 0;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("System Ready!");
lcd.setCursor(0, 1);
lcd.print("Inside: ");
lcd.print(insideCount);
delay(2000);
Serial.println(F("\n=== RFID IN/OUT System Ready ==="));
Serial.print(F("Total logs: "));
Serial.println(logCount);
Serial.print(F("People inside: "));
Serial.println(insideCount);
Serial.println(F("Commands: v(view), c(clear), s(status), t(time)"));
Serial.println(F("Scan card for IN/OUT..."));
displayHomeScreen();
void loop() {
handleButtons();
handleSerialCommands();
handleLCDUpdates();
handleRFIDScan();
handleScrolling();
}











- Connectivité WiFi: Ajouter ESP8266 pour la surveillance à distance et la sauvegarde du cloud
- Application mobile: Développer l’application pour smartphone pour une visualisation de fréquentation en temps réel
- Intégration biométrique: Combinez avec un capteur d’empreintes digitales pour une double authentification
- Capture photo: Ajouter un module de caméra pour la vérification de la fréquentation visuelle
- Intégration de la base de données: Connectez-vous à MySQL ou MongoDB pour les analyses avancées
- Prise en charge multi-emplacements: Réseau plusieurs unités pour le déploiement à l’échelle du campus
- Contrôle d’accès: Ajouter un contrôle de relais pour le verrouillage / déverrouillage des portes automatiques
Projets utilisant le module RFID



Retrouvez l’histoire de Raspberry Pi dans cette vidéo :

-
Clavier biométrique RFID de 2,4 pouces Système contrôle d'accès par empreinte digitale Machine présence électronique tout-en-un pour les employés
-
Horloge de pointage, système contrôle d'accès biométrique par empreinte digitale RFID, machine d'enregistrement du temps présence, porte intelligent pour les employés
