#include <SPI.h>
#include <MFRC522.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// LCD: I2C address 0x27, 16 columns, 2 rows
LiquidCrystal_I2C lcd(0x27, 16, 2);
// RFID module pins
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN);
// Hriday's RFID UID (change based on your actual card)
byte hridayUID[] = {0x5A, 0xAC, 0x10, 0x5}; // Example UID
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
lcd.begin(16, 2);
lcd.backlight();
Serial.println("RFID Attendance System Ready");
lcd.setCursor(0, 0);
lcd.print("Scan your card");
}
void loop() {
// Check if a new card is present
if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) {
return;
}
Serial.print("Scanned UID: ");
for (byte i = 0; i < rfid.uid.size; i++) {
Serial.print("0x");
Serial.print(rfid.uid.uidByte[i], HEX);
if (i < rfid.uid.size - 1) Serial.print(", ");
}
Serial.println();
// Compare UID with Hriday's UID
if (checkUID(rfid.uid.uidByte, rfid.uid.size, hridayUID, sizeof(hridayUID))) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Name: Hriday");
lcd.setCursor(0, 1);
lcd.print("Class 7A present Today");
Serial.println("Attendance marked: Hriday - Class 7A");
} else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Unknown Card");
Serial.println("Unknown card scanned.");
}
delay(3000); // Wait before allowing next scan
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Scan your card");
rfid.PICC_HaltA(); // Stop reading
rfid.PCD_StopCrypto1(); // Stop encryption
}
bool checkUID(byte *uid, byte uidSize, byte *targetUID, byte targetSize) {
if (uidSize != targetSize) return false;
for (byte i = 0; i < uidSize; i++) {
if (uid[i] != targetUID[i]) return false;
}
return true;
}
Pin descriptin:
| Component | Arduino Pin | Notes |
|---|---|---|
| RC522 RFID | ||
| SDA (SS) | 10 | SPI slave select |
| SCK | 13 | SPI clock |
| MOSI | 11 | SPI Master Out Slave In |
| MISO | 12 | SPI Master In Slave Out |
| RST | 9 | Reset pin |
| 3.3V | 3.3V | Do NOT use 5V (may damage RC522) |
| GND | GND | Ground |
| I2C LCD | ||
| SDA | A4 | I2C Data |
| SCL | A5 | I2C Clock |
| VCC | 5V | Power supply |
| GND | GND | Ground |
No comments:
Post a Comment