高级RFID考勤系统v2.0:无需以太网的完整方案
元器件与材料
| 元器件 | 数量 |
|---|---|
| Arduino UNO | 1 |
| 跳线(通用) | 1套 |
| RFID RC522模块 | 1 |
所需软件与服务(仅限Windows)
- addRFIDTagsProg.zip - RFID标签录入程序
- markattendancewin64.zip - 考勤打卡程序
项目详解
本系统是“在线RFID考勤系统(无需以太网)”的第二版。相比第一版,v2.0彻底消除了编程门槛——仅需按原理图接线,即可快速部署一套功能完整的在线考勤系统,包含LCD显示屏实时反馈。
工作流程
硬件连接

详细引脚定义请见原理图部分。
LCD1602接线(4位模式):
- VSS → GND
- VCC → 5V
- VO → 10K电位器中间脚(两端接5V和GND)
- RS → A0
- RW → GND
- EN → A1
- D4-D7 → 数字引脚5,4,3,2
- 背光正极 → 220Ω电阻 → 5V,负极 → GND
RFID RC522接线(SPI):
- SDA/SS → D10
- SCK → D13
- MOSI → D11
- MISO → D12
- RQ → 不接
- GND → GND
- RST → D9
- 3.3V → 3.3V
软件部署步骤
- 创建用户组与生成验证密钥
访问 注册页面 创建考勤用户组并获取免费验证密钥(务必妥善保存)。 - 下载配套程序
下载上述两个zip包,解压至电脑,根据系统架构(32/64位)选择对应exe文件。 - 连接硬件
Arduino与RC522连接同一台PC(通过USB)。 - 上传Arduino固件
将下方Arduino代码复制到IDE,编译上传。 - 录入RFID标签(运行addRFIDTagsProg.exe)
- 程序启动后提示选择COM口
- 输入步骤1获得的验证密钥,点击“Validate Key”
- 验证通过后,将RFID卡靠近读卡器,UID自动显示
- 输入持卡人姓名,点击添加
- 成功后可在Web面板 查看用户列表
- Web端分配用户
登录 Web管理后台,进入“Users → Pending User List”将录入的UID分配给具体员工/学生。 - 运行考勤程序(markOnlineAttendance.exe)
程序显示“Status: Connected”,将RFID卡靠近读卡器数秒即可完成打卡,LCD显示结果。 - 查看考勤记录
Web后台“Attendance Controls → View Attendance”选择年月点击“Show”导出记录。
Arduino核心代码
/*
基于MFRC522库示例修改
LCD接线见上文,RFID接线标准SPI
*/
#include
#include
#include
const int rs = A0, en = A1, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
#define SS_PIN 10
#define RST_PIN 9
int greenLedPin = A2;
int redLedPin = A3;
int orangeLedPin = 6;
int buzzerPin = A4;
MFRC522 rfid(SS_PIN, RST_PIN);
MFRC522::MIFARE_Key key;
byte nuidPICC[4];
boolean chkConn = false;
boolean isValidating = false;
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
pinMode(greenLedPin, OUTPUT);
pinMode(redLedPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
for (byte i = 0; i < 6; i++) key.keyByte[i] = 0xFF;
lcd.begin(16, 2);
lcd.print("GadgetProgrammer");
delay(100);
lcd.setCursor(0, 1);
lcd.print(" Not Connected! ");
establishConnection();
}
void loop() {
// 处理PC端串口指令
if (Serial.available() > 0) {
char cmd = Serial.read();
lcd.blink();
if (cmd == 'A') { chkConn = true; analogWrite(orangeLedPin,0); lcd.print("Swipe Your Card!"); }
if (cmd == 'V') { analogWrite(orangeLedPin,1000); lcd.print("Validating Group"); isValidating = true; delay(1000); }
if (cmd == 'S') { lcd.print("Validation Done!"); glowGreenLed(1000); isValidating = false; delay(1000); }
if (chkConn) {
if (cmd == '1') { lcd.print("Attendance Done!"); glowGreenLed(1000); delay(4000); }
else if (cmd == '0' || cmd == '5') { lcd.print("Network Error!"); glowRedLed(1000); delay(4000); }
else if (cmd == '2') { lcd.print("User Not Found!"); glowRedLed(1000); delay(4000); }
}
if (!isValidating) { lcd.setCursor(0,1); analogWrite(orangeLedPin,0); lcd.print("Swipe Your Card!"); }
}
// 读卡逻辑
if (!rfid.PICC_IsNewCardPresent()) return;
if (!rfid.PICC_ReadCardSerial()) return;
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
piccType != MFRC522::PICC_TYPE_MIFARE_4K) return;
// 发送4字节UID十六进制到串口
for (byte i = 0; i < 4; i++) nuidPICC[i] = rfid.uid.uidByte[i];
printHex(rfid.uid.uidByte, rfid.uid.size);
Serial.println();
lcd.setCursor(0,1); lcd.print("Reading Card...!");
rfid.PICC_HaltA();
rfid.PCD_StopCrypto1();
delay(1000);
}
// 辅助函数:十六进制打印、LED蜂鸣器控制、建立连接握手等
void printHex(byte *buffer, byte bufferSize) { ... }
void glowGreenLed(int dt) { ... }
void glowRedLed(int dt) { ... }
void establishConnection() { while (Serial.available() <= 0 && !chkConn) { Serial.println("A"); glowOrangeLed(); delay(200); } }
原理图文件
- LCD接线图:
pin_connections_of_arduino_and_lcd_yD9G43NUd9.tiff - RFID接线图:
pin_connections_of_arduion_and_rfid_7DFKgigFOA.tiff
注意:配套PC程序及Web后台目前仅支持Windows,作者称正在适配其他系统。部署前请确认网络可访问
parikshacrack.com域名。
制造工艺
- 擀面杖:从伊特鲁里亚起源到现代工艺的演变
- 现代保龄球瓶的演变与工艺
- 太阳能供暖系统:从被动式到主动式的可持续家居供暖方案
- 从古老纤维到现代制造:安全别针全解析
- Primal Display:树莓派 LCD 温度监测仪
- 基于 Arduino 与 Python 的可靠 RFID 考勤系统
- 基于 Arduino 与 Google Sheets 的实时 RFID 考勤系统
- Arduino 指纹考勤系统:本地存储 + ThingSpeak 云端同步
- 输送系统全解析:工作原理、类型与核心优势
- 掌握车辆悬架系统:保护爱车与提升乘坐舒适的核心技术
- 革命性热电制冷系统提升电脑芯片与电池性能:双材料主动/被动模式
- Elkem Silicones发布LSR Select:低温固化与定制配方实现周期缩短50%