🏠 AI 门禁 × 蓝牙智慧家居 · AIoT 综合实训(升级版 v2.0)

基于已完整落地的真实项目代码(K210 边缘人脸识别 + STM32F407 下位机 + DX-BT24 BLE 微信小程序 + PySide6 考勤上位机,共 114 项已实现功能)开展的三天 AIoT 全栈实训。
学员:23级大三电子信息(已有 C 下位机 + PySide6 + OpenCV 基础),重点在四端集成联调与 Vibe Coding。

🤖 K210 边缘 AI 人脸识别 ⚙️ STM32F407ZET6 标准库 📱 微信小程序 BLE 🔵 DX-BT24(FFE0/FFE1) 🖥️ PySide6 考勤上位机 🌡️ DHT11 温湿度 ⚡ Vibe Coding 📡 pyserial

🎯 三天课程目标

Day 1 · 下位机 + 边缘端打通

三串口架构讲解、Keil 编译烧录、串口指令控制 LED/蜂鸣器、K210 人脸注册与 USART3 联调、pyserial 解析帧

Day 2 · 小程序 + 上位机双线

小程序 BLE 控制(Vibe Coding)、温湿度折线图、HMI 仪表盘扫描动画与 10 秒在场打卡机制

Day 3 · 四端集成演示

上班/下班场景模式、陌生人报警全链路、考勤规则与 CSV 导出、打包部署、完整演示颁证

综合能力提升

AIoT 四端全栈思维、AI 辅助开发体验、串口/BLE 联调方法论、防误触发的工程化思维

📅 三天进度路径

Day1 上午 · 架构 + 烧录 + 串口控制打通
Day1 下午 · K210 联调 + pyserial基础
Day2 上午 · 小程序 BLE(Vibe)进阶
Day2 下午 · HMI 考勤核心逻辑进阶
Day3 上午 · 场景模式 + 全链路联调综合
Day3 下午 · 演示验收 + 打包颁证收尾

👥 课堂角色图例

🔧 提前准备老师课前完成,学员直接用
📖 老师讲授知识点讲解与演示
✍️ 学员动手学员独立编写代码
🤖 Vibe CodingAI 辅助开发(Cursor/Claude)
🔗 全员联调全员参与系统集成联调
💡 v2.0 升级要点全部教学内容以已验证落地的项目代码为蓝本(非纸面设计):K210 替代 K230、DX-BT24 替代 HM-10、考勤打卡业务替代简单门禁,每个验收项都对应一条真实跑通过的数据链路。

🔄 系统数据流总览(共 9 条端到端链路)

🧠 K210
人脸识别
⚙️ F407
USART3 收帧
💡 LED+蜂鸣
常亮/爆闪 3s
+
🖥️ USART1
→HMI 打卡
+
📡 USART2
→BLE 推送
📱 小程序
CMD 指令
🔵 DX-BT24
BLE 透传
⚙️ F407
USART2 解析
💡 LED 6模式
+蜂鸣器
|
🌡️ DHT11
每5s上报→小程序
💡 架构核心F407 是三串口路由中枢:USART1(115200)连 PC 上位机做考勤与日志、USART2(9600)连 DX-BT24 蓝牙模块与小程序双向透传、USART3(115200)接收 K210 人脸识别帧。人脸事件同时分发到本地效果(LED/蜂鸣器)、HMI(10 秒在场打卡)和小程序(考勤页实时刷新),三端状态一致。

🗺️ 系统架构总览(与实际代码一致)

┌─────────────┐ │ K210 边缘 │ 人脸检测/识别/注册(BOOT 键) │ 计算板 │ 输出 face_index + score └──────┬──────┘ │ USART3 115200(PB10/PB11) │ FACE:person0:96.8\r\n · REG:person0\r\n ↓ ┌──────────────────────────────────────────────────┐ │ STM32F407ZET6 下位机 v2.0 │ │ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ │ │ │ LED │ │ Buzzer │ │ DHT11 │ │ KEY │ │ │ │ 6 模式 │ │ 蜂鸣器 │ │ 温湿度 │ │ 4 按键 │ │ │ │ TIM4 │ │ │ │ PG9 │ │ │ │ │ └────────┘ └────────┘ └────────┘ └────────┘ │ │ BLE 环形缓冲 256B + 主循环轮询组帧 │ └───────┬────────────────────────┬──────────────────┘ │ USART1 115200 │ USART2 9600 │ PA9/PA10 日志+考勤帧 │ PA2/PA3 BLE 双向 ↓ ↓ ┌───────────────┐ ┌────────────────┐ │ PySide6 HMI │ │ DX-BT24 BLE │ │ 考勤上位机 │ │ Service FFE0 │ │ · 仪表盘扫描 │ │ Char FFE1 │ │ · 10s 在场打卡│ └───────┬────────┘ │ · 人员管理 │ │ BLE Notify / Write │ · 考勤+CSV │ ↓ └───────────────┘ ┌─────────────────┐ │ 微信小程序 │ │ 首页·控制·考勤 │ │ ·设置 4 页暗色 │ └─────────────────┘

⚙️ 各端功能详解(已实现 114 项功能)

🧠 K210 边缘 AI 计算板(7 项功能)
功能模块功能细节
人脸检测/识别摄像头实时帧分析,与已注册人员比对,输出 face_index + 置信度
人脸注册按 BOOT 键现场注册,按 person0/person1… 序号递增建库,支持多人
陌生人识别未注册人员输出 FACE:unknown:0.0
识别结果帧FACE:person<N>:<score>\r\n 经 UART 发给 F407
注册成功帧REG:person<N>\r\n,F407 本地打印不透传,HMI 据此更新注册状态
🔌 STM32F407ZET6 下位机(34 项功能)
功能模块功能细节
USART1(调试/考勤口)PA9/PA10,115200,所有模块日志 printf 回显([SYS]/[BLE]/[K210]/[DHT11]/[KEY]),HMI 从此口取 FACE/REG 帧
USART2(BLE 口)PA2/PA3,9600,连 DX-BT24 透传;256B 环形缓冲 + BLE_Poll() 主循环以 \n 组帧
USART3(K210 口)PB10/PB11,115200,接收 FACE/REG 帧
DHT11 温湿度PG9 单总线 + 4.7kΩ 上拉,40bit 读取期间 __disable_irq() 防 TIM4 干扰,校验和验证,每 5s 上报 + 上电立即上报
LED 6 模式驱动TIM4 1kHz LED_Tick():全灭/呼吸(默认)/跑马/流水/爆闪/常亮
蜂鸣器CMD:BEEP 短鸣 200ms;陌生人报警长鸣 3s
K210 事件响应识别成功→LED 常亮 3s;陌生人→爆闪+蜂鸣 3s;超时基于 g_sys_ms 恢复呼吸灯
BLE 指令解析7 条 CMD:* 指令,收到任意 CMD 清除 K210 效果锁(s_k210_active=0
按键本地调试KEY1 流水 / KEY2 跑马 / KEY3 蜂鸣+爆闪 / KEY4 恢复呼吸灯
🖥️ PySide6 HMI 考勤上位机(31 项功能)
功能模块功能细节
系统基础暗色主题桌面应用(1200×740),左侧导航 4 页,QThread 串口线程不阻塞 UI,SerialWorker 信号驱动解析 FACE/REG 帧
仪表盘QPainter 扫描线动画(30ms 刷新)、在场计时黄色进度条(0~10s)、识别成功绿色/陌生人红色状态淡出、今日统计卡片、打卡记录表、部门出勤率、连接状态指示
核心打卡逻辑 ⭐10 秒连续在场才打卡(防误触发);离开超 4s 重新计时(PRESENCE_GAP=4);60 秒防重复打卡;正常/迟到/早退状态判定;陌生人自动写考勤记录
人员管理工号/姓名/部门/face_index 列表,新增自动分配 face_index,编辑/删除(二次确认),照片上传,REG 帧到来后更新注册状态
考勤记录日历按日查看、状态颜色区分(绿/黄/橙/红)、今日汇总、导出 CSV
设置串口扫描+连接/断开、实时日志滚动、上下班/迟到/早退时间规则配置
📱 微信小程序(42 项功能,4 页暗色主题)
页面功能细节
全局暗色主题、自定义 TabBar(emoji 图标)、globalData 状态、wx.setStorageSync 本地持久化、启动恢复历史
首页实时温度/湿度/舒适度三色卡片、Canvas 2D 温湿度折线图(最近 20 点)、超标 Toast 报警、最近 5 条门禁事件预览、陌生人震动提醒
控制页上班模式(全亮)/下班模式(呼吸灯)、4 种灯光模式按钮(2×2)、全亮/全灭快捷键、蜂鸣器短鸣(含手机振动)、三组按钮激活互斥、未连接跳转设置页
考勤页统计条(成功/陌生人/总数)、过滤 Tab、事件列表(最多 50 条)、彩色竖线状态标识、清空记录(二次确认)、实时刷新
设置页BLE 扫描(15s 自动停止)、设备名称搜索过滤、一键连接/断开、温湿度上限 Slider、Service/Char UUID 可配置(默认 FFE0/FFE1)、清除历史
BLE 通信层UUID 自动发现(子串匹配,大小写不敏感)、Notify 被动接收、_rxBuf + \n 分帧粘包处理、writeNoResponse 自动降级、意外断开检测

📡 串口通信协议设计(固件 v2.0 实测协议)

⬇️ 下行指令
(小程序 → BLE → F407)
CMD:<操作>\r\n
⬆️ 温湿度上报
(F407 → BLE → 小程序,每 5s)
DATA:TEMP:26.0:HUM:58.0\r\n
🧠 人脸结果
(K210 → F407 → HMI / 小程序)
FACE:<name>:<score>\r\n
帧示例含义方向
CMD:LED_ALL_ONLED 全部常亮(LED_MODE_ON小程序 → F407
CMD:LED_ALL_OFFLED 全部关灭(LED_MODE_OFF小程序 → F407
CMD:MODE_BREATH呼吸灯模式(上电默认 / 下班模式)小程序 → F407
CMD:MODE_FLOW流水灯模式小程序 → F407
CMD:MODE_RUNNING跑马灯模式小程序 → F407
CMD:MODE_FLASH爆闪模式小程序 → F407
CMD:BEEP蜂鸣器短鸣 200ms小程序 → F407
DATA:TEMP:26.0:HUM:58.0温湿度上报,上电立即一次 + 每 5s 一次F407 → 小程序
FACE:person0:96.8已注册人脸识别成功(face_index=0),LED 常亮 3sK210 → F407 → HMI/小程序
FACE:unknown:0.0陌生人,爆闪 + 蜂鸣 3s,HMI/小程序标红报警K210 → F407 → HMI/小程序
REG:person0K210 注册成功帧,F407 本地打印(不透传 BLE),HMI 更新注册状态K210 → F407 → HMI
⚠️ 协议要点所有帧以 \r\n 结束、接收端以 \n 为分帧符。F407 端用 256B 环形缓冲(ISR 写、BLE_Poll() 主循环组帧)防丢帧;小程序端用 _rxBuf 拼接处理 BLE 粘包;收到任意 CMD:* 会清除 K210 触发的 LED 效果锁。这三处是联调时最常见的坑,课上重点讲。

🔧 F407 串口分工

串口引脚波特率对端 / 职责
USART1PA9/PA10115200PC(CH340):日志回显 + HMI 考勤帧来源
USART2PA2/PA39600DX-BT24 BLE:小程序双向透传(FFE0/FFE1)
USART3PB10/PB11115200K210:接收 FACE / REG 帧

💡 F407 关键外设配置

外设用途关键参数
TIM4g_sys_ms 时间戳 + LED_Tick() 动效1kHz(1ms 中断)
PG9DHT11 单总线4.7kΩ 上拉,读取时关中断
板载 LED6 模式动效呼吸/跑马/流水/爆闪/常亮/全灭
蜂鸣器短鸣 / 陌生人报警200ms / 3000ms
KEY1~4本地调试流水/跑马/爆闪+蜂鸣/恢复默认

🧪 调试命令速查(XCOM / SSCOM,勾选发送新行 \r\n)

CMD:LED_ALL_ON CMD:LED_ALL_OFF CMD:MODE_BREATH CMD:MODE_FLOW CMD:MODE_RUNNING CMD:MODE_FLASH CMD:BEEP
💡 两条调试路径① 手机 BLE 调试 App(或小程序设置页)连 DX-BT24 直接下发,走 USART2 真实链路;② 串口助手连 USART1 观察 [BLE]/[K210]/[DHT11] 日志验证执行结果。Day1 上午先用这两条路径建立"指令→现象→日志"的闭环直觉。

📅 三天课程详细安排

主题:从零到"刷脸有反应" 第一天就让学员看到自己的脸触发 LED 和蜂鸣器,建立成就感
Day 1 🎯 三串口架构 · 烧录调试 · K210 注册联调 · pyserial 解析
上午 9:00 – 12:00
时间内容分工
9:00 项目总体介绍:四端架构图讲解,老师演示最终效果(刷脸打卡 + 小程序控灯 + HMI 仪表盘扫描动画) 📖 老师讲
9:30 K210 边缘 AI 介绍:KPU 是什么,为什么本地推理不联网;BOOT 键注册机制与 face_index 设计 📖 老师讲
10:00 F407 固件 v2.0 代码讲解:USART1/2/3 分工、BLE 环形缓冲 + BLE_Poll() 组帧、TIM4 1kHz LED 驱动、主循环时序 📖 老师讲
10:30 学员环境搭建:Keil 工程打开、编译(0 error 0 warning)、ST-Link 烧录,USART1 看到 [SYS] 启动广播 ✍️ 学员动手
11:00 指令控制实验:手机 BLE 调试 App 连 DX-BT24 发 CMD:MODE_FLOW/CMD:BEEP 等 7 条指令,观察 LED/蜂鸣器响应 + USART1 日志;按 KEY1~4 体验本地调试 ✍️ 学员动手
11:30 协议详解:\r\n 帧定界、CMD/DATA/FACE/REG 四类帧、环形缓冲为什么能防丢帧、BLE 粘包成因 📖 老师讲
🔧 提前准备
F407 完整固件 v2.0(三串口 + DHT11 + LED 6 模式 + 蜂鸣器 + 按键)已编译好 .hex;DX-BT24 已配好 9600 透传;烧录好备用板一块
下午 14:00 – 18:00
时间内容分工
14:00 K210 演示:现场按 BOOT 键注册人脸,串口助手看 REG:person0FACE:person0:96.8 输出 📖 老师演示
14:30 K210 × F407 USART3 联调:识别成功 → LED 常亮 3s;陌生人 → 爆闪 + 蜂鸣 3s 后自动恢复呼吸灯 🔗 全员联调
15:00 Python 串口通信:pyserial 打开 USART1、按行读取、解析 FACE:name:scoreDATA:TEMP 帧并打印 ✍️ 学员写
15:30 HMI 框架讲解:PySide6 暗色主窗口 + 左侧导航、QThread SerialWorker、信号槽把帧送进 UI 📖 老师讲
16:00 学员填写框架:设置页串口扫描/连接/断开 + 实时日志滚动面板(填空式骨架代码) ✍️ 学员动手
17:00 联调验证:摄像头前刷脸,HMI 日志面板实时显示 FACE 帧;DHT11 温湿度日志每 5s 滚动 🔗 全员联调
17:30 Day 1 总结 + 布置预习:微信小程序 BLE API(wx.createBLEConnection / Notify / 粘包) 📖 老师讲
🔧 提前准备
HMI 骨架代码(暗色主窗口 + 4 页导航 + SerialWorker 线程框架,函数签名已写,业务逻辑留空);K210 人脸识别程序已刷好开箱即用
✅ Day 1 验收标准 ① BLE 发 CMD:MODE_FLOW / CMD:BEEP → LED/蜂鸣器响应,USART1 有对应日志 ✓
② K210 刷已注册人脸 → LED 常亮 3s;陌生人 → 爆闪 + 蜂鸣 ✓
③ 自己写的 pyserial 程序能解析并打印 FACE 帧和 DATA 温湿度帧 ✓
主题:Vibe Coding 写小程序,亲手写考勤核心逻辑 AI 辅助开发主战日,UI 交给 AI,业务逻辑自己写
Day 2 🤖 小程序 BLE 四页 · HMI 仪表盘 · 10 秒在场打卡机制
上午 9:00 – 12:00
时间内容分工
9:00 小程序开发环境:微信开发者工具、wxml/wxss/js 结构、自定义 TabBar 与暗色主题方案 📖 老师讲
9:20 BLE 速览:Service/Characteristic/Notify 概念,DX-BT24 的 FFE0/FFE1,UUID 子串匹配自动发现 📖 老师讲
9:30 Vibe Coding 启动:基于封装好的 ble.js 生成设置页(扫描 15s 自动停止 + 名称过滤 + 一键连接) 🤖 Vibe Coding
10:00 老师带学员 Review:Notify 注册流程、_rxBuf 粘包分帧、writeNoResponse 降级逻辑 📖 老师讲
10:30 Vibe Coding:生成控制页(上班/下班模式 + 2×2 灯光模式按钮 + 全亮/全灭 + 蜂鸣,三组按钮激活互斥) 🤖 Vibe Coding
11:00 小程序 → DX-BT24 → USART2 完整链路联调:点按钮 → LED 模式切换 + 手机振动 + USART1 日志 🔗 全员联调
11:30 验证闭环:首页接收 DATA:TEMP:HUM 帧,温湿度三色卡片实时更新 ✍️ 学员验证
🔧 提前准备
小程序 BLE 底层封装 ble.js(适配器初始化/扫描/连接/UUID 发现/Notify/分帧全封装),学员专注业务页面而非 BLE 细节;测试号 AppID 备好
下午 14:00 – 18:00
时间内容分工
14:00 Vibe Coding:小程序首页温湿度折线图(Canvas 2D 最近 20 点)+ 考勤页事件列表(过滤 Tab + 彩色竖线) 🤖 Vibe Coding
14:40 HMI 仪表盘:QPainter 扫描线动画原理讲解,学员接入 FACE 帧驱动绿色成功/红色陌生人状态显示 📖 老师讲思路 ✍️ 学员写
15:30 核心业务 ⭐ 10 秒在场打卡机制:连续在场 10s 才打卡、离开超 4s 重新计时、60s 防重复——学员亲手实现这套防误触发状态机(本日最重要的代码) ✍️ 学员写
16:30 人员管理页:新增人员自动分配 face_index,与 K210 BOOT 键注册顺序对应;REG 帧到来更新注册状态 📖 老师讲 ✍️ 学员写
17:15 全链路验证:刷脸 → 仪表盘黄色进度条走满 10s → 写入考勤记录 → 小程序考勤页同步出现该事件 🔗 全员联调
17:45 Day 2 总结 + 课后任务:每人注册自己的人脸并在人员管理里建档,明早直接刷脸打卡 ✍️ 课后任务
✅ Day 2 验收标准 ① 小程序四页可用:BLE 连接、控制页 7 条指令有效、首页温湿度实时刷新 ✓
② HMI 仪表盘扫描动画 + 在场进度条 + 10 秒打卡机制工作正常 ✓
③ 刷脸事件在 HMI 考勤记录与小程序考勤页双端同步出现 ✓
主题:9 条数据链路全部打通,打磨细节,完整演示 收尾日,颁证日
Day 3 🎯 场景模式 · 考勤规则 · 全系统集成 · 演示验收 · 颁证
上午 9:00 – 12:00
时间内容分工
9:00 晨间真实打卡:全员用昨晚注册的人脸刷脸上班打卡,验证迟到/正常状态判定与 60s 防重复 🔗 全员联调
9:30 Vibe Coding:小程序上班/下班场景模式打磨(一键全亮/呼吸灯 + 激活态动画)—— 学员自己写 Prompt 🤖 Vibe Coding
10:00 陌生人报警全链路:未注册人脸 → F407 爆闪+蜂鸣 → HMI 红色警告+陌生人考勤记录 → 小程序震动+Toast 🔗 全员联调
10:30 考勤收尾功能:时间规则配置(上下班/迟到/早退阈值)、按日历查记录、导出 CSV、部门出勤率 ✍️ 学员写
11:00 效果锁专项调试:K210 触发 LED 效果期间小程序下发 CMD 应立即接管(s_k210_active=0),验证两路控制不打架 🔗 全员联调
11:30 分组排查 Bug,老师巡场(重点:BLE 断线重连、粘包丢帧、打卡重复计时、DHT11 读取超时) ✍️ 学员自查
下午 14:00 – 17:30
时间内容分工
14:00 各组完整演示:刷脸打卡 + 陌生人报警 + 小程序控灯 + HMI 全程可见(按验收清单逐项演示) ✍️ 分组演示
14:45 Vibe Coding 专题:现场用 AI 给系统加一个学员自定义功能(现场提需求 → 生成 → Review → 演示) 🤖 Vibe Coding
15:30 打包 + 部署:小程序体验版发布扫码可用 📖 老师演示
16:00 项目复盘:114 项功能盘点、技术亮点总结、AIoT 全栈简历怎么写、职业路径展望 📖 老师讲
16:30 自由时间:互相体验对方系统,录制演示视频留档(B站/简历用) ✍️ 自由
17:00 🎉 颁发结业证书 + 合影留念 🎓
✅ Day 3 验收标准 见"资源 & 验收"页的完整演示清单(10 项),完成 ≥ 8 项可获结业证书,全部 10 项完成颁发"AIoT 全栈达人"特别奖章。

🔧 提前准备(老师完成,学员直接用)

准备原则凡是与本次实训核心技能无关的底层细节(BLE 协议层、K210 模型推理、串口线程框架),均提前封装好。升级版的最大优势:所有准备物均为已落地项目的真实代码,零纸面风险。
模块内容完成度
F407 固件 v2.0三串口 + BLE 环形缓冲 + DHT11 + LED 6 模式 + 蜂鸣器 + 按键 + K210 事件响应(34 项功能全实现)●●●●● 100%
K210 程序人脸检测/识别/BOOT 键注册 + FACE/REG 串口帧输出(开箱即用)●●●●● 100%
HMI 骨架暗色主窗口 + 4 页导航 + SerialWorker 线程 + 帧解析(仪表盘动画与打卡状态机留空给学员)●●●○○ 60%
小程序 BLE 底层ble.js:适配器/扫描/连接/UUID 自动发现/Notify/分帧粘包全封装●●●●● 100%
小程序参考实现完整 4 页参考版(学员卡住时对照,不直接发放)●●●●● 100%
协议/接口文档21-下位机数据接口文件 + 26-完整功能清单(即本文档配套资料)●●●●● 100%

✍️ 学员动手编写内容

内容难度课时
BLE App 发 7 条 CMD:* 指令控制 LED/蜂鸣器,对照 USART1 日志 ★★ Day1 上午
pyserial 读 USART1 + 解析 FACE/DATA 帧 + 实时打印 ★★ Day1 下午
HMI 设置页:串口扫描/连接/断开 + 实时日志滚动 ★★ Day1 下午
HMI 仪表盘:FACE 帧驱动成功/陌生人状态显示 + 淡出动画 ★★ Day2 下午
⭐ 10 秒在场打卡状态机(连续在场 / 4s 离开重置 / 60s 防重复) ★★★ Day2 下午
人员管理:face_index 自动分配 + REG 帧更新注册状态 ★★ Day2 下午
考勤规则配置 + 日历查询 + CSV 导出 ★★ Day3 上午

🤖 Vibe Coding 任务(AI 辅助生成)

Vibe Coding 原则AI 生成代码不是"拿来就用"。每次生成后,老师带学员 Review 关键 API 和数据流。UI 层交给 AI,核心业务逻辑(打卡状态机、帧解析)必须学员自己写——这是"会用 AI"和"被 AI 用"的分界线。
生成内容推荐工具课时
小程序设置页(BLE 扫描 15s + 名称过滤 + 一键连接/断开)CursorDay2 上午
小程序控制页(上班/下班模式 + 2×2 灯光按钮 + 互斥激活态)CursorDay2 上午
小程序首页温湿度折线图(Canvas 2D 最近 20 点)Cursor / ClaudeDay2 下午
小程序考勤页(统计条 + 过滤 Tab + 事件列表)CursorDay2 下午
小程序场景模式打磨(激活态动画)—— 学员自己写 PromptCursorDay3 上午
HMI 界面美化(统计卡片 / 部门出勤率进度条)Cursor / ClaudeDay3 上午
学员自定义功能(自由发挥,现场 Demo)任意 AIDay3 下午

🔩 硬件清单(与实际项目一致)

主控开发板
STM32F407ZET6
三串口路由中枢(标准库 V1.8)
每组 1 块
边缘 AI 计算板
K210(KPU)
本地人脸识别,BOOT 键注册
每组 1 块
BLE 蓝牙模块
DX-BT24
9600 透传,FFE0/FFE1
每组 1 块
温湿度传感器
DHT11
PG9 单总线,每 5s 上报
每组 1 个
上拉电阻
4.7 kΩ
DHT11 数据线上拉至 3.3V
每组 1 个
LED 灯组
板载/外接 LED
6 模式动效演示
每组 1 套
有源蜂鸣器
5V 有源
短鸣反馈 + 陌生人报警
每组 1 个
USB-TTL 转换
CH340
USART1 连接 PC / HMI
每组 1 个
按键
板载 KEY1~4
本地调试 LED 模式
板载
仿真器
ST-Link V2
Keil 烧录调试
每组 1 个

💻 软件环境

🖥️

PC 端(提前装好)

pip install pyside6
pip install pyserial

📱

小程序端

微信开发者工具(最新稳定版)
测试号 AppID(提前备好)
Cursor 编辑器(Vibe Coding 主力)
Claude(辅助 Review 与修复)

🧠

K210 端

MaixPy 固件(已刷好)
人脸识别程序(开箱即用)
BOOT 键注册,无需 IDE
MobaXterm / SSCOM(串口观察)

⚙️

STM32 端

Keil MDK 5(已配置 F4 Pack)
STM32F4xx 标准库 V1.8.0
ST-Link 驱动(已安装)
XCOM 串口调试助手

📋 项目技术亮点(简历用)

项目名称:基于 K210 边缘算力的 AI 门禁考勤 × 蓝牙智慧家居系统 技术栈:STM32F407(标准库)· K210 KPU 边缘推理 · 微信小程序 BLE · PySide6 · pyserial 项目描述: · 设计并实现四端架构:K210 UART → STM32F407 三串口路由 → BLE 小程序 / PySide6 考勤上位机,共 9 条端到端数据链路、114 项功能 · K210 KPU 本地人脸识别(无需联网),识别/陌生人事件经 F407 分发驱动 LED 报警、HMI 考勤与小程序推送三端联动 · F407 端实现 256B 环形缓冲 + 主循环组帧的 BLE 收包机制,DHT11 单总线读取采用关中断保护时序,TIM4 1kHz 驱动 6 种 LED 动效 · 独立设计"10 秒连续在场打卡"防误触发状态机(离开 4s 重置 / 60s 防重复 / 迟到早退判定),完成人员管理与 CSV 导出 · 微信小程序 4 页暗色应用:BLE UUID 自动发现、Notify 粘包分帧、Canvas 温湿度折线图、考勤事件实时同步 · 采用 Vibe Coding(Cursor + Claude)完成小程序约 70% UI 代码,核心业务逻辑手写,具备 Review AI 代码能力

🎯 最终演示验收清单(对应 9 条真实数据链路)

0 / 10 完成
  • 📱 小程序设置页扫描并连接 DX-BT24,状态显示"已连接",断开有二次确认
  • 💡 小程序控制页 7 条指令全部有效:4 种灯光模式 + 全亮/全灭 + 蜂鸣(手机同步振动),按钮激活态互斥正确
  • 🌡️ 小程序首页温湿度卡片每 5s 刷新,折线图滚动更新,超标弹 Toast
  • 🧠 K210 BOOT 键注册新人脸 → F407 打印 REG 帧 → HMI 人员管理注册状态更新
  • ✅ 已注册人脸识别成功 → LED 常亮 3s → HMI 绿色状态 + 小程序考勤页新增"通过"事件
  • 🚨 陌生人出现 → LED 爆闪 + 蜂鸣 3s → HMI 红色警告 + 陌生人考勤记录 → 小程序震动提醒
  • ⏱️ 在场 10 秒打卡机制:黄色进度条走满才写考勤;中途离开超 4s 重新计时;60s 内不重复打卡
  • 📊 HMI 考勤记录按日历可查、迟到/早退状态颜色正确、当日记录可导出 CSV
  • 🔀 效果锁验证:K210 触发 LED 效果期间,小程序下发 CMD 能立即接管控制权
  • 📦 小程序体验版扫码可用
🎓 通过标准完成 ≥ 8 项视为通过,颁发结业证书。全部 10 项完成为优秀,颁发"AIoT 全栈开发达人"特别奖章。