STM32 智能外卖柜的设计与实现
摘要
随着外卖行业的迅速发展,对智能化、高效化的取餐终端需求日益增长。传统外卖柜在交互体验和安全性能方面已难以适应现代用户的需求。为此,本文提出并实现了一套基于 STM32C8T6 主控芯片的智能外卖柜系统,集成了人脸识别开柜、取件码验证以及通过机智云 APP 实现远程一键开柜三大核心功能。系统采用模块化硬件架构与分层软件设计,确保各组件协调运行。经实际测试,该系统具备良好的稳定性与响应速度,显著提升了用户体验和设备管理效率,为低成本、小型化智能外卖柜的研发提供了切实可行的技术路径。关键词
STM32C8T6;智能外卖柜;人脸识别;机智云 APP;模块化设计一、引言
近年来,我国外卖市场持续扩张,2024年行业交易额已突破1.5万亿元大关。高频次、分布广的配送特点使得智能外卖柜成为社区、写字楼及校园等场所的重要基础设施。然而,传统柜体普遍依赖密码或刷卡方式开启,存在密码泄露、卡片遗失、操作复杂等问题,且缺乏远程监控与智能管理能力。随着物联网与人工智能技术的进步,将生物识别与移动互联网融合进外卖柜系统,已成为提升安全性与便利性的关键趋势。 [此处为图片1] 在此背景下,STM32C8T6 凭借其高性价比、低功耗以及丰富的外设资源脱颖而出。该芯片基于 ARM Cortex-M3 架构,主频可达72MHz,支持多种通信接口,适用于小型智能设备开发。本设计以 STM32C8T6 为核心控制器,结合人脸识别模组、ESP8266 WiFi 模块及机智云平台,构建了一个多功能、可远程管控的智能外卖柜系统。旨在克服传统方案的不足,提供更安全、便捷的服务模式,同时降低整体硬件成本,推动智能柜在中小型场景中的广泛应用。二、系统总体设计
2.1 设计目标
本系统的开发目标主要包括以下几个方面: - 实现人脸识别自动开柜功能,支持本地人脸库存储与匹配,识别成功后触发对应柜门电磁锁; - 提供数字取件码开柜方式,用户通过矩阵键盘输入6位取件码,经系统验证后执行解锁; - 支持通过机智云手机APP发送开柜指令,实现远程控制与云端联动; - 具备柜门状态检测、操作提示、异常报警等功能,保障系统稳定运行; - 优化电路布局与元器件选型,控制整体成本,满足紧凑空间部署要求。2.2 系统架构
系统整体采用三层模块化结构,分别为:硬件层、软件层和物联网平台层。 硬件层: 以 STM32C8T6 作为中央处理单元,集成多个功能模块,包括人脸识别单元、矩阵键盘、ESP8266 WiFi通信模块、继电器驱动的电磁锁执行机构、电源管理模块以及由LED和蜂鸣器组成的状态反馈系统。各模块通过标准接口(如UART、I2C、GPIO)与主控连接,便于扩展与维护。 软件层: 基于 STM32CubeIDE 开发环境,使用 C 语言编写嵌入式程序,完成底层驱动开发、数据采集处理、逻辑判断与控制输出。重点实现了人脸识别算法的本地适配、取件码校验机制以及机智云通信协议解析功能。 物联网平台层: 借助机智云公共物联网平台,建立设备端与移动端之间的双向通信链路。实现设备注册上线、远程指令下发、实时状态上报及异常信息推送,为后台管理和用户交互提供支撑。2.3 工作原理
系统上电后,STM32C8T6 首先完成初始化配置,各外设进入待命状态。当用户选择不同开柜方式时,系统分别启动相应流程: - 在人脸识别模式下,摄像头模组采集面部图像,提取特征向量并与本地数据库比对,结果通过串口传至主控芯片,若匹配成功,则激活对应继电器打开柜门; - 使用取件码时,用户通过按键输入6位数字,STM32 将其与预存编码进行对比,验证无误后驱动电磁锁释放; - 若使用 APP 远程开柜,手机端通过机智云平台发送加密指令,经 ESP8266 接收并转发给 STM32,主控解析后执行开锁动作。 同时,系统持续监测柜门开关状态。一旦检测到未关闭、非法撬动等异常情况,立即启动蜂鸣器报警,并通过WiFi模块将警报信息上传至云端,实现远程告警与监管。三、硬件设计
3.1 主控模块
系统选用 STM32C8T6 作为主控制器,该芯片具备ARM Cortex-M3内核,运行频率72MHz,配备64KB Flash 和 20KB SRAM,拥有充足的存储空间与计算能力。其集成的多路GPIO、UART、SPI和I2C接口,能够有效支持多外设并行工作。 [此处为图片2] 为保证系统正常运行,主控外围配置了8MHz晶振与时钟电路,用于提供精确时序;复位电路确保上电或异常时可靠重启。此外,设计中引入 CH340G 芯片搭建 USB 转串口电路,方便程序烧录与调试,减少开发难度与额外工具投入。3.2 人脸识别模块
人脸识别部分采用专用视觉模组,内置图像传感器与协处理器,支持人脸检测、特征提取与模板比对功能。模块可在离线状态下完成识别任务,无需依赖网络,提高响应速度与隐私安全性。识别结果通过 UART 接口传输至 STM32C8T6,主控依据返回信号决定是否触发开锁动作。该模块支持多人脸库管理,管理员可通过串口指令添加或删除用户信息,灵活适应不同使用场景。系统的人脸识别功能采用低成本串口人脸识别模组(例如 HX-M02),该模块集成 OV2640 摄像头,支持本地离线识别,无需依赖网络环境。模组可存储最多 50 张人脸模板,识别准确率不低于 95%,响应时间不超过 1 秒。通过 UART 接口与主控芯片 STM32C8T6 进行通信,波特率设定为 9600bps,工作电压为 3.3V,由 AMS1117-3.3 稳压芯片从 5V 电源转换获得稳定供电。当模组完成图像采集后,内部自动执行特征提取和比对操作,若匹配成功,则向 STM32C8T6 发送高电平信号及对应的柜体编号指令,主控接收到信息后即启动相应柜体的开启流程。
[此处为图片1]3.3 输入与状态指示模块设计
输入部分使用 4×4 矩阵键盘,用于实现取件码输入、功能选择(如人脸注册、取件码重置等)操作。矩阵键盘的行线(PA0~PA3)和列线(PA4~PA7)分别连接至 STM32C8T6 的通用 IO 口,采用行扫描方式检测按键动作,并在软件中加入 10ms 延时以消除机械抖动,提升按键识别的可靠性。
状态指示由 LED 灯和蜂鸣器构成:LED(PB0~PB2)分别显示系统待机、操作成功与异常报警三种状态;蜂鸣器(PB3)通过三极管驱动电路控制,可根据不同事件发出特定音效——短鸣提示操作成功,长鸣则表示出现异常情况。
3.4 WiFi 无线通信模块
选用 ESP8266-01S 作为 WiFi 通信单元,支持 802.11b/g/n 协议,具备体积小、成本低的优点。该模组通过 UART 接口与 STM32C8T6 通信,通信波特率为 115200bps,工作电压为 3.3V。为增强电源稳定性,在其供电端并联 100μF 和 0.1μF 电容,有效滤除高频噪声和电压波动。
ESP8266 通过 AT 指令配置网络参数,连接至机智云平台的 MQTT 服务器(mqtt.gizwits.com,端口 1883),实现设备与云端的双向数据交互:一方面将柜体运行状态、故障报警等信息上传至平台;另一方面接收来自 APP 下发的远程开柜指令,并转发给主控芯片处理。
3.5 柜体执行控制模块
柜体控制部分由继电器驱动电路与 12V 直流电磁锁组成,系统共设 6 个独立储物单元,适用于小型应用场景。STM32C8T6 的 PC0~PC5 引脚经光耦隔离芯片 TLP521 连接到 5V 继电器模块(SRD-05VDC-SL-C),实现弱电控制系统对强电负载的安全隔离,防止电磁干扰影响主控运行。
电磁锁额定电压为 12V,由外接 12V/2A 直流电源单独供电。继电器的常开触点串联于电磁锁供电回路中:当主控输出高电平时,继电器吸合,电磁锁得电解锁;输出低电平时,继电器释放,锁体断电闭锁。同时,在电磁锁两端并联一个 1N4007 续流二极管,用以泄放断电瞬间产生的反向电动势,保护控制电路元件不受损坏。
3.6 多路电源管理模块
系统采用分级供电方案:外部接入 220V AC 转 12V DC 开关电源(输出功率 24W),为电磁锁和继电器提供主电源;通过 AMS1117-5.0 芯片将 12V 转换为 5V,供给矩阵键盘、WiFi 模块以及人脸识别模组的 5V 引脚;再利用 AMS1117-3.3 芯片将 5V 降压至 3.3V,供 STM32C8T6 主控、ESP8266 模组及人脸识别模块的 3.3V 工作引脚使用。
电源电路中加入了滤波电容和防反接二极管设计,显著提升了系统的供电稳定性与安全性,确保各模块在复杂环境下可靠运行。
四、软件系统设计
4.1 开发环境与软件架构
软件开发基于 STM32CubeIDE 1.14.0 平台进行,编程语言为 C 语言。借助 STM32CubeMX 工具完成芯片引脚分配、时钟树配置及外设初始化代码生成,大幅提高开发效率。程序结构采用模块化设计理念,划分为多个功能子模块:主函数模块、硬件驱动模块、人脸识别处理模块、取件码验证模块、WiFi 通信模块以及柜体控制模块。各模块之间通过函数调用实现数据传递与逻辑协同,降低耦合度,有利于后期维护与功能扩展。
4.2 主控核心逻辑(主函数模块)
主函数作为整个系统的调度中心,负责完成系统初始化与主循环任务。初始化阶段包括 GPIO、UART、定时器及中断系统的配置。初始化完成后进入无限主循环,持续执行以下任务:
- 轮询矩阵键盘状态,若有按键按下,根据键值调用相应处理函数(如处理取件码输入或人脸注册请求);
- 监听人脸识别模组的串口数据,解析返回的人脸匹配结果及柜体编号,若识别成功,则触发对应柜体的开启动作;
- 监控 ESP8266 模组的串口输入,解析来自机智云平台的远程开柜指令,在验证合法性后执行开锁操作;
- 读取柜体状态传感器信号,一旦发现异常(如门未关好或非法开启),立即调用报警函数,启动蜂鸣器与 LED 报警,并通过 WiFi 模块将异常信息上报至云平台。
4.3 人脸识别处理流程模块
该模块专门负责与人脸识别模组的交互与数据处理。上电后首先对模组进行初始化设置,包括波特率配置、数据库清空或加载预存人脸模板等。在运行过程中,主控通过串口发送识别或注册命令,等待模组返回响应数据。接收到数据后,解析其中的状态码和用户编号,判断是否匹配成功。若识别通过,则提取绑定的柜体编号,并通知柜体控制模块执行开锁;若失败则记录错误类型,可用于后续调试或日志统计。
人脸识别处理模块负责与人脸识别模组之间的串口通信及数据解析工作。STM32C8T6 通过 UART1 接收来自模组的数据,采用中断机制进行接收,防止主循环被阻塞。接收到的数据遵循固定帧格式,包含帧头(0xAA)、数据长度、识别结果(0x00 表示失败,0x01 表示成功)、柜体编号(范围为1至6)、校验和以及帧尾(0x55)。模块对接收数据执行帧结构校验和校验和验证,验证通过后提取识别结果与柜体编号;若识别成功,则将柜体编号存入全局变量,并置位开柜标志位。主循环检测到该标志后,触发对应的开柜操作。
[此处为图片1]4.4 取件码验证模块
本模块实现取件码的输入、存储与验证功能。系统在 STM32C8T6 的 Flash 存储器中预存了6组取件码(对应6个柜体),起始地址为 0x0800F000,支持通过矩阵键盘修改。用户输入6位数字取件码后,模块将其转换为整型数据,并与 Flash 中对应柜体的预设取件码进行比对,要求完全匹配(误差为0)。若匹配成功,则置位相应柜体的开柜标志位。同时,模块具备输入超时处理机制,设定超时时间为30秒,超时后自动清空输入缓冲区并重新等待新输入。
4.5 WiFi 通信与机智云协议解析模块
该模块负责与 ESP8266 模组之间的 AT 指令交互及机智云协议的数据解析。STM32C8T6 利用 UART2 向 ESP8266 发送 AT 指令,完成网络配置、连接机智云平台及设备注册等初始化流程。初始化完成后,ESP8266 进入透传模式,将平台下发的数据直接转发给主控芯片。机智云平台传输的数据采用 JSON 格式封装,例如 {"cmd":"open","cabinet":1} 表示开启1号柜体。模块对接收的 JSON 数据进行解析,提取指令类型与柜体编号,并验证其签名信息(使用 MD5 加密校验),验证通过后执行相应动作。此外,系统状态(如柜门开关状态、异常报警信息)也会被打包成 JSON 格式,经由 ESP8266 上报至机智云平台,实现远程监控功能。
4.6 柜体控制模块
此模块用于驱动电磁锁并检测柜体状态。通过 GPIO 控制继电器的通断,从而实现电磁锁的开启与关闭。执行开柜操作后,启动一个5秒定时器,时间到达后自动断电关闭电磁锁,避免长时间通电造成损坏。柜体状态通过干簧管传感器检测,传感器安装于柜门位置:当柜门闭合时,干簧管导通,GPIO 输入低电平;柜门打开时,干簧管断开,GPIO 输入高电平。模块持续监测该信号,一旦发现柜门开启时间超过10秒(超出正常取件时限),即判定为异常情况,立即触发蜂鸣器与LED报警装置。
五、系统测试与结果分析
5.1 测试环境搭建
构建完整的测试平台,包括 STM32C8T6 主控板、人脸识别模组、矩阵键盘、ESP8266-01S 模组、6套电磁锁与柜体模型、机智云 APP(Android 版本)以及 220VAC 转 12VDC 开关电源。测试网络环境为家庭宽带(下行100Mbps,上行50Mbps),保障 WiFi 通信的稳定性与可靠性。
5.2 功能测试
人脸识别开柜测试: 录入5名测试人员的人脸信息,每人执行10次开柜操作。共计50次操作中,48次成功识别并开柜,识别成功率达96%;两次失败源于测试者佩戴口罩,不影响整体性能。识别响应时间介于0.8~1.2秒之间,平均为1.0秒,满足实时性需求。
取件码开柜测试: 随机设置6组取件码,每组进行10次输入验证。共60次操作全部成功,验证准确率为100%;响应时间在0.5~0.8秒之间,平均0.6秒,操作体验流畅无卡顿。
APP 一键开柜测试: 使用机智云 APP 分别向6个柜体各发送10次开柜指令,总计60次。其中58次成功执行,成功率为96.7%;两次失败由网络波动引起,重发后恢复正常。指令传输延迟为1.0~2.0秒,平均1.5秒,符合远程控制的实时性标准。
异常报警测试: 模拟柜门未关紧或人为撬柜等异常场景,系统均能在1秒内激活蜂鸣器与LED报警,并将异常事件上报至机智云 APP,报警响应迅速且信息上传准确。
5.3 稳定性测试
系统连续运行72小时,期间不断循环执行各项功能(人脸识别→取件码开柜→APP远程开柜→异常报警模拟)。测试过程中未发生死机、通信中断或其他故障现象,各模块响应时间与成功率保持稳定,充分验证了系统在实际应用中的高可靠性与长期运行能力。
六、结论与展望
本系统以 STM32C8T6 为主控核心,设计并实现了一套智能外卖柜解决方案。该方案融合了人脸识别开柜、取件码验证开柜以及通过机智云 APP 远程控制开柜三大主要功能。采用模块化硬件架构与分层软件设计,有效降低了开发难度与整体成本,保障了各功能单元之间的高效协作。经测试,系统运行稳定,响应迅速,各项功能在准确率和实时性方面均满足预设指标,具备良好的实际部署潜力。
[此处为图片1]后续可从多个方向对系统进行功能增强与性能优化:
- 改进人脸识别算法,重点提升在佩戴口罩、光照条件不佳等复杂场景下的识别精度;
- 引入触摸屏输入方式,取代现有的矩阵键盘,从而提高人机交互的直观性与操作便利性;
- 集成 NB-IoT 通信模块,支持低功耗广域网络连接,拓展系统在无 WiFi 环境中的适用范围;
- 构建云端管理平台,实现对外卖柜集群的统一监管、运行数据汇总分析及远程固件升级,全面提升设备的智能化运维能力。


雷达卡


京公网安备 11010802022788号







