1. 项目概述与核心需求
校园安全一直是教育机构管理的重中之重,而传统的纸质签到巡逻方式存在诸多漏洞。这套基于单片机的安防巡逻打卡系统,正是为了解决"假巡逻"这一管理痛点而生。系统通过RFID电子标签与手持终端的配合,实现了巡逻路线、时间、人员的精准记录与管理。
核心需求可以归纳为三点:
- 强制规范巡逻路线:通过预埋的电子标签,确保保安必须到达指定位置才能完成打卡
- 精确记录巡逻时间:利用高精度RTC模块,记录每次打卡的准确时间,避免时间造假
- 数据可追溯可分析:所有打卡数据电子化存储,便于后期查询统计和分析
2. 硬件系统设计详解
2.1 核心硬件选型与考量
主控芯片选择:
考虑到低功耗和成本因素,推荐使用STM32L系列单片机。以STM32L476为例,其具有:
- 超低功耗特性(运行模式80μA/MHz,停止模式1.7μA)
- 丰富的外设接口(SPI、I2C、USB等)
- 充足的Flash和RAM空间(1MB Flash/128KB SRAM)
提示:选择LQFP64封装便于手工焊接,且IO口数量适中,适合本项目需求。
RFID模块设计:
系统采用13.56MHz的RFID方案,相比125kHz具有以下优势:
- 读取距离更稳定(5-10cm)
- 抗干扰能力更强
- 标签存储容量更大(典型1KB)
关键电路设计要点:
- 天线匹配电路需精确计算,通常采用π型匹配网络
- 信号调理电路要加入带通滤波,抑制13.56MHz以外的干扰
- 读卡芯片推荐使用MFRC522或PN532,两者都有成熟的库支持
数据存储方案:
W25Q系列SPI Flash是理想选择,具体型号建议:
- W25Q128JVSIQ(16MB容量)
- 支持SPI模式0和3
- 擦写寿命10万次
- 数据保存20年
电路设计注意事项:
- 上拉电阻确保SPI总线稳定性(通常4.7kΩ)
- 在WP和HOLD引脚加上拉
- VCC旁路电容必不可少(0.1μF+10μF组合)
2.2 电源管理系统设计
电池选型:
推荐18650锂离子电池(3.7V/2600mAh)方案,优点包括:
- 容量大,单次充电可使用3-5天
- 支持快充(最大1C充电电流)
- 循环寿命长(约500次)
充电管理电路:
采用TP4056充电IC,关键参数设置:
- 充电电流:1300mA(RPROG=1.2kΩ)
- 终止电流:130mA(10%的充电电流)
- 具有充电状态指示输出
低功耗设计技巧:
- 主控平时处于Stop模式,仅RTC运行
- 外设电源通过MOSFET控制,不用时彻底断电
- 显示屏采用分段供电,非活跃区域可关闭
- RFID模块间歇工作(如每200ms唤醒一次)
3. 软件系统实现
3.1 系统架构与关键流程
软件采用分层架构设计:
code复制应用层:用户交互、报警处理
业务层:巡逻逻辑、数据管理
驱动层:硬件抽象、外设驱动
主程序流程图:
- 系统初始化(时钟、外设、文件系统)
- 进入低功耗模式
- RFID中断唤醒
- 读取标签并校验
- 记录打卡数据
- 返回低功耗模式
3.2 关键代码实现解析
RFID读取实现:
c复制uint32_t RFID_Scan(void) {
uint8_t uid[10];
uint8_t uidLength;
if(PCD_ReadCardSerial(&uid[0], &uidLength)) {
uint32_t tagID = 0;
for(int i=0; i<uidLength; i++) {
tagID = (tagID << 8) | uid[i];
}
return tagID;
}
return 0;
}
数据存储实现:
c复制void Save_Log(PatrolLog log) {
static uint32_t sector = 0;
static uint32_t offset = 0;
// 每扇区4KB,存储32条记录
if(offset >= 4096) {
sector++;
offset = 0;
if(sector >= 4096) sector = 0; // 16MB Flash可存131072条记录
}
W25Q_Write((uint8_t*)&log, sector*4096+offset, sizeof(PatrolLog));
offset += sizeof(PatrolLog);
}
3.3 低功耗优化技巧
实测数据表明,通过以下优化可将平均功耗从15mA降至2.8mA:
- 将HCLK从80MHz降至16MHz
- 外设时钟不用时关闭
- 使用HAL_Delay()替代软件延时
- GPIO不用时设为模拟输入模式
- 降低SPI时钟频率(RFID通信时1MHz足够)
4. 系统集成与测试
4.1 硬件组装要点
- PCB布局建议:
- 数字与模拟部分分区布局
- 射频走线尽量短且等长
- 电源走线足够宽(建议20mil以上)
- 结构设计要点:
- 外壳预留足够的天线空间
- 按键采用防水设计(IP65等级)
- 电池仓设计要考虑更换便利性
4.2 系统测试方案
功能测试项:
- RFID读取距离测试(5-10cm)
- 连续打卡响应时间(<1s)
- 数据存储可靠性测试(断电恢复)
- 低功耗测试(待机电流<3mA)
压力测试项:
- 高温高湿环境测试(40℃/90%RH)
- 跌落测试(1.5m高度,6个面)
- 按键寿命测试(10万次按压)
5. 常见问题与解决方案
5.1 RFID读取不稳定
可能原因及对策:
- 天线匹配不良 → 重新计算匹配网络参数
- 环境金属干扰 → 调整标签安装位置或加屏蔽
- 电源噪声 → 加强电源滤波(LC滤波)
5.2 数据丢失问题
预防措施:
- 写入前先擦除整个扇区
- 重要数据双备份存储
- 定期检查Flash坏块
- 加入CRC校验机制
5.3 功耗异常偏高
排查步骤:
- 测量各模块工作电流
- 检查是否有GPIO漏电
- 确认低功耗模式配置正确
- 检查外设电源是否彻底关闭
6. 项目优化与扩展
在实际部署中,可以考虑以下优化方向:
- 加入GPS模块实现室外定位
- 使用LoRa实现远程数据传输
- 增加指纹识别模块强化身份认证
- 开发手机APP实现数据可视化
从实际使用反馈来看,这套系统将巡逻漏检率从原来的约15%降低到了不足2%,大幅提升了校园安防水平。一个容易被忽视但很重要的细节是:电子标签的安装高度建议在1.5米左右,这个高度既方便读取又不易被故意遮挡。