基于ESP32-C3的离线优先RFID考勤系统,支持混合同步、OTA更新和零数据丢失,即使在无网络环境下也能正常运行
问题
印度尼西亚许多学校和机构都面临网络连接不稳定的问题。当网络中断时,基于云端的考勤系统完全失效,导致教师无法记录出勤情况,管理员也面临数据缺失的困境。
解决方案
考勤机是一款基于ESP32-C3超级迷你板的离线优先混合物联网考勤系统,无论是否连接网络均可无缝运行,确保在任何网络环境下均无数据丢失。
在线时,数据会自动同步到 REST API 服务器。离线时,记录将存储在 MicroSDSD 卡队列或 ESP32 的内部闪存(NVS)中,待连接恢复后便会静默地进行后台同步。
工作原理
•学生将RFID卡刷卡到RC522读卡器上。
•系统会将卡片信息与内存中缓存的本地数据库进行比对(查找时间小于1毫秒,无需调用HTTP)。
•如果有效,记录将被保存到MicroSD卡上的分区CSV队列中,并附带CRC8校验和。
•后台任务每5分钟同步一次队列到服务器,且不会中断点击操作。
•如果没有SD卡,记录将回退到NVS闪存(40条记录,重启和深度睡眠期间持久保存)。
主要特点
•离线优先——无需网络即可使用;可存储多达1,500,000条记录在SD卡上
•本地RFID验证——无需服务器往返;触碰延迟<50ms
•静音背景同步 — 通过 REST API API API 每5分钟批量同步一次
•OTA固件更新 — — — 每3小时通过HTTPS自动进行空中下载更新
•配置模式——通过 captive portal portal 配置 WiFi 和 API 设置,无需重新刷机
•智能防重复——滑动窗口算法可在30分钟内阻止重复点击
•深度睡眠调度 — 在非工作时间自动节能(默认:18:00–次日05:00)
•AES-128-CBC 加密凭证 — 使用从 ESP32 的 eFuse MAC MAC 地址派生的密钥,在 NVS 中加密 WiFi 和 API API 密钥
硬件
•微控制器:ESP32-C333 超小型
•RFID 读写器:RC522(13.56 MHz,SPI)
•存储:MicroSDSD 模块(SPI)
•显示屏:OLED 0.96英寸 SSD1306(I2C)
•反馈:5V(PWM)主动蜂鸣器
•电源:5V USB / 3.7VV 锂电池
建筑
系统采用FreeRTOS多任务调度,包含三个并行任务:
•taskRfid — — 处理卡片读取和验证
•taskSync — — — 管理后台同步、OTA 和远程配置
•taskDisplay — 更新OLED显示屏
SD卡和显示访问通过互斥信号量进行保护,以防止任务之间的竞争条件。
结果
该系统已在马德拉斯大学(MTSN 111 潘德格朗)积极部署,并自2022年以来在真实校园环境中稳定运行,尽管网络状况时断时续,仍能持续稳定地处理每日考勤工作。
设备设置(配置)
本文编译自hackster.io





