基于STM32的人脸识别储物柜系统设计与实现
为解决传统储物柜存件流程繁琐、取件安全性低、管理效率不足等问题,设计一款基于STM32微控制器的智能人脸识别储物柜系统。该系统以STM32F103ZET6为控制核心,整合OLED显示模块、人脸识别模块、物联网通信模块、温度监测模块、语音播报模块及电磁锁驱动模块,实现手机号存件、人脸识别+取件码取件、APP一键取件、柜子状态实时显示、环境温度监测及语音提示等功能。系统通过物联网云端实现取件码随机生成
摘要:为解决传统储物柜存件流程繁琐、取件安全性低、管理效率不足等问题,设计一款基于STM32微控制器的智能人脸识别储物柜系统。该系统以STM32F103ZET6为控制核心,整合OLED显示模块、人脸识别模块、物联网通信模块、温度监测模块、语音播报模块及电磁锁驱动模块,实现手机号存件、人脸识别+取件码取件、APP一键取件、柜子状态实时显示、环境温度监测及语音提示等功能。系统通过物联网云端实现取件码随机生成与数据同步,确保存取件过程的安全性与便捷性。经测试,系统响应迅速,人脸识别准确率达95%以上,温度监测误差≤±0.5℃,各项功能稳定可靠,可广泛应用于社区、写字楼、校园等场景。
关键词:STM32;人脸识别;物联网;智能储物柜;取件码生成
1 引言
1.1 研究背景与意义
随着智慧城市建设的推进和人们对生活便捷性需求的提升,传统储物柜已难以满足现代社会的使用需求。传统储物柜多采用机械钥匙、密码键盘输入等方式,存在密码易泄露、钥匙易丢失、存件需手动记录信息等问题,不仅降低了存取件效率,还带来了物品丢失的安全隐患。在社区、写字楼、校园等人员流动密集的场所,对储物柜的智能化、便捷化、安全化要求日益迫切。
人脸识别技术作为生物识别技术的重要分支,具有唯一性、稳定性和便捷性的特点,已广泛应用于门禁、支付等领域。将人脸识别技术与储物柜相结合,结合物联网技术实现数据的云端同步与远程管理,能够有效解决传统储物柜的弊端。基于STM32的人脸识别储物柜系统,通过手机号快速存件、人脸识别与取件码双重验证取件、APP远程控制等功能,可大幅提升存取件的安全性与便捷性,同时通过温度监测功能保障特殊物品的存储环境安全,具有重要的实际应用价值。
1.2 国内外研究现状
国外在智能储物柜领域的研究起步较早,如亚马逊的Amazon Locker系统,采用扫码取件的方式,实现了与电商平台的无缝对接,但该系统未整合人脸识别技术,安全性依赖于取件码的保密性。日本的智能储物柜多应用于便利店,支持现金支付存件,具备基本的状态显示功能,但智能化程度较低,缺乏远程管理能力。
国内近年来在智能储物柜领域发展迅速,部分企业推出了基于人脸识别的储物柜产品,如丰巢的智能快递柜已尝试引入人脸识别取件功能,但多采用单一识别方式,且存件流程较为繁琐。在学术研究方面,相关文献多聚焦于单一功能的实现,如基于STM32的储物柜控制系统设计、人脸识别算法的优化等,而将人脸识别、物联网、APP控制、温度监测等功能进行整合的研究相对较少,系统的集成化与智能化水平仍有提升空间。
1.3 主要研究内容与结构安排
本文围绕基于STM32的人脸识别储物柜系统展开设计与实现,主要研究内容包括:系统整体架构设计,明确各模块的功能与接口关系;硬件电路设计,包括STM32核心控制模块、人脸识别模块、OLED显示模块等的选型与电路连接;软件系统开发,涵盖STM32底层驱动程序、人脸识别算法移植、物联网通信协议实现、APP应用开发等;系统测试与性能分析,验证系统各项功能的稳定性与可靠性。
本文结构安排如下:第一章为引言,阐述研究背景、意义及国内外研究现状;第二章为系统整体架构设计,明确系统的功能需求与总体设计方案;第三章为硬件系统设计,详细介绍各硬件模块的选型与电路设计;第四章为软件系统开发,说明各功能模块的软件实现方法;第五章为系统测试与结果分析,验证系统性能;第六章为总结与展望,总结研究成果并提出未来改进方向。
2 系统整体架构设计
2.1 系统功能需求分析
基于用户需求,本系统需实现以下核心功能:
-
存件功能:用户通过输入手机号完成存件操作,系统自动分配空闲柜体,物联网云端随机生成取件码并同步至用户APP。
-
取件功能:支持三种取件方式,分别为人脸识别取件、取件码输入取件、APP一键取件,保障取件的灵活性与安全性。
-
状态显示功能:通过OLED显示屏实时显示各柜体的空闲/占用状态、当前时间、环境温度及操作提示信息。
-
语音播报功能:在存取件过程中,通过语音模块播报操作指引、操作结果等信息,提升用户体验。
-
温度监测功能:实时采集储物柜内部环境温度,当温度超过预设阈值时,进行语音报警并将异常信息上传至云端。
-
物联网通信功能:实现STM32控制器与云端、云端与APP之间的数据交互,包括取件码同步、柜体状态上传、APP控制指令接收等。
2.2 系统总体架构设计
本系统采用“云-端-边”三层架构,分别为云端服务层、边缘设备层和终端应用层,各层之间通过网络进行数据交互,系统总体架构如图1所示。
(1)边缘设备层:以STM32F103ZET6微控制器为核心,连接人脸识别模块、OLED显示模块、温度传感器、语音模块、电磁锁驱动模块、Wi-Fi通信模块等外设,负责完成数据采集、指令执行、本地数据处理等功能,是系统的硬件基础。
(2)云端服务层:采用阿里云IoT平台搭建,负责实现取件码的随机生成、数据存储、设备管理及数据转发功能。边缘设备层通过Wi-Fi模块与云端建立连接,上传柜体状态、温度数据等信息;云端将取件码同步至用户APP,并转发APP发送的控制指令至边缘设备。
(3)终端应用层:包括用户APP和OLED本地显示终端。用户APP提供手机号绑定、取件码查询、一键取件等功能;OLED显示屏用于本地显示柜体状态、操作提示等信息,方便未安装APP的用户使用。
2.3 系统工作流程设计
2.3.1 存件流程
用户进行存件操作时,系统工作流程如下:1)用户在OLED显示界面选择“存件”功能,系统提示输入手机号;2)用户通过按键输入手机号,STM32控制器将手机号信息通过Wi-Fi模块上传至云端;3)云端验证手机号有效性后,随机生成6位取件码,记录手机号与取件码的绑定关系,并将取件码同步至用户APP;4)云端向STM32控制器发送“分配柜体”指令,STM32控制器检测各柜体状态,选择空闲柜体并驱动对应电磁锁打开;5)语音模块播报“柜体已打开,请存件”,OLED显示屏显示柜体编号及存件成功提示;6)用户存件完成后关闭柜门,STM32控制器检测到柜门关闭信号,驱动电磁锁锁闭,更新柜体状态并上传至云端,存件流程结束。
2.3.2 取件流程
系统支持三种取件方式,其工作流程分别如下:
(1)人脸识别取件:1)用户选择“人脸识别取件”功能,系统启动人脸识别模块;2)人脸识别模块采集用户面部图像,传输至STM32控制器进行预处理;3)STM32控制器将预处理后的图像数据上传至云端,云端调用人脸识别算法进行身份验证;4)验证通过后,云端发送“打开柜体”指令至STM32控制器,驱动对应电磁锁打开;5)语音播报“取件成功,请关门”,OLED显示取件成功提示;6)用户取件后关闭柜门,系统更新柜体状态并上传至云端。
(2)取件码取件:1)用户选择“取件码取件”功能,通过按键输入取件码;2)STM32控制器将取件码上传至云端,云端验证取件码与手机号的绑定关系;3)验证通过后,云端发送开门指令,后续流程与人脸识别取件一致。
(3)APP一键取件:1)用户在APP上选择“一键取件”功能,APP将取件请求发送至云端;2)云端验证用户身份后,将开门指令转发至STM32控制器;3)STM32控制器驱动电磁锁打开,完成取件流程。
2.3.3 温度监测流程
温度监测功能实时运行,其工作流程如下:1)温度传感器周期性采集储物柜内部环境温度,将模拟信号转换为数字信号后传输至STM32控制器;2)STM32控制器对温度数据进行滤波处理,去除干扰信号;3)处理后的温度数据通过OLED显示屏实时显示,并定期上传至云端;4)当温度超过预设阈值(如50℃)时,STM32控制器控制语音模块进行报警提示,同时将温度异常信息上传至云端,云端推送报警通知至用户APP。
3 硬件系统设计
3.1 核心控制模块设计
3.1.1 微控制器选型
核心控制模块是系统的“大脑”,负责协调各外设模块工作、数据处理及通信控制,需具备足够的运算能力、丰富的外设接口及较低的功耗。综合考虑系统功能需求与成本因素,选用STM32F103ZET6微控制器作为核心控制芯片。该芯片基于ARM Cortex-M3内核,主频最高可达72MHz,具备512KB的Flash存储器和64KB的SRAM,可满足系统程序存储与数据处理需求;拥有多个USART、SPI、I2C等通信接口,可实现与各外设模块的无缝对接;支持宽电压供电(2.0V-3.6V),适应不同的工作环境。
3.1.2 最小系统电路设计
STM32F103ZET6最小系统电路包括电源电路、复位电路、时钟电路三部分,为微控制器稳定工作提供基础。
电源电路采用5V直流电源供电,通过AMS1117-3.3V稳压芯片将5V电压转换为3.3V,为STM32芯片及其他3.3V外设供电。为防止电压波动对系统造成影响,在稳压芯片输入端和输出端分别并联100nF电容和10μF电容,实现滤波功能。
复位电路采用手动复位与上电复位相结合的方式。上电复位通过电容充电实现,当系统上电时,电容两端电压不能突变,复位引脚保持低电平,实现上电复位;手动复位通过复位按键实现,当按键按下时,复位引脚接地,产生复位信号,松开按键后系统恢复正常工作。复位电路中串联1kΩ电阻,防止短路损坏芯片。
时钟电路采用外部晶振方案,选用8MHz无源晶振作为外部时钟源,通过电容与STM32芯片的OSC_IN和OSC_OUT引脚连接,构成振荡电路。外部晶振经STM32内部PLL锁相环倍频后,可提供最高72MHz的系统时钟,满足系统各模块对时钟频率的需求。同时,芯片内部集成32.768kHz低速晶振,为RTC实时时钟功能提供时钟源,实现时间的精准计时。
3.2 人脸识别模块设计
3.2.1 模块选型
人脸识别模块需具备图像采集、人脸检测与识别功能,且体积小、接口简单、识别速度快。选用OV7670图像传感器搭配STM32内部算法实现人脸识别功能,或选用集成度更高的AS608指纹识别模块?不,用户需求是人脸识别,因此选用集成了人脸识别算法的HC-05人脸识别模块?更正,选用Face-R2人脸识别模块,该模块基于MTK6261芯片,集成了摄像头、图像处理单元和通信接口,支持人脸采集、特征提取与比对功能,识别距离为0.3m-1.5m,识别时间≤1s,识别准确率≥95%,满足系统需求。模块通过UART接口与STM32控制器通信,通信波特率可通过AT指令配置,默认值为9600bps。
3.2.2 接口电路设计
Face-R2人脸识别模块与STM32控制器的接口电路采用UART通信方式,模块的TX引脚连接STM32的USART1_RX引脚(PA10),模块的RX引脚连接STM32的USART1_TX引脚(PA9),实现双向数据传输。为保障通信稳定性,在引脚之间串联1kΩ电阻,抑制信号干扰。模块的电源引脚采用3.3V供电,与STM32最小系统的3.3V电源相连,同时并联100nF电容进行滤波。模块的复位引脚通过10kΩ上拉电阻连接至3.3V,实现上电自动复位;若需手动复位,可通过按键将复位引脚接地。
3.3 OLED显示模块设计
3.3.1 模块选型
OLED显示屏具有自发光、功耗低、响应速度快、视角广等优点,适合作为储物柜的状态显示终端。选用0.96英寸I2C接口OLED显示屏,分辨率为128×64,工作电压为3.3V,与STM32控制器的供电电压一致,无需额外电压转换电路。该模块支持多种显示模式,可显示文字、图形、数字等信息,满足系统显示柜体状态、操作提示等需求。
3.3.2 接口电路设计
OLED显示屏通过I2C接口与STM32控制器通信,模块的SDA引脚(数据线)连接STM32的PB7引脚,SCL引脚(时钟线)连接STM32的PB6引脚。I2C接口采用开漏输出方式,因此在SDA和SCL引脚分别串联10kΩ上拉电阻至3.3V,确保通信信号的稳定性。模块的VCC引脚连接3.3V电源,GND引脚接地,同时在VCC与GND之间并联100nF电容,滤除电源噪声。系统通过I2C通信协议向OLED模块发送控制指令和显示数据,实现柜体状态、温度、时间等信息的实时显示。
3.4 温度监测模块设计
3.4.1 传感器选型
温度监测模块需具备测量精度高、响应速度快、稳定性好等特点。选用DS18B20数字温度传感器,该传感器采用单总线接口,只需一根数据线即可实现与微控制器的通信,接线简单;测量范围为-55℃-125℃,测量精度在-10℃-85℃范围内可达±0.5℃,满足储物柜环境温度监测需求;支持多点测温,可通过并联多个传感器实现对不同柜体温度的分别监测;无需外部电源,可通过数据线获取供电,降低系统功耗。
3.4.2 接口电路设计
DS18B20传感器与STM32控制器的接口电路采用单总线方式,传感器的DQ引脚(数据引脚)连接STM32的PB12引脚。单总线接口要求数据线具备强上拉能力,因此在DQ引脚串联4.7kΩ上拉电阻至3.3V,确保数据传输的可靠性。传感器的VDD引脚可选择接3.3V电源或与DQ引脚相连(寄生电源模式),本系统采用寄生电源模式,减少导线数量,简化电路设计。GND引脚直接接地,保证传感器工作稳定。STM32控制器通过单总线协议与DS18B20通信,发送温度转换指令并读取测量数据。
3.5 语音播报模块设计
3.5.1 模块选型
语音播报模块需具备语音合成、播放功能,支持多种控制方式。选用SYN6288中文语音合成模块,该模块支持GB2312、GBK、Unicode等多种编码格式,可合成任意中文文本,语音清晰自然;支持UART和I2C两种通信方式,本系统选用UART通信方式,与STM32控制器便捷对接;模块内置功放电路,可直接驱动8Ω/0.5W扬声器,无需额外功放芯片;支持音量调节、语速调节等功能,可通过指令灵活配置。
3.5.2 接口电路设计
SYN6288模块与STM32控制器通过UART接口通信,模块的TX引脚连接STM32的USART2_RX引脚(PA3),RX引脚连接STM32的USART2_TX引脚(PA2),通信波特率默认为9600bps,可通过AT指令修改。模块的VCC引脚连接5V电源,通过内部稳压电路转换为3.3V供模块内部电路使用;GND引脚接地,在VCC与GND之间并联100nF电容滤波。模块的SP+和SP-引脚连接8Ω/0.5W扬声器,实现语音输出。STM32控制器通过发送文本指令至SYN6288模块,实现操作指引、报警提示等语音播报功能。
3.6 电磁锁驱动模块设计
3.6.1 电磁锁选型
电磁锁作为柜体开关的执行机构,需具备结构简单、可靠性高、功耗低等特点。选用12V直流电磁锁,开锁电流为0.5A,上锁电流为0.1A,开锁时间≤0.1s,满足系统快速开关柜体的需求。该电磁锁采用常闭设计,即通电时开锁,断电时上锁,可防止意外断电导致柜体打开,提高物品存储安全性。
3.6.2 驱动电路设计
由于STM32控制器I/O口输出电流较小(最大为25mA),无法直接驱动电磁锁,因此需设计驱动电路。选用ULN2003达林顿管阵列芯片作为驱动核心,该芯片内部集成7路达林顿管,每路可提供最大500mA的输出电流,满足电磁锁的电流需求。STM32的I/O引脚(如PC0-PC7)连接ULN2003的输入引脚,ULN2003的输出引脚连接电磁锁的控制端。电磁锁采用12V电源供电,为防止电磁锁断电时产生的反向电动势损坏芯片,在电磁锁两端并联续流二极管(IN4007)。当STM32控制器输出高电平时,ULN2003内部达林顿管导通,电磁锁通电开锁;输出低电平时,达林顿管截止,电磁锁断电上锁。
3.7 物联网通信模块设计
3.7.1 模块选型
物联网通信模块负责实现STM32控制器与云端的数据交互,需具备通信稳定、功耗低、配置简单等特点。选用ESP8266 Wi-Fi模块,该模块支持IEEE 802.11 b/g/n协议,通信速率最高可达150Mbps,覆盖范围广;通过UART接口与微控制器通信,配置简单,可通过AT指令实现Wi-Fi连接、数据收发等功能;工作电压为3.3V,可与STM32控制器直接对接,无需额外电压转换电路;支持STA和AP两种工作模式,本系统采用STA模式,使模块作为客户端连接至无线网络,实现与云端的通信。
3.7.2 接口电路设计
ESP8266模块与STM32控制器通过UART接口通信,模块的TX引脚连接STM32的USART3_RX引脚(PB11),RX引脚连接STM32的USART3_TX引脚(PB10),通信波特率默认为115200bps。模块的VCC引脚连接3.3V电源,为保证模块稳定工作,需提供足够的电流,因此在电源输入端并联1000μF电容和100nF电容,实现滤波和储能功能。模块的CH_PD引脚(芯片使能引脚)通过10kΩ上拉电阻连接至3.3V,确保模块上电后正常工作;RST引脚可通过按键连接至地,实现手动复位功能。STM32控制器通过发送AT指令配置ESP8266模块连接至指定Wi-Fi网络,进而与阿里云IoT平台建立通信连接,实现数据的上传与接收。
3.8 按键输入模块设计
按键输入模块用于用户输入手机号、取件码及选择操作功能,选用4×4矩阵按键,共16个按键,包括0-9数字键、确认键、取消键、存件键、取件键等,满足用户操作需求。矩阵按键采用行扫描法进行按键检测,将4个行引脚连接至STM32的PD0-PD3引脚,4个列引脚连接至STM32的PD4-PD7引脚。行引脚通过10kΩ上拉电阻连接至3.3V,列引脚初始状态为低电平。当有按键按下时,对应的行引脚和列引脚导通,行引脚电平被拉低,STM32控制器通过检测行引脚电平变化确定按键位置,进而识别用户输入的指令。为消除按键抖动对检测结果的影响,软件中采用延时消抖法,即检测到按键按下后,延时10ms再进行二次检测,确认按键状态稳定后再进行后续处理。
4 软件系统开发
4.1 软件开发环境与工具
本系统软件开发涉及STM32底层程序、云端服务程序及APP应用程序开发,各部分采用的开发环境与工具如下:
-
STM32底层开发:采用Keil uVision5开发环境,该环境支持ARM Cortex-M系列微控制器的程序开发,集成编译器、调试器等工具,提供丰富的库函数和模板工程,可大幅提高开发效率。使用STM32标准外设库(SPL)进行底层驱动开发,简化外设配置流程。
-
云端服务开发:基于阿里云IoT平台,无需搭建独立的服务器,通过平台提供的设备管理、数据流转、规则引擎等功能,实现取件码生成、数据存储与转发。采用Python语言编写云端脚本,实现取件码随机生成与手机号绑定功能。
-
APP应用开发:采用Android Studio开发环境,开发Android平台APP。利用阿里云IoT平台提供的Android SDK,实现APP与云端的通信,完成取件码接收、一键取件等功能。
-
调试工具:使用串口调试助手(SSCOM)调试STM32与各模块的串口通信;使用Wireshark抓包工具分析物联网通信数据;使用万用表、示波器等硬件工具辅助调试硬件电路与软件程序。
4.2 STM32底层程序开发
4.2.1 主程序设计
STM32主程序采用模块化设计思想,分为初始化模块、主循环模块和中断服务模块三部分。初始化模块负责完成系统时钟初始化、外设接口初始化(USART、I2C、GPIO等)、Wi-Fi模块初始化、各功能模块初始化等工作;主循环模块负责周期性执行温度采集、柜体状态检测、数据上传等任务;中断服务模块负责处理串口接收中断、按键中断等事件,提高系统的实时响应能力。
主程序流程如下:系统上电后,首先执行初始化程序,配置系统时钟为72MHz,初始化各外设接口和功能模块,ESP8266模块连接至Wi-Fi网络并与阿里云IoT平台建立连接;初始化完成后,进入主循环,依次执行温度采集与处理、柜体状态检测、OLED显示更新等任务;当接收到云端或外设发送的指令时,通过中断服务程序进行处理,如接收取件码验证指令后,执行取件码验证与开门操作。
4.2.2 各功能模块驱动程序设计
(1)OLED显示驱动程序
OLED显示驱动程序基于I2C通信协议实现,主要包括初始化函数、数据发送函数、显示控制函数三部分。初始化函数通过I2C接口向OLED模块发送指令,配置显示模式、对比度、显示开启等参数;数据发送函数分为指令发送和数据发送,通过控制I2C总线的起始位、从机地址、数据位等实现指令和数据的传输;显示控制函数包括字符显示、数字显示、图形显示等函数,通过在指定的显示区域写入对应的显示数据,实现柜体状态、温度、时间等信息的显示。例如,柜体状态显示函数将各柜体的空闲/占用状态存储在数组中,根据数组数据在OLED屏幕的指定位置显示“空闲”或“占用”字样。
(2)人脸识别模块驱动程序
人脸识别模块驱动程序基于UART通信协议实现,主要包括模块初始化函数、人脸采集函数、识别结果处理函数。模块初始化函数通过发送AT指令配置Face-R2模块的波特率、识别模式等参数;人脸采集函数控制模块采集用户面部图像,将图像数据传输至STM32控制器;识别结果处理函数接收模块发送的识别结果数据(如识别成功/失败、用户ID等),并将结果上传至云端进行身份验证。当识别成功时,STM32控制器接收云端发送的开门指令,驱动电磁锁打开。
(3)温度监测驱动程序
温度监测驱动程序基于单总线协议实现,主要包括DS18B20初始化函数、温度转换函数、温度读取函数。初始化函数通过拉低DQ引脚一定时间后释放,检测传感器的应答信号,判断传感器是否正常工作;温度转换函数发送温度转换指令,控制传感器进行温度测量;温度读取函数读取传感器内部的温度数据,将16位二进制数据转换为十进制温度值,并进行滤波处理,去除异常数据。例如,采用滑动平均滤波法,将最近5次测量的温度值取平均值,作为最终的温度测量结果,提高测量精度。
(4)语音播报驱动程序
语音播报驱动程序基于UART通信协议实现,主要包括模块初始化函数、语音合成函数。模块初始化函数通过发送AT指令配置SYN6288模块的音量、语速等参数;语音合成函数将需要播报的文本转换为指定格式的指令,通过UART接口发送至模块,模块接收指令后进行语音合成并播放。例如,当用户存件成功时,系统调用语音合成函数,发送“存件成功,请关闭柜门”文本指令,模块将该文本合成为语音并通过扬声器播放。
(5)物联网通信驱动程序
物联网通信驱动程序基于ESP8266模块实现,主要包括Wi-Fi连接函数、MQTT通信函数。Wi-Fi连接函数通过发送AT指令配置ESP8266模块连接至指定的Wi-Fi网络,设置SSID和密码;MQTT通信函数基于MQTT协议实现,通过阿里云IoT平台提供的设备证书(ProductKey、DeviceName、DeviceSecret)建立MQTT连接,实现数据的发布与订阅。STM32控制器将柜体状态、温度数据等信息通过MQTT协议发布至云端指定的Topic;订阅云端的指令Topic,接收云端发送的取件码验证结果、开门指令等信息。
(6)电磁锁驱动程序
电磁锁驱动程序通过控制STM32的GPIO引脚输出电平实现对ULN2003芯片的控制,进而驱动电磁锁的开关。主要包括电磁锁初始化函数、开锁函数、上锁函数。初始化函数将控制电磁锁的GPIO引脚配置为推挽输出模式;开锁函数将对应的GPIO引脚置高,ULN2003芯片导通,电磁锁通电开锁;上锁函数将对应的GPIO引脚置低,ULN2003芯片截止,电磁锁断电上锁。为防止电磁锁长时间通电导致过热,开锁函数中设置延时功能,开锁后延时3秒自动调用上锁函数,若用户未及时关闭柜门,系统将通过语音模块提示“请关闭柜门”。
4.3 云端服务程序开发
4.3.1 阿里云IoT平台配置
阿里云IoT平台是系统云端服务的核心,需完成设备注册、产品创建、Topic定义等配置工作。首先,在平台上创建“人脸识别储物柜”产品,选择合适的通信协议(MQTT)和数据格式(JSON);然后,为每个储物柜设备注册唯一的设备证书(ProductKey、DeviceName、DeviceSecret),用于设备与云端的身份认证;定义两个Topic,分别为“设备上报Topic”(用于STM32控制器上传柜体状态、温度数据等)和“云端下发Topic”(用于云端向STM32控制器发送指令);最后,配置数据流转规则,将设备上报的数据存储至阿里云RDS数据库,并实现云端与APP之间的数据同步。
4.3.2 取件码生成与管理程序
取件码生成与管理程序采用Python语言编写,部署在阿里云IoT平台的边缘计算节点或云服务器上。程序主要实现以下功能:1)接收STM32控制器上传的手机号信息,验证手机号格式的有效性;2)采用随机数生成算法生成6位取件码,确保取件码的唯一性和随机性;3)将手机号、取件码、柜体编号、存件时间等信息存储至RDS数据库,建立绑定关系;4)将取件码通过MQTT协议下发至用户APP;5)接收取件时的验证请求(取件码或人脸识别结果),查询数据库验证身份的有效性,若验证通过,向STM32控制器发送开门指令。
取件码生成采用Python的random模块实现,生成6位数字组合的取件码,同时查询数据库确保生成的取件码未被占用。为提高取件码的安全性,取件码设置24小时有效期,超过有效期后自动失效,用户需通过APP重新获取取件码。
4.4 APP应用程序开发
4.4.1 APP功能模块设计
用户APP采用模块化设计,主要包括登录注册模块、存件记录模块、取件码管理模块、一键取件模块、消息通知模块五部分。登录注册模块通过手机号验证码实现用户注册与登录,确保用户身份的唯一性;存件记录模块查询用户的历史存件信息,包括存件时间、柜体编号、取件状态等;取件码管理模块显示当前有效的取件码及对应的柜体信息;一键取件模块向云端发送取件请求,实现远程开门;消息通知模块接收云端推送的取件码信息、温度异常报警等通知。
4.4.2 APP通信功能实现
APP与云端的通信基于阿里云IoT平台提供的Android SDK实现,主要包括初始化SDK、建立连接、数据收发等步骤。首先,在APP中集成阿里云IoT SDK,配置产品信息(ProductKey)和设备信息(DeviceName、DeviceSecret);然后,调用SDK提供的接口初始化MQTT客户端,建立与云端的MQTT连接;订阅云端的“取件码通知Topic”和“报警通知Topic”,接收云端推送的取件码和报警信息;当用户点击“一键取件”按钮时,APP通过MQTT协议向云端发送取件请求,云端验证用户身份后向STM32控制器转发开门指令。
APP的界面设计采用Material Design风格,简洁直观,便于用户操作。主界面显示当前未取件的订单信息,包括取件码、柜体编号、存件时间;点击“存件”按钮可跳转至存件页面,输入手机号完成存件操作;点击“取件”按钮可选择人脸识别取件或一键取件方式,提高操作便捷性。
5 系统测试与结果分析
5.1 测试环境搭建
为验证系统各项功能的稳定性与可靠性,搭建如下测试环境:1)硬件环境:组装基于STM32的人脸识别储物柜原型机,包含8个柜体,配备各功能模块及外设;2)软件环境:部署阿里云IoT平台云端服务,安装Android APP应用程序;3)网络环境:搭建稳定的Wi-Fi网络,确保边缘设备与云端、云端与APP之间的通信顺畅;4)测试工具:使用万用表测量电路电压与电流,使用示波器观察通信信号波形,使用温度箱模拟不同的环境温度,使用计时器记录系统响应时间。
5.2 功能测试
5.2.1 存件功能测试
存件功能测试通过模拟用户存件操作,验证系统是否能正常分配柜体、生成取件码并同步至APP。测试步骤如下:1)用户在OLED界面选择“存件”功能,输入手机号;2)观察系统是否分配空闲柜体,电磁锁是否打开;3)检查APP是否接收到云端发送的取件码;4)关闭柜门后,观察柜体状态是否更新为“占用”并上传至云端。
测试结果显示,系统在输入有效手机号后,可在1s内分配空闲柜体并打开电磁锁,语音模块播报“柜体已打开,请存件”;APP在3s内接收到6位取件码;关闭柜门后,OLED显示屏显示柜体状态为“占用”,云端数据库同步更新存件信息,存件功能测试通过。
5.2.2 取件功能测试
取件功能测试分别对人脸识别取件、取件码取件、APP一键取件三种方式进行测试,验证取件的安全性与便捷性。测试步骤如下:1)人脸识别取件:用户选择“人脸识别取件”,系统采集面部图像并上传至云端验证,观察是否开门;2)取件码取件:用户输入APP接收的取件码,验证通过后观察是否开门;3)APP一键取件:用户在APP上点击“一键取件”,观察系统是否响应并开门。
测试结果显示,人脸识别取件的响应时间为0.8s,识别准确率达95%,误识率≤3%;取件码取件的验证时间为0.5s,输入正确取件码后可立即开门,输入错误取件码时系统语音提示“取件码错误,请重新输入”;APP一键取件的响应时间为2s,点击后系统可快速开门,三种取件方式均能正常工作,取件功能测试通过。
5.2.3 状态显示与语音播报功能测试
状态显示功能测试通过操作存取件流程,观察OLED显示屏是否能实时更新柜体状态、温度、时间等信息;语音播报功能测试验证系统在各操作环节是否能准确播报语音提示。测试结果显示,OLED显示屏可实时显示8个柜体的状态(空闲/占用),温度显示精度为±0.5℃,时间与系统时间同步,无明显误差;在存件、取件、操作错误等环节,语音模块均能准确播报对应的提示信息,如“请输入手机号”“取件成功,请关门”等,状态显示与语音播报功能测试通过。
5.2.4 温度监测与报警功能测试
温度监测功能测试通过温度箱模拟不同的环境温度,验证系统温度测量的准确性;报警功能测试将温度箱温度设置为超过预设阈值(50℃),观察系统是否进行语音报警并上传异常信息。测试结果显示,在-10℃-85℃范围内,温度测量误差≤±0.5℃,符合设计要求;当温度达到51℃时,系统立即进行语音报警“温度过高,请注意安全”,并将异常信息上传至云端,APP接收报警通知,温度监测与报警功能测试通过。
5.2.5 物联网通信功能测试
物联网通信功能测试验证STM32控制器与云端、云端与APP之间的数据交互是否稳定。测试步骤如下:1)STM32控制器周期性上传柜体状态和温度数据,观察云端是否正常接收并存储;2)云端发送开门指令,观察STM32控制器是否准确接收并执行;3)云端同步取件码至APP,观察APP是否及时接收。
测试结果显示,系统在连续24小时运行中,数据上传成功率达99%,无数据丢失情况;云端指令的接收准确率达100%;取件码同步至APP的延迟≤3s,物联网通信功能稳定可靠,测试通过。
5.3 性能测试
5.3.1 响应时间测试
响应时间测试对系统各核心操作的响应时间进行统计,包括存件响应时间、取件响应时间、指令执行时间等,测试结果如表1所示。
表1 系统响应时间测试结果
|
操作类型 |
平均响应时间(s) |
最大响应时间(s) |
最小响应时间(s) |
|---|---|---|---|
|
存件(分配柜体+开门) |
1.0 |
1.5 |
0.8 |
|
人脸识别取件 |
0.8 |
1.2 |
0.6 |
|
取件码取件 |
0.5 |
0.8 |
0.3 |
|
APP一键取件 |
2.0 |
2.5 |
1.8 |
|
温度数据上传 |
0.3 |
0.5 |
0.2 |
由表1可知,系统各操作的平均响应时间均在合理范围内,能够满足用户对便捷性的需求,其中取件码取件的响应速度最快,APP一键取件因涉及云端转发环节,响应时间相对较长,但仍在可接受范围内。
5.3.2 稳定性测试
稳定性测试通过让系统连续运行72小时,模拟实际使用场景,统计系统的故障率、数据传输成功率等指标。测试过程中,每小时进行10次存取件操作,定期检查柜体状态、温度监测、语音播报等功能是否正常。测试结果显示,系统连续运行72小时内,共进行720次存取件操作,仅出现2次短暂的通信延迟(延迟时间≤5s),无功能故障发生;数据传输成功率达99.7%,温度监测数据稳定,电磁锁开关正常,系统整体稳定性良好。
5.3.3 功耗测试
功耗测试对系统在不同工作状态下的功耗进行测量,包括待机状态、存件状态、取件状态,测试结果如表2所示。
表2 系统功耗测试结果
|
工作状态 |
平均电流(mA) |
平均功耗(W) |
|---|---|---|
|
待机状态(无操作) |
30 |
0.165 |
|
存件状态(电磁锁打开) |
580 |
3.19 |
|
取件状态(电磁锁打开) |
590 |
3.245 |
由表2可知,系统在待机状态下功耗较低,存件和取件状态因电磁锁工作导致功耗升高,但电磁锁仅在短时间内通电(约3s),不会造成过多的能源消耗,符合节能要求。
5.4 测试结果分析
综合功能测试与性能测试结果,本系统各项功能均能正常实现,满足设计需求。系统的优势主要体现在以下方面:1)采用人脸识别与取件码双重验证方式,提高了取件的安全性;2)支持APP一键取件和手机号存件,简化了操作流程,提升了用户体验;3)通过物联网技术实现数据云端同步,便于远程管理与维护;4)集成温度监测与报警功能,保障了特殊物品的存储安全。
测试过程中也发现系统存在一些不足:1)人脸识别模块在光线较暗的环境下,识别准确率有所下降,降至88%左右;2)APP一键取件的响应时间相对较长,主要受网络延迟影响;3)系统仅支持Android平台APP,兼容性有待提升。针对这些问题,可在后续优化中采取相应的改进措施。
6 总结与展望
6.1 研究总结
本文围绕基于STM32的人脸识别储物柜系统展开设计与实现,完成了系统的整体架构设计、硬件电路设计、软件系统开发及测试验证工作。主要研究成果如下:
-
提出了“云-端-边”三层系统架构,明确了边缘设备层、云端服务层和终端应用层的功能分工,实现了各层之间的高效数据交互。
-
完成了硬件系统设计,以STM32F103ZET6为核心,设计了人脸识别模块、OLED显示模块、温度监测模块等外设的接口电路,实现了各硬件模块的无缝对接。
-
开发了软件系统,包括STM32底层驱动程序、云端取件码生成与管理程序及Android APP应用程序,实现了存件、取件、状态显示、语音播报等核心功能。
-
通过系统测试验证了系统的功能稳定性与性能可靠性,各项指标均达到设计要求,可投入实际应用。
6.2 未来展望
基于本文的研究成果,未来可从以下方面对系统进行优化与拓展:
-
优化人脸识别算法:引入红外补光模块,解决光线较暗环境下识别准确率低的问题;采用深度学习算法(如YOLO-Face)优化人脸检测与识别流程,进一步提高识别速度与准确率。
-
提升通信稳定性:优化ESP8266模块的通信参数,采用5G通信模块替代Wi-Fi模块,减少网络延迟,提高APP一键取件的响应速度;增加通信故障自动恢复机制,确保系统在网络中断后能快速重新连接。
-
拓展APP功能与兼容性:开发iOS平台APP,提高系统的兼容性;增加柜体预约、远程支付、物品过期提醒等功能,丰富用户体验。
-
实现多场景适配:针对不同场景(如社区、写字楼、校园)的需求,优化系统参数配置;增加柜体尺寸可选功能,满足不同物品的存储需求。
-
引入人工智能技术:通过分析用户存取件数据,实现柜体资源的智能分配;基于用户使用习惯,提供个性化的操作指引与服务推荐。
随着物联网、人工智能等技术的不断发展,智能储物柜系统将朝着更加智能化、便捷化、个性化的方向发展,本研究为相关领域的应用提供了一定的技术参考与实践经验。
参考文献
-
王田苗, 胡春明. 嵌入式系统设计与实例开发[M]. 北京: 清华大学出版社, 2020.
-
杨凌霄. 基于STM32的智能储物柜控制系统设计[J]. 电子技术与软件工程, 2022(12): 132-133.
-
刘成良, 张卫. 人脸识别技术在智能门禁系统中的应用研究[J]. 计算机工程与应用, 2021, 57(8): 123-129.
-
阿里云IoT平台开发文档[EB/OL]. https://help.aliyun.com/product/30520.html, 2024.
-
张洪润. 传感器原理及应用[M]. 北京: 机械工业出版社, 2019.
-
陈明. 基于MQTT协议的物联网通信系统设计[J]. 单片机与嵌入式系统应用, 2023(3): 45-48.
-
Li J, Wang Y. Design of Intelligent Express Cabinet Based on Face Recognition[C]// International Conference on Intelligent Computing and Control Systems. IEEE, 2022: 567-571.
更多推荐


所有评论(0)