基于STM32的指纹刷卡智能门禁系统设计(RC522 + AS608 + 蓝牙远程开锁 + 断电记忆)

基于STM32的指纹刷卡智能门禁系统设计(RC522 + AS608 + 蓝牙远程开锁 + 断电记忆)

一把机械锁,钥匙丢了要换锁、被复制了防不住、租客退租还得换芯。本文带来一套基于 STM32F103C8T6 的多方式智能门禁系统:刷卡(RC522)、指纹(AS608)、密码(矩阵键盘)三种本地开锁方式任选其一,手机蓝牙(JDY-31)还能远程开锁;密码输错蜂鸣器即刻报警;所有指纹、卡片、密码数据写入 AT24C02 EEPROM,断电也不丢失。住宅、办公室、公共场所的门禁管理需求,一套系统全兜住。

一、系统功能总览

功能模块 具体说明
RFID 刷卡开锁 RC522 识别 MIFARE 卡唯一序列号,验证权限后开锁
指纹开锁 AS608 光学识别指纹,支持注册、验证、删除,最多存 1500 枚
密码开锁 4×4 矩阵键盘输入 6 位密码,正确开锁,错误蜂鸣报警
蓝牙远程开锁 JDY-31 蓝牙连接手机 APP,随时远程控制门的开关
锁具驱动 步进电机模拟开锁动作,验证通过即执行
数据存储 AT24C02 EEPROM 保存指纹、卡片与密码数据,断电不丢失
状态显示 显示屏实时显示系统状态与操作提示
密码管理 支持密码修改,新密码输入界面完成 6 位密码更换

二、核心模块选型对比

2.1 主控芯片:STM32F103C8T6 vs LPC1768

对比项 方案一:STM32F103C8T6 方案二:LPC1768
内核 Cortex-M3 @72MHz Cortex-M3 @120MHz
Flash/RAM 64KB / 20KB 512KB / 64KB
GPIO 37 个,够用 70 个,本系统用不上
功耗 低功耗特性突出 功耗略高
价格 约 10 元 约 35 元

选择方案一(STM32F103C8T6)。门禁系统虽模块多,但均为轻量外设,C8T6 凭稳定性、低功耗与广泛的开发支持完全胜任,性价比远超性能过剩的 LPC1768。

2.2 刷卡模块:RC522 vs PN532

对比项 方案一:RC522 方案二:PN532
协议支持 MIFARE 系列(ISO14443-A) 多协议(含更远读写距离)
接口 SPI I2C/SPI/UART 三选
读写距离 约 5cm,覆盖常规场景 可超 10cm
成本与难度 低成本、易集成 更高更复杂

选择方案一(RC522)。门禁刷卡距离本就要求贴近读写,RC522 的性能完全覆盖标准场景,SPI 集成简单、成本优势明显。

2.3 指纹模块:AS608 vs FPM10A

对比项 方案一:AS608 方案二:FPM10A
存储容量 最多 1500 枚指纹 同级
通信接口 UART,集成简单 UART
防护设计 常规室内 防水防尘,适合户外
开发资料 文档与示例代码完善 相对较少
价格 约 60 元 约 120 元

选择方案一(AS608)。室内门禁对防水防尘无硬性要求,AS608 识别精度够高、1500 枚容量绰绰有余,完善的开发文档大幅缩短集成周期,价格还便宜一半。

2.4 密码输入:4×4 矩阵键盘 vs 电容触摸按键

对比项 方案一:矩阵键盘 方案二:电容触摸按键
结构 行列扫描,8 线接 16 键 电容感应,无机械触点
引脚占用 极少 每键一路或矩阵
寿命 机械触点,寿命长 无机械磨损,寿命极长
成本 极低,技术成熟 较高

选择方案一(4×4 矩阵键盘)。行列交叉扫描的结构把 16 个按键压缩到 8 个 GPIO,成本低、实现成熟,性价比项目的不二之选。

2.5 无线模块:JDY-31 蓝牙 vs NRF24L01

对比项 方案一:JDY-31(蓝牙4.0) 方案二:NRF24L01
连接对象 手机直连,免网关 需配对端接收设备
功耗 低功耗,利于电池续航 功耗较低
通信范围 短距离,门禁场景足够 空旷 100 米以上
配置方式 AT 指令,集成便捷 私有协议开发

选择方案一(JDY-31)。远程开锁的操作端就是用户手机,蓝牙点对点直连最直接;NRF24L01 还需额外布设接收端,本系统通信范围有限、功耗限制严格,JDY-31 是更优解。

三、系统接线总表

模块 引脚 连接 STM32 引脚 备注
RC522 SDA/SCK/MISO/MOSI PA4/PA5/PA6/PA7 SPI1,SDA 为片选
RC522 RST PB0 模块复位,IRQ 悬空,3.3V 供电
AS608 TX/RX PA10/PA9 USART1 交叉相连,3.3V 供电
JDY-31 TXD/RXD PA3/PA2 USART2 交叉相连,3.3V 供电
4×4 矩阵键盘 ROW0~ROW3 PB8/PB9/PB10/PB11 行线输出扫描
4×4 矩阵键盘 COL0~COL3 PA0/PA1/PA8/PA12 列线输入读取
步进电机(模拟锁具) IN1~IN4 PB12/PB13/PB14/PB15 经驱动电路,四相八拍转动开锁
OLED12864 SCL/SDA PB6/PB7 I2C 总线显示状态
AT24C02 SDA/SCL PB7/PB6 与 OLED 共享 I2C,A0~A2 接地,地址 0xA0/0xA1
蜂鸣器 I/O PB5 三极管驱动,密码错误报警

接线说明:AT24C02 与 OLED 挂载同一 I2C 总线,靠设备地址区分(EEPROM 写 0xA0、读 0xA1);RC522 与 AS608 分别占用 SPI1 与 USART1,各通信通道互不干扰。

四、系统软件设计

4.1 主程序流程

系统上电后依次初始化 GPIO、SPI、UART 与显示屏,进入主循环同时轮询指纹检测、矩阵键盘扫描、蓝牙开锁指令与 RFID 刷卡识别四路事件:检测到刷卡添加键即进入刷卡添加界面,成功读取卡信息后存入缓存区;按下指纹添加键进入指纹添加界面,可切换指纹编号,两次录入一致即保存;按下删除键可按编号删除指定指纹;未进入管理流程时持续判断密码输入,正确即开锁,密码修改键进入新密码输入界面完成 6 位新密码保存;输入错误立即触发蜂鸣器报警;收到手机 APP 蓝牙指令则远程解锁。主程序骨架如下:

复制代码
int main(void)
{
    System_Init();                    // GPIO/SPI1/USART1~2/I2C 初始化

    OLED_Init();
    RC522_Init();                     // 复位 + 寄存器配置 + 开天线
    AS608_Init();                     // 串口波特率设置
    Read_Data_From_EEPROM();          // 断电恢复指纹/卡片/密码数据

    while (1)
    {
        if (RFID_Card_Detected())             // 刷卡事件
            if (Check_Card(card_uid))         // 权限验证
                Unlock_Motor();               // 开锁并显示
        if (AS608_Finger_Detected())          // 指纹事件
            if (AS608_Match(&fid) == OK)
                Unlock_Motor();
        if (Key_Scan() == KEY_FUNC)           // 管理键:添加/删除/改密
            Manage_Flow();
        if (Password_Input_OK())              // 密码开锁
            Unlock_Motor();
        else if (Password_Error())
            Alarm_Beep();                     // 错误报警
        if (BT_Cmd_Received())                // 蓝牙远程指令
            if (Check_BT_Cmd())
                Unlock_Motor();
        Save_Data_To_EEPROM();                // 数据同步存储
    }
}

4.2 刷卡识别流程

RC522 复位后按 ISO14443-A 协议配置 CRC、计时器与模式寄存器并开启天线。检测到卡片后:发送寻卡命令解析卡片类型 → 防冲突处理获取唯一序列号并校验 → 选择特定卡片 → 密码验证确认访问权限 → 读指定存储块数据或写入数据,全程 CRC 校验保证完整性。序列号与 EEPROM 中的授权列表比对,命中即开锁。

4.3 指纹识别流程

系统初始化时设置指纹模块串口波特率。用户输入管理指令进入添加或验证模式:添加指纹分四步------按下手指读取图像生成特征模板 → 重复按压二次录入 → 生成指纹模板并按编号存储 → 任一步失败即重试;验证指纹时读取图像生成特征,比对通过则显示对应指纹 ID 并开锁,未匹配则提示未找到;读取失败超过 15 次自动超时退出,防止无限等待。

4.4 键盘输入流程

矩阵键盘按"初始化---扫描---处理"三段工作:行线配置为输出并全部置高防止误触发;扫描时逐行拉低、其余保持高电平,读取列线状态,某列检测到低电平即可结合当前行号定位按键;加入软件去抖动确保稳定,扫描完毕行线恢复高电平进入下一周期。按键值映射为数字 0~9 与功能键,支撑 6 位密码输入与管理操作。

4.5 数据存储与远程开锁流程

AT24C02 以 I2C 协议读写,A0~A2 接地时设备地址为 0xA0(写)/0xA1(读)。指纹编号、卡片序列号与密码数据按页写入 EEPROM,每次管理操作后同步更新,断电重启时系统从 EEPROM 恢复全部授权数据。JDY-31 经 AT 指令完成串口透传配置,手机 APP 发送的开锁指令经蓝牙到达 STM32,验证指令合法性后执行开锁并回传状态。

五、系统实现与测试

5.1 硬件焊接与调试

优先焊接短引脚元件,确保焊点光滑无短路虚焊;上电后检查供电与指示灯,逐一测试 RFID 识别、矩阵键盘响应与指纹读取,各模块性能正常。

5.2 软件调试

程序在 Keil 中编译,经 ST-Link 下载并利用断点、单步调试实时监控运行,重点解决模块间数据传输与逻辑问题,优化响应速度。

5.3 功能测试

测试项 测试方法 系统动作 结果
刷卡开锁 授权卡贴近读卡区 识别迅速,验证后开锁并显示 通过
未授权卡 非授权卡贴近 拒绝开锁 通过
指纹开锁 录入指纹后按压验证 快速比对,准确开锁 通过
指纹管理 添加/删除指纹操作 双次录入一致保存,按编号删除有效 通过
按键开锁 输入正确/错误密码 正确开锁,错误触发蜂鸣报警 通过
远程开锁 手机 APP 发送指令 蓝牙响应迅速,远程开锁成功 通过
断电记忆 断电重启后验证 指纹/卡片/密码数据完整保留 通过

六、总结

本文实现了一套以 STM32F103C8T6 为核心的多方式智能门禁系统:RC522 刷卡、AS608 指纹、矩阵键盘密码三路本地认证加 JDY-31 蓝牙远程开锁,四种开门方式覆盖全场景;密码错误报警、授权列表比对构成双重安全防线;AT24C02 让所有授权数据断电无忧。测试表明系统功能稳定、响应迅速,在安全性、低功耗与便捷性上均有良好表现。后续可扩展 WiFi 上云远程管理、开门记录云端查询与人脸识别,向智慧社区级门禁方案持续演进。

相关推荐
航飞光电市场经理1 小时前
从抗多径算法到部署优化:化工UWB定位的技术实现路径
人工智能
木头科技1 小时前
AI 工程化第四篇】Spring AI Agent 线上可观测实战:Token 成本、调用链、工具耗时、RAG 命中率怎么监控
java·人工智能·spring
吴建旭 智宅焕1 小时前
AI时代智能家居交付知识资产架构:非业务内容作为可信信息源的系统设计
人工智能·架构·智能家居
土星云SaturnCloud1 小时前
边缘计算 + AI 视频存管一体机:快递末端网点分拣提效与安全管控实战方案
服务器·人工智能·ai·边缘计算
起个名字费劲死了1 小时前
VisionMaster集成深度学习算法(基础狗)
人工智能·深度学习·算法
制造业的搬运工1 小时前
车载 PCB 打样周期与选型指南:从 IATF 16949 到 IPC-6012 的 5 个硬指标
大数据·网络·人工智能·制造·pcb工艺
55873 生态系统1 小时前
55873 正和博弈经济模型:重构数字时代商业价值体系
大数据·人工智能·重构·全域文明操作系统·55873 操作系统·55873全域文明生态体系
法狗狗技术团队1 小时前
2026年标书审查工具测评:AI标书检查软件怎么选?
人工智能·招投标·投标·标书检查·标书审查·标书制作·投标全流程
“AI国潮设计-小江”2 小时前
【SDXL实战】用AI生成“财神爷蛋糕×英歌舞人物”潮汕国潮甜品IP,附Prompt与批量生成思路
开发语言·人工智能·python·aigc