当前位置: 首页 > news >正文

【STM32】遥控伸缩门禁改NFC刷卡

NFC门禁控制系统 - 需求文档

一、硬件配置

1. 主控芯片

  • 型号: STM32F103C8T6
  • 封装: LQFP48

2. 外设清单

外设型号数量
NFC读卡器MINI RFID-RC5221个
OLED显示屏0.96寸 4针IIC接口 128x641个
有源蜂鸣器3.3V有源1个
LED板载PC131个
BL1551双通道双向模拟开关3个

二、引脚分配

STM32引脚功能表

STM32引脚功能连接的设备
PA0OLED_SCLOLED屏幕时钟
PA1OLED_SDAOLED屏幕数据
PA3RC522_RSTRC522复位
PA4RC522_SDA数据接口)
PA5RC522_SCKRC522时钟
PA6RC522_MISOSPI 接口主入从出
PA7RC522_MOSISPI 接口主出从入
PB0Register_Mode注册模式触发(低电平=注册模式)
PB8Remote_PAUSE遥控器暂停键
PB9Remote_OPEN遥控器开门键
PB10Remote_CLOSE遥控器关门键
PB11Buzzer有源蜂鸣器控制
PC13LED板载LED指示灯

RC522接线

RC522引脚连接
3.3V3.3V电源
GNDGND
RSTPA3
SDAPA4
SCKPA5
MOSIPA7
MISOPA6
IRQ悬空

OLED屏幕接线

OLED引脚连接
GNDGND
VCC3.3V
SCLPA0
SDAPA1

遥控器控制(通过BL1551)

STM32 PB8 ── BL1551 ── 遥控器暂停按钮 STM32 PB9 ── BL1551 ── 遥控器开门按钮 STM32 PB10 ── BL1551 ── 遥控器关门按钮

有源蜂鸣器接线

蜂鸣器引脚连接
GNDGND
I/OPB11

三、功能需求

1. 卡片注册功能

  • 将PB0引脚接地(低电平)进入注册模式
  • 在注册模式下刷NFC卡,该卡将被注册
  • 最多支持5张注册卡
  • 注册成功显示"Card ID: XX XX XX XX"和"注册成功"
  • 注册成功LED闪烁3次作为提示

2. 卡片认证功能(正常使用模式)

  • PB0保持高电平(默认上拉)为正常使用模式
  • 刷已注册卡:显示"Card ID: XX XX XX XX"和"认证通过",蜂鸣器响两声
  • 刷未注册卡:显示"Card ID: XX XX XX XX"和"认证失败",蜂鸣器响三声

3. 门禁控制功能

刷卡动作逻辑:

  • 第1次刷已注册卡:按暂停键 → 按开门键(门开启)
  • 第2次刷已注册卡:按暂停键 → 按关门键(门关闭)
  • 循环往复

开门保护:

  • 开门3秒后自动按暂停键,防止门开过大

4. 蜂鸣器声音提示

场景声音模式
注册卡刷卡成功两声短响(嘀-嘀)
未注册卡刷卡三声长响(嘟-嘟-嘟)

5. OLED显示界面

场景显示内容
系统启动“=== 欢迎 ===” + “请刷卡”
注册模式刷卡“Card ID: XX XX XX XX” + “注册成功”
已注册卡刷卡“Card ID: XX XX XX XX” + “认证成功”
未注册卡刷卡“Card ID: XX XX XX XX” + “认证失败L”
门已暂停“Door Paused”
3秒无操作恢复"=== 欢迎 ===" + “请刷卡”

四、技术要求

1. 通信方式

  • RC522: 软件SPI模拟(不使用硬件SPI)
  • OLED: 软件I2C模拟(不使用硬件I2C)

2. 编译工具链

  • 编译器: arm-none-eabi-gcc
  • 构建系统: CMake
  • 烧录工具: OpenOCD + ST-Link

3. 驱动要求

  • 禁用HAL库的硬件I2C、SPI驱动
  • 全部使用GPIO模拟实现

五、代码文件结构

--- ## 六、关键函数说明 | 函数名 | 功能 | |-------|------| | `LED_Blink(times, delay)` | LED闪烁指定次数 | | `Buzzer_Beep(duration)` | 蜂鸣器响指定时长 | | `Buzzer_Success()` | 成功提示音(两声短响) | | `Buzzer_Fail()` | 失败提示音(三声长响) | | `CheckRegisteredCard(cardID)` | 检查卡是否已注册 | | `RegisterCard(cardID)` | 注册新卡 | | `ControlDoor(command)` | 控制门('O'=开门,'C'=关门,'P'=暂停) | | `DisplayCardID(cardID, isRegistered)` | 显示卡号和认证状态 | | `RC522_ReadCardID(cardID)` | 读取NFC卡ID | | `OLED_Init()` | OLED初始化 | | `OLED_ShowString()` | OLED显示字符串 | --- ## 七、使用流程 ### 1. 首次使用 - 注册卡片 1. 将PB0引脚接地(低电平) 2. 给STM32上电 3. 刷需要注册的NFC卡 4. 显示"Register OK"表示注册成功 5. 断开PB0接地,恢复正常使用 ### 2. 正常使用 1. 确保PB0处于高电平状态 2. 刷已注册卡控制门的开/关 3. 未注册卡会触发报警提示 # 实验分析
http://www.gsyq.cn/news/1351280.html

相关文章:

  • J-Link GD32F303CC 连接与速度测试报告
  • 【c++面向对象编程】第43篇:可变参数模板(C++11):优雅处理不定长参数
  • MelonLoader完整教程:5分钟掌握Unity游戏模组加载终极方案
  • 【从0到1:一个篮球迷的“全栈执念”】后端+小程序全开源,跑起来就是完整社区
  • Agent Framework:理解关键区别
  • 实测百度网盘提速:从pandownload老玩家的视角,聊聊百度网盘不限速下载与解析的那些事
  • 【大白话说Java面试题 第68题】【JVM篇】第28题:对于 JDK 自带的监控和性能分析工具用过哪些?一般你怎么用的?
  • AI Agent替代房产顾问?实测对比报告:12城27个项目的人效、客诉率与成交周期数据全公开
  • python游泳用品专卖店系统
  • 电商平台SQL数据层设计实战指南
  • 国产多模态大模型 vs Stable Diffusion:开发者该如何选?
  • 鸿蒙云端相册页面构建:最近照片网格与备份队列模块详解
  • 2026年5月办公空间设计趋势与优质服务商洞察 - 2026年企业推荐榜
  • 深入骨髓的性能剖析:IntelliGit 启动与 Diff 优化的前世今生
  • JDK1.7 升级到 JDK1.8 后 HashMap 数据结构变化有哪些影响
  • AI辅助编程:发展现状、效率评估与未来展望
  • 因果本是叙事
  • Linux awk 数据分析、字段截取实战
  • 【央行金融科技白皮书深度解码】:AI Agent在跨境支付、信贷审批、监管报送三大场景的9项强制性技术基线
  • Linux grep 文本过滤与正则实战——日志筛选、文本匹配神器
  • NotebookLM移动端响应延迟高达2.7秒?揭秘GPU加速未启用背后的架构真相,3步强制优化
  • 别再死磕传统SEO!2026年AI搜索流量爆发,头部GEO公司推荐与转型指南 - 商业科技观察
  • 实测taotoken在不同时段api调用的响应延迟与稳定性表现
  • 巧家县黄金回收店铺哪家好 靠谱门店推荐及联系方式 - 莘州文化
  • 江城哈尼族彝族自治县黄金回收贵金属回收店推荐 联系方式 - 莘州文化
  • SEO老炮儿绝不外传的ChatGPT写作心法(含独家“搜索意图-语义簇-段落权重”三维校准表)
  • TranslucentTB启动失败终极指南:3分钟解决Microsoft.UI.Xaml.2.8缺失问题
  • 别再盲猜了!NotebookLM样本量计算的5步工业级流程,含A/B测试最小样本量速查表(仅限内部团队流通版)
  • 【Veo 2K/4K视频生成终极设置指南】:20年AI视频工程师亲测的8项关键参数调优清单
  • 终极Windows本地语音转文字神器:TMSpeech完全免费离线解决方案