基于STM32 的物联网门店客流监测系统的设计
2023-09-27杨茗峰雷以轩何金蓬
杨茗峰,雷以轩,何金蓬
(东南大学 成贤学院,江苏南京,210088)
门店的客流情况直接影响其经营情况,掌握门店的客流情况可以帮助店主合理规划门店雇员的人数和工作时间,从而有效降低门店的运营成本,这关系到门店的生存与发展。近年来,客流统计系统的开发已经成为一个热点方向,通过对现有的客流统计系统进行调查,实现方案主要集中于入口机械栏杆装置和红外线客流量计数器,前者的设备成本高且对使用场地有一定的限制,后者在面对两名及以上顾客并排进店等场景时的监测正确率很低。目前市场上基于机器视觉算法的客流量计数器的产品相对较少,本设计在具有运行功耗低、成本较低和安装方便的同时还可接入互联网,因此具有广阔的应用空间。
1 整体方案设计
基于STM32 的物联网门店客流监测系统的整体方案设计结构如图1 所示。当雷达感应模组监测到有人进店时,唤醒智能摄像头进行人脸识别,从而得到每次顾客进入时的客流数据,并将客流数据发送至STM32 单片机,STM32 单片机控制WiFi 通信模块将客流数据经无线局域网发送至云服务器,用户使用手机App 访问云服务器即可以曲线图的形式更为直观地查看门店客流数据。
图1 系统设计结构图
2 硬件设计
■2.1 硬件组成原理概述
基于STM32 的物联网门店客流监测系统的电路原理图如图2 所示。HLK-LD2410 人体存在雷达感应模组通过通用I/O 口连接OpenMV4 H7 Plus 摄像头上的STM32H743IIK6处理器,STM32H743IIK6 处理器可驱动OV5640 感光元件采集画面,STM32H743IIK6 处理器通过UART 串口连接STM32F103C8T6 单片机,STM32F103C8T6 单片机通过UART 串口连接ATK-ESP8266 WiFi 通信模块。
图2 电路原理图
■2.2 各部分硬件介绍
2.2.1 HLK-LD2410 人体存在雷达感应模组
HLK-LD2410 是一款高灵敏度的24GHz 人体存在雷达感应模组,利用FMCW 调频连续波,对设定空间内的人体目标进行探测,结合雷达信号处理、精确人体感应算法,实现了高灵敏度的人体存在状态感应,其主要应用在室内场景,最远感应距离可达6 米,通过配置工具可配置感应距离范围、不同区间的感应灵敏度和无人延时时间等,以达到更好的人体感应效果。在本系统中,当HLK-LD2410 人体存在雷达感应模组监测到有人进店时,将信号通过通用I/O 口发送至OpenMV4 H7 Plus 摄像头上的STM32H743IIK6 处理器,随后唤醒板载的OV5640 感光元件开始采集画面,如此设计可以有效降低系统运行的总体功耗,延长感光元件的使用寿命。
2.2.2 OpenMV4 H7 Plus 摄像头
OpenMV4H7 Plus 是一个非常易用和低价的机器视觉开发组件,是一款由STM32H743IIK6 处理器和OV5640 感光元件组成的单片机摄像头,底层使用C 语言编程,其内置了MicroPython 解释器,开发者可以在嵌入式上直接使用MicroPython 语言编程,Python 的高级数据结构帮助开发者可以很容易地在机器视觉算法中处理复杂的输出。在本系统中,当OpenMV4 H7 Plus 摄像头上的STM32H743IIK6处理器收到HLK-LD2410 人体存在雷达感应模组通过通用I/O 口发送的信号后,唤醒板载的OV5640 感光元件开始采集画面,随后STM32H743IIK6 处理器开始分析画面并计算客流数据,最后通过UART 串口将分析得到的客流数据发送至STM32F103C8T6 单片机。
2.2.3 ATK-ESP8266 WiFi 通信模块
ATK-ESP8266 是一款采用串口与MCU(或其他串口设备)通信,内置TCP/IP 协议栈,能够实现串口与WiFi 之间的转换的WiFi通信模块,模块支持串口转WiFi STA、串口转AP 和WiFi STA+WiFi AP 的模式,从而快速构建串口-WiFi 数据传输方案。在本系统中,STM32F103C8T6 单片机通过UART 串口连接ATKESP8266 WiFi通信模块,使用MQTT 协议接入阿里云服务器,通过上传特定的报文实现向阿里云服务器上传当前客流数据。
■2.3 系统运行流程
系统运行流程如图3 所示。系统开启后,首先进行初始化操作,完成基于Haar 特征的Cascade 分类器机器视觉算法和UART 串口的初始化,为后续调用机器视觉算法和UART 串口相关函数做准备。初始化完成后,HLKLD2410 人体存在雷达感应模组始终保持工作状态,当其监测到有人进店时,将信号通过通用I/O 口发送至OpenMV4 H7 Plus 摄像头上的STM32H743IIK6 处理器,程序经过50ms 的延时确定当前有人进店后,唤醒OV5640 感光元件开始采集画面,采集的画面分辨率为VGA:640×480,在保证画面细节允许进行人脸识别的同时提高了画面采集的帧率,当顾客走出监测范围后,关闭OV5640 感光元件结束画面采集。
图3 系统运行流程图
采集画面的同时,STM32H743IIK6 处理器通过加载“frontalface”人脸Haar 模型对采集到的每一帧画面进行人脸识别,每帧画面中的人脸数量即为此画面中的顾客人数,取单次顾客进店过程中采集到的所有画面顾客人数的最大值作为本次进店的顾客人数,并累加至当日总客流量,便完成了单次顾客进店的客流监测。随后,STM32H743IIK6 处理器将当前客流数据加密打包后通过UART 串口发送至STM32F103C8T6 单片机,STM32F103C8T6 单片机触发UART 串口中断并进入中断服务程序,程序将接收到的数据解析后得到当前客流数据。最后,STM32F103C8T6 单片机通过UART 串口连接ATKESP8266 WiFi 通信模块,根据MQTT 协议将相关数据打包后发送至阿里云服务器,待成功收到阿里云服务器返回的报文后进入下一轮客流监测。
3 软件设计
■3.1 硬件部分
OpenMV4 H7 Plus 摄像头主要完成客流监测的功能,程序在其STM32H743IIK6 处理器上运行。基于Haar 特征的Cascade 分类器是由Paul Viola 和Michael Jone 在其论文论文“使用简单特征的增强级联进行快速对象检测(Rapid Object Detection using a Boosted Cascade of Simple Features)”于2001 年提出的一种有效的物品检测方法,是一种机器学习方法,其通过许多正负样例中训练得到cascade 方程,然后将其应用于其他图片。
实现人脸识别的关键程序如图4 所示。第一行程序加载了“frontalface”人脸Haar 模型,为第三行程序的正确运行做准备,其中,将stages 值设置得小可以加快匹配速度,但会降低匹配的准确率,本系统设置的stages 值为25。第二行程序控制感光元件拍摄了一张照片,并将拍摄的照片存入辅助帧缓冲存储区,返回给img 对象,图像存储在该存储区域的底部,剩下的任何内存都可供帧缓冲区堆栈使用,OpenMV4 H7 Plus 摄像头的固件使用它来保存用于图像处理算法的大型临时数据结构。第三行程序对第二行程序拍摄的照片进行了分析并在其中寻找人脸,其中,scale 值可以缩放被匹配特征的大小,而threshold 值越大,匹配速度越快,匹配的准确率也会下降,本系统设置的scale 值为1.35,threshold 值为0.75。第四行程序将第三行程序在拍摄的照片中寻找到的人脸的数量赋值给face_add,便得到了单张照片中的顾客人数,通过取单次顾客进店过程中采集到的所有画面顾客人数的最大值便得到了本次进店的顾客人数。
图4 关键程序示例
■3.2 阿里云生活物联网平台与手机App
在物联网架构中,物联网云平台属于中间部分,起着承上启下的作用,本文选用阿里云生活物联网平台,其是一款针对智能生活领域的物联网云平台,是在阿里云IaaS 和PaaS 层云产品的基础上,搭建的一套公有云平台,开发门槛较低,其原理图如图5 所示。MQTT(消息队列遥测传输)是ISO标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议,是一个基于客户端-服务器的消息发布/订阅传输协议,运用MQTT 协议,设备可以很方便地连接到物联网云服务,管理设备并处理数据,最后应用到各种业务场景。
图5 阿里云生活物联网平台原理图
系统使用平台颁发的唯一设备证书(ProductKey、DeviceName、DeviceSecret)接入阿里云生活物联网平台后,通过MQTT 协议向平台发送含有当前客流信息的报文,平台收到报文后进行解析,将数据值匹配功能名称的标识符,从而匹配相应的功能名称。阿里云生活物联网平台提供了公版免开发App“云智能”,其可以通过阿里云生活物理网平台进行开发、调试和管理,在平台中产品的人机交互页面,打开“使用公版App 控制产品”的控制开关,即可很方便地设计产品的面板界面。阿里云生活物联网平台通过HTTPS 或MQTT 协议向云智能App 发送客流数据,用户在云智能App 中可以以曲线图的形式查看每小时、日、周、月的客流数据变化情况,用户界面如图6 所示。
图6 云智能App 示例
4 系统测试
完成了系统的软件硬件设计和各部分的单独测试后,需要通过对整体系统的大量测试来测试客流数据的准确性,以验证系统能否投入实际应用。基于STM32 的物联网门店客流监测系统的实物如图7所示,将设备固定在距离地面约1.7米高、距离门店门口约3 米远处,摄像头正面朝向门店入口,开启电源后等待设备自动接入门店WLAN(无线局域网),云智能App 显示设备在线后开始测试。测试通过改变每次进店的顾客人数(从1 人逐步增加至5 人),每种顾客人数的测试次数为100 次,将系统分析得到的客流数据与实际的客流数据进行对比,从而得出不同进店顾客人数情况下的客流监测正确率,测试数据如表1 所示。
表1 系统测试数据
图7 系统实物图
对表1 的测试数据进行分析可以得出,本系统在单次进店顾客人数为1-2 人时能够保证97%以上的监测正确率;在单次进店顾客人数增加至3-4 人时监测正确率有所下降,但仍保持在90%以上;在单次进店顾客人数增加至5 人时监测正确率有较大幅度下降;考虑在实际应用中单次进店顾客人数为6 人及以上的情况很少,故在测试中未涉及。综合测试数据,本系统在单次进店顾客人数为1-4 人时能够保证较高的监测正确率,符合实际应用场景的需求。
5 结论
基于STM32 的物联网门店客流监测系统将HLKLD2410 人体存在雷达感应模组和OpenMV4 H7 Plus 摄像头结合起来,配合机器视觉算法实现了客流数据的监测,配合ATK-ESP8266 WiFi 通信模块实现了物联网,云智能App为用户提供了直观的客流数据展现形式。本系统相较于入口机械栏杆装置具有成本较低、安装方便的优势,相较于红外线客流量计数器显著提高了客流监测的正确率,并且运行功耗低、使用寿命长,具有一定的实用价值,为投入商用提供了基本保证。