前言

在鸿蒙生态的LiteOS实训平台上,智能门禁是一个非常综合的物联网项目:包含串口协议驱动、指纹生物识别、舵机执行机构、传感器闭环检测、RTOS多任务调度、Wi‑Fi云端双向通信
本篇基于ZHIoT智慧家居实训平台,主控STM32L431VCTx,搭配ATK‑AS608光学指纹模块、MG996R舵机、E18‑D80NK红外光电开关、ESP‑M2 Wi‑Fi模组,完整拆解一套可以指纹开锁、自动关门、LCD本地显示、云端远程控制的智能门禁系统。

很多同学做嵌入式实验只跑通现象,看不懂底层协议逻辑;本文会从硬件连接、指纹协议原理、LiteOS多任务架构、关键业务流程、踩坑排错、创新拓展几个角度来讲,适合正在学习RTOS、串口外设、物联网设备开发的同学参考。

一、整体系统架构

硬件组成

  • 主控:STM32L431VCTx,运行Huawei LiteOS实时操作系统
  • 指纹识别:ATK‑AS608光学指纹模块(AS60x SOC)
  • 执行机构:MG996R舵机,模拟门禁闸机
  • 检测传感器:E18‑D80NK红外光电开关,检测门闸是否到位
  • 联网模组:ESP‑M2 Wi‑Fi模块,对接物联家居云平台
  • 人机交互:TFT‑LCD显示屏、实体按键、PC调试串口

信号接口分配

信号MCU引脚功能
LPUART1_TX/RXPB11 / PB10和AS608指纹模块通信,波特率57600
WAK触摸感应PC6手指触碰指纹模块输出高电平,做按压检测
舵机PWM输出PA11TIM1_CH4输出50Hz PWM,驱动MG996R舵机
光电开关输入PD13检测门闸开/关到位状态

系统工作简要流程
手指按压指纹采集窗 → WAK引脚产生高电平触发检测 → STM32通过LPUART1下发AS608协议指令,完成图像采集、特征提取、指纹搜索匹配;匹配成功输出PWM驱动舵机开门;光电开关确认门已经到位,LCD刷新状态同时Wi‑Fi上报云端;5秒之后自动关门。同时云平台下发指令,也可以远程控制门闸开关。

核心设计亮点:不是舵机转动就直接判定开门成功,依靠光电开关做物理闭环确认,保证云端显示状态和真实门状态保持一致,这是安防设备非常重要的可靠性设计。

二、ATK‑AS608指纹模块工作原理与通信协议

AS608不是简单输出高低电平的传感器,它是一套带SOC的协议型外设,所有操作都要遵守AS60x通信协议,主控发送指令包,模块返回应答包。

  1. 光学采集:LED光源照亮手指,依靠指纹脊、谷反光差异生成灰度指纹图像;
  2. 特征提取:芯片对图像处理,提取指纹关键点特征,存放在模块内部的CharBuffer缓冲区;
  3. 模板存储:两次录入同一枚指纹的特征合并,生成指纹模板,存入模块Flash指纹库,最多存储300组指纹;
  4. 1:N高速搜索识别:将采集指纹特征和库内全部模板比对,返回匹配ID和匹配得分。

数据包格式

命令包:包头0xEF01 +4字节芯片地址 +包标识0x01 +包长度 +指令码+参数 +2字节校验和
应答包:包头0xEF01 +4字节芯片地址 +包标识0x07 +包长度 +确认码+数据 +2字节校验和

确认码用来判断执行结果:00H代表执行成功;02H没有检测到手指;08H指纹不匹配;09H未搜索到指纹。

实验中高频使用指令:

  • PS_GetImage(01H):采集指纹图像
  • PS_GenChar(02H):图像生成指纹特征
  • PS_RegModel(05H):合并两次特征生成指纹模板
  • PS_StoreChar(06H):保存模板到Flash指纹库
  • PS_HighSpeedSearch(1BH):高速全库搜索指纹

三、Huawei LiteOS多任务软件架构

工程采用分层多任务设计,业务拆分三个独立任务,避免单循环阻塞,是RTOS开发典型写法。

任务名称作用
as608_handle_task 指纹任务指纹触摸检测、指纹录入Add_FR、指纹识别press_FR、舵机门控、5s自动关门逻辑
control_task 控制任务Wi‑Fi网络处理、解析云端下发OC协议指令、设备状态上报、心跳维护
view_task 显示任务LCD屏幕刷新,展示连接状态、指纹结果、门禁开/关状态

main函数流程:硬件外设初始化 → LiteOS内核初始化 → 创建三个业务任务 → 启动操作系统内核LOS_Start()

1)底层驱动封装思想

工程把协议通信封装成基础函数:

  • SendMessageDate_v2():按照协议格式组装、发送指令数据包;
  • JudgeStr():串口接收数据中查找应答包头,获取模块返回确认码;

上层所有指纹操作,都是调用这两个基础函数封装的PS_xxx()指令函数。

这种封装思路可以复用到所有串口协议模块:底层组包解析,上层业务只关心返回确认码,不用关心字节拼接细节。

2)指纹录入流程 Add_FR

按键Key1触发指纹录入,状态机驱动完整流程:

  1. 发送PS_GetImage()采集手指图像
  2. PS_GenChar()生成特征存入CharBuffer1
  3. 再次按压手指,再次采集图像,生成特征存入CharBuffer2
  4. PS_Match()比对两次指纹特征,不一致需要重新录入
  5. PS_RegModel()合并两份特征生成指纹模板
  6. PS_StoreChar()将模板存入指纹库指定ID位置

两次采集比对是为了保证录入指纹质量,避免一次按压质量差导致后续识别失败。

3)指纹识别流程 press_FR

指纹任务循环检测WAK触摸引脚,做3次×100ms软件消抖,只有检测到“无手指→有手指”上升沿,才触发一次识别,防止长按重复识别。

  1. PS_GetImage()采集指纹图像
  2. PS_GenChar()提取特征
  3. PS_HighSpeedSearch()在全部300个指纹模板中高速搜索
  4. 如果匹配成功得到指纹ID和匹配得分,调用门控函数开门。

4)门禁执行与云端双向链路

核心函数door_open_close_operation(),实现完整闭环逻辑:

  1. 收到开门/关门请求,先做状态合法性校验,避免重复执行;
  2. 输出PWM控制舵机转动;
  3. 循环等待光电开关E18‑D80NK反馈到位信号,超时直接上报舵机故障;
  4. 更新LCD本地显示;
  5. 通过ESP‑M2模组上报门禁状态到云平台。
  • 上行:本地门状态变化,封装OC协议帧上报物联平台;
  • 下行:云端下发0304控制指令,STM32解析指令,同样调用door_open_close_operation()完成远程开关门。

同时逻辑中记录开门时间,门处于打开状态超过5000ms,自动执行关门动作。

四、实验现象

  1. 上电之后LCD显示STATUS:Connected,指纹模块握手成功;
  2. 按下Key1触发录入,按提示两次按压手指,串口打印录入成功,LCD提示指纹录入成功;
  3. 按压已录入指纹,识别匹配成功,舵机驱动门闸打开;5秒后自动关门;
  4. 物联平台页面可以看到门禁实时状态历史记录;平台上开关按钮,可以远程控制门闸开、关。

串口调试助手可以完整观察:录入、识别、开门、关门整套流程日志输出,方便调试排错。

五、实验踩坑记录(嵌入式开发高频问题)

  1. 现象:反复打印指纹模块连接失败
    排查:本质收不到AS608应答包。优先检查排线接触,其次核对串口波特率57600。握手底层就是调用读系统参数指令探测应答包,硬件接触不良是实训平台最常见故障。

  2. 现象:录入提示两次指纹不一致
    原因:手指按压位置偏,只用指尖采集,图像特征点不足。需要手指放平,完整覆盖采集窗口。模块返回不同确认码,分别对应手指过干、过湿、图像杂乱等情况。

  3. 现象:手指快速点按指纹模块,识别无响应
    原因:程序做了消抖与边沿触发,需要持续按压大约0.5s,快速触碰会被消抖过滤,用来解决误触发、长按重复识别问题。

  4. 现象:指纹识别成功,但是不会立刻打印开门成功
    重点:代码不会舵机转动就直接判定开门;需要等待光电开关检测到门闸物理状态变化之后,才算真正完成开门,1.5s超时还没有检测到位,上报舵机故障。

安防产品不能只相信执行指令,一定要有物理传感器反馈闭环,否则会出现界面显示开门,实际门没有打开的严重bug。

六、拓展创新思考

这套实训原型可以延伸出很多产品化思路:

  1. 多因子认证:增加RFID刷卡,实现指纹+刷卡双重校验,满足高安全场景;
  2. 指纹模板备份恢复:利用模块指令把指纹模板导出备份,模块损坏不用全部重新录入;
  3. 云端管理指纹:扩展云平台指令,支持远程下发指令新增、删除指纹,适用于办公室门禁;
  4. 门禁审计日志:把开门时间、指纹ID、匹配得分一起上传云端,实现考勤、开门记录审计;
  5. 低功耗改造:主控平时进入STOP低功耗,WAK外部中断唤醒MCU,适合电池供电门锁;
  6. 安防告警:多次指纹识别失败触发告警,门长时间未关闭联动蜂鸣器报警。

结尾

这个智能门禁项目,把串口外设驱动、生物识别协议、RTOS多任务、传感器闭环、物联网云通信全部串联起来。
做实验不只是看现象,看懂手册标准流程和工程代码实现的差异非常关键:手册给出标准流程,实际工程会增加消抖、校验、故障超时、状态去重这些工程化处理,这也是从跑通Demo走向真正产品的必经之路。

如果你在学习LiteOS、STM32外设开发,这个项目非常值得动手复现一遍。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐