STM32 智能外卖柜的设计与实现

STM32 智能外卖柜的设计与实现

摘要

外卖行业的蓬勃发展催生了对智能外卖柜的迫切需求,传统外卖柜在交互方式和智能化程度上已难以满足用户多样化的使用需求。本文设计并实现了一款以 STM32C8T6 为核心控制器的智能外卖柜系统,集成人脸识别开柜、取件码开柜和机智云 APP 一键开柜三大核心功能。系统通过模块化硬件设计和分层软件架构,实现了各功能模块的协同工作,经实际测试,系统运行稳定、响应及时,有效提升了外卖柜的智能化水平和用户使用体验,为智能外卖柜的小型化、低成本化设计提供了可行方案。

关键词:STM32C8T6;智能外卖柜;人脸识别;机智云 APP;模块化设计

一、引言

近年来,我国外卖市场交易规模持续攀升,2024 年外卖行业交易额突破 1.5 万亿元,外卖配送的高频次、高分散性特征使得外卖柜成为社区、写字楼、校园等场景的重要配套设施。传统外卖柜多采用单一的密码开锁或刷卡开锁方式,存在密码易泄露、卡片易丢失、操作流程繁琐等问题,且缺乏远程控制和智能化管理能力。随着物联网、人工智能技术的快速发展,将人脸识别、APP 远程控制等技术融入外卖柜设计,成为提升外卖柜服务质量和安全性的重要方向。

STM32C8T6 作为意法半导体推出的一款低成本、高性能微控制器,基于 ARM Cortex-M3 内核,具备丰富的外设接口和较低的功耗,非常适合小型化智能设备的开发。本文以 STM32C8T6 为主控芯片,结合人脸识别模组、WiFi 通信模块和机智云物联网平台,设计实现了一款多功能智能外卖柜系统,旨在解决传统外卖柜的局限性,为用户提供更安全、便捷、智能的取件体验,同时降低智能外卖柜的硬件成本,推动其在中小场景的普及应用。

二、系统总体设计

2.1 设计目标

本系统的核心设计目标包括:

  1. 实现人脸识别开柜功能,支持离线人脸库管理,人脸匹配成功后自动控制对应柜体开启;
  2. 实现取件码开柜功能,用户通过键盘输入 6 位数字取件码,验证通过后完成开锁操作;
  3. 实现机智云 APP 一键开柜功能,用户通过手机 APP 发送开柜指令,经物联网平台传输至设备端实现远程开锁;
  4. 系统具备柜体状态检测、操作提示、异常报警等辅助功能,保障设备稳定运行;
  5. 优化硬件选型和电路设计,降低系统整体成本,满足小型化部署需求。

2.2 系统架构

系统采用模块化架构设计,分为硬件层、软件层和物联网平台层三个部分:

  • 硬件层:以 STM32C8T6 为主控单元,包括人脸识别模块、矩阵键盘模块、WiFi 通信模块(ESP8266)、柜体驱动模块(继电器 + 电磁锁)、电源模块和状态指示模块(LED + 蜂鸣器),各模块通过标准化接口与主控单元连接;
  • 软件层:基于 STM32CubeIDE 开发环境,采用 C 语言编写主控程序,实现硬件驱动、数据处理、指令解析和逻辑控制,同时完成人脸识别算法适配和机智云协议解析;
  • 物联网平台层:依托机智云物联网平台,实现设备端与手机 APP 的双向数据通信,包括设备注册、指令下发、状态上报等功能,为远程控制和设备管理提供支撑。

2.3 工作原理

系统上电后,STM32C8T6 完成初始化配置,各外设模块进入待机状态。当用户选择人脸识别开柜时,人脸识别模组采集用户面部图像,提取特征值并与本地存储的人脸特征库进行匹配,匹配结果通过串口传输至 STM32C8T6,匹配成功则控制对应电磁锁开启;选择取件码开柜时,用户通过矩阵键盘输入取件码,STM32C8T6 将输入数据与预存的取件码进行比对,验证通过后执行开柜操作;选择 APP 一键开柜时,手机 APP 通过机智云平台向 ESP8266 模块发送开柜指令,STM32C8T6 接收并解析指令后控制柜体开启。同时,STM32C8T6 实时检测柜体的开关状态,若出现柜门未关、强行撬柜等异常情况,立即触发蜂鸣器报警,并通过 WiFi 模块将异常信息上报至机智云平台,实现设备的远程监控。

三、硬件设计

3.1 主控模块

主控单元选用 STM32C8T6 微控制器,该芯片基于 ARM Cortex-M3 内核,主频 72MHz,拥有 64KB Flash 和 20KB SRAM,具备 GPIO、UART、I2C、SPI 等丰富的外设接口,满足系统对多模块的控制和数据交互需求。主控模块外接 8MHz 晶振电路和复位电路,实现系统时钟配置和复位功能;同时设计 USB 转串口电路(CH340G),用于程序下载和调试,降低开发成本和硬件复杂度。

3.2 人脸识别模块

人脸识别模块选用低成本的串口人脸识别模组(如 HX-M02),该模组内置 OV2640 摄像头,支持离线人脸识别,可存储 50 张人脸数据,识别准确率≥95%,识别速度≤1s。模组通过 UART 接口与 STM32C8T6 通信,波特率配置为 9600bps,其工作电压为 3.3V,通过 AMS1117-3.3 稳压芯片从 5V 电源获取稳定供电。模组采集面部图像后,内部完成特征提取和匹配,匹配成功后向 STM32C8T6 发送高电平信号和柜体编号指令,主控芯片接收指令后控制对应柜体开启。

3.3 输入与指示模块

输入模块采用 4×4 矩阵键盘,实现取件码输入、功能选择(如人脸录入、取件码重置)等操作。矩阵键盘的行线(PA0~PA3)和列线(PA4~PA7)分别连接至 STM32C8T6 的 GPIO 口,采用行扫描法检测按键状态,并通过软件延时 10ms 实现消抖处理,提高按键识别的准确性。指示模块由 LED 指示灯和蜂鸣器组成,LED 灯(PB0~PB2)分别用于指示系统待机、操作成功、异常报警状态,蜂鸣器(PB3)采用三极管驱动电路,实现不同频率的声音报警,如短鸣表示操作成功,长鸣表示异常情况。

3.4 WiFi 通信模块

WiFi 通信模块选用 ESP8266-01S 模组,该模组支持 802.11b/g/n 无线协议,体积小、成本低,通过 UART 接口与 STM32C8T6 通信(波特率 115200bps)。模组工作电压为 3.3V,需在电源输入端并联 100μF 和 0.1μF 电容进行滤波,减少电源噪声干扰。ESP8266 模组通过 AT 指令集配置网络参数,连接至机智云平台的 MQTT 服务器(mqtt.gizwits.com,端口 1883),实现设备端与平台的双向通信:将 STM32C8T6 发送的柜体状态、异常信息等数据上传至平台,同时接收平台下发的 APP 开柜指令并转发至主控芯片。

3.5 柜体控制模块

柜体控制模块由继电器驱动电路和 12V 直流电磁锁组成,系统设计 6 个柜体单元,满足小型场景的使用需求。STM32C8T6 的 GPIO 口(PC0~PC5)通过光耦隔离芯片(TLP521)连接至 5V 继电器模块(SRD-05VDC-SL-C),实现弱电对强电的隔离控制,避免电磁干扰对主控芯片的影响。电磁锁工作电压为 12V,由外接 12V/2A 直流电源供电,继电器模块的常开触点串联在电磁锁的供电回路中,当 STM32C8T6 输出高电平信号时,继电器吸合,电磁锁得电开启;输出低电平时,继电器断开,电磁锁失电闭合。同时,在电磁锁两端并联续流二极管(1N4007),防止继电器断开时产生的反向电动势损坏电路元件。

3.6 电源模块

系统电源采用多路供电设计,外接 220VAC 转 12VDC 开关电源(输出功率 24W),为电磁锁和继电器模块提供 12V 供电;通过 AMS1117-5.0 稳压芯片将 12V 转换为 5V,为矩阵键盘、WiFi 模块、人脸识别模组的 5V 引脚供电;再通过 AMS1117-3.3 稳压芯片将 5V 转换为 3.3V,为 STM32C8T6 主控芯片、人脸识别模组的 3.3V 引脚和 ESP8266 模组供电。电源模块设计滤波电容和防反接二极管,提高供电稳定性和安全性。

四、软件设计

4.1 开发环境与程序架构

系统软件基于 STM32CubeIDE 1.14.0 开发环境进行编写,采用 C 语言作为编程语言,利用 STM32CubeMX 工具完成引脚配置、时钟树配置和外设初始化代码生成,提高开发效率。程序采用模块化设计,分为主函数模块、硬件驱动模块、人脸识别处理模块、取件码验证模块、WiFi 通信模块和柜体控制模块,各模块通过函数调用实现数据交互和逻辑控制,降低程序耦合度,便于后期功能扩展和维护。

4.2 主函数模块

主函数是系统的核心控制模块,完成系统初始化和主循环逻辑处理。系统初始化包括 GPIO 初始化、UART 初始化、定时器初始化、中断配置等,初始化完成后进入主循环,循环执行以下操作:

  1. 检测矩阵键盘的按键状态,若有按键按下,根据按键类型执行相应的处理函数(如取件码输入处理、人脸录入处理);
  2. 检测人脸识别模组的串口数据,解析人脸匹配结果和柜体编号,若匹配成功,调用柜体控制函数开启对应柜体;
  3. 检测 ESP8266 模组的串口数据,解析机智云平台下发的开柜指令,验证指令有效性后执行开柜操作;
  4. 检测柜体状态传感器的输入信号,若检测到异常状态,调用报警函数触发蜂鸣器和 LED 报警,并将异常信息通过 WiFi 模块上报至机智云平台。

4.3 人脸识别处理模块

人脸识别处理模块负责与人脸识别模组的串口通信和数据解析。STM32C8T6 通过 UART1 接收人脸识别模组发送的数据,采用中断方式接收数据,避免阻塞主循环。数据格式为固定帧结构,包括帧头(0xAA)、数据长度、识别结果(0x00 为失败,0x01 为成功)、柜体编号(1~6)、校验和、帧尾(0x55)。模块对接收到的数据进行帧格式校验和校验和验证,验证通过后提取识别结果和柜体编号,若识别成功,将柜体编号存入全局变量,并置位开柜标志位,主循环检测到开柜标志位后执行开柜操作。

4.4 取件码验证模块

取件码验证模块实现取件码的输入、存储和验证功能。系统预存 6 组取件码(对应 6 个柜体),存储在 STM32C8T6 的 Flash 中(地址 0x0800F000 开始),支持通过键盘操作修改取件码。用户通过矩阵键盘输入 6 位数字取件码后,模块将输入数据转换为整型数据,与 Flash 中存储的对应柜体取件码进行比对,比对误差允许为 0(即完全匹配),若匹配成功,置位对应柜体的开柜标志位。模块还实现了取件码输入超时处理(超时时间 30s),超时后清空输入缓冲区,重新等待输入。

4.5 WiFi 通信与机智云协议解析模块

WiFi 通信模块负责与 ESP8266 模组的 AT 指令交互和机智云协议解析。STM32C8T6 通过 UART2 向 ESP8266 模组发送 AT 指令,完成模组的网络配置、连接机智云平台、设备注册等初始化操作。初始化完成后,模组进入透传模式,将机智云平台下发的数据直接转发至 STM32C8T6。机智云协议采用 JSON 格式封装数据,指令格式为 {"cmd":"open","cabinet":1}(表示开启 1 号柜体)。模块对接收到的 JSON 数据进行解析,提取指令类型和柜体编号,验证指令的签名信息(采用 MD5 加密校验),验证通过后执行相应的操作。同时,模块将系统状态(如柜体开关状态、异常信息)封装为 JSON 格式数据,通过 ESP8266 模组上传至机智云平台,实现设备状态的远程监控。

4.6 柜体控制模块

柜体控制模块实现电磁锁的驱动和柜体状态检测。模块通过 GPIO 口输出高低电平信号控制继电器的吸合与断开,从而控制电磁锁的开启与闭合。开柜操作执行后,模块启动定时器(定时 5s),5s 后自动关闭电磁锁,避免长时间通电导致电磁锁损坏。柜体状态检测采用干簧管传感器,安装在柜体门板上,当柜门关闭时,干簧管闭合,GPIO 口输入低电平;柜门打开时,干簧管断开,GPIO 口输入高电平。模块实时检测干簧管的输入信号,若检测到柜门打开时间超过 10s(正常取件时间),则判定为异常状态,触发报警功能。

五、系统测试与结果分析

5.1 测试环境搭建

搭建系统测试平台,包括 STM32C8T6 主控板、人脸识别模组、矩阵键盘、ESP8266-01S 模组、6 组电磁锁和柜体模型、机智云 APP(Android 版)、220VAC 转 12VDC 开关电源。测试环境的网络条件为家庭宽带(下行带宽 100Mbps,上行带宽 50Mbps),确保 WiFi 通信的稳定性。

5.2 功能测试

  1. 人脸识别开柜测试:录入 5 名测试人员的人脸数据,每人进行 10 次人脸识别开柜操作,测试结果显示,50 次操作中 48 次成功识别并开柜,识别成功率为 96%,失败的 2 次为测试人员佩戴口罩导致,符合设计要求的识别准确率≥95%;识别响应时间为 0.8~1.2s,平均响应时间 1.0s,满足实时性要求。
  2. 取件码开柜测试:随机生成 6 组取件码,每组取件码进行 10 次输入测试,测试结果显示,60 次操作中 60 次验证通过并开柜,验证准确率为 100%;输入响应时间为 0.5~0.8s,平均响应时间 0.6s,操作流程流畅。
  3. APP 一键开柜测试:通过机智云 APP 向 6 个柜体分别发送 10 次开柜指令,测试结果显示,60 次操作中 58 次成功接收指令并开柜,指令执行成功率为 96.7%,失败的 2 次为网络波动导致,重新发送指令后执行成功;指令传输延迟为 1.0~2.0s,平均延迟 1.5s,满足远程控制的实时性要求。
  4. 异常报警测试:模拟柜门未关、强行撬柜等异常情况,系统均能在 1s 内触发蜂鸣器和 LED 报警,并将异常信息上报至机智云 APP,报警响应及时,信息上报准确。

5.3 稳定性测试

系统连续通电运行 72 小时,进行不间断的功能循环测试(人脸识别开柜→取件码开柜→APP 开柜→异常报警),测试结果显示,系统运行稳定,未出现死机、模块通信中断等故障,各功能模块的响应时间和成功率保持稳定,满足实际应用的稳定性要求。

六、结论与展望

本文设计并实现了一款以 STM32C8T6 为核心的智能外卖柜系统,成功集成了人脸识别开柜、取件码开柜和机智云 APP 一键开柜三大核心功能,通过模块化硬件设计和分层软件架构,降低了系统成本和开发复杂度,实现了各功能模块的高效协同工作。测试结果表明,系统运行稳定、响应及时,各功能的准确率和实时性均达到设计要求,具备实际应用价值。

未来可对系统进行以下优化和扩展:

  1. 优化人脸识别算法,提升佩戴口罩、光线不足等复杂环境下的识别准确率;
  2. 增加触摸屏输入模块,替代矩阵键盘,提升用户操作的便捷性和交互体验;
  3. 引入 NB-IoT 通信模块,支持低功耗广域网通信,适应无 WiFi 覆盖的场景;
  4. 开发云端管理平台,实现多台外卖柜的集中管理、数据统计和远程升级,提升设备的智能化管理水平。
相关推荐
EkihzniY2 小时前
OCR定制识别:解锁文字识别的无限可能
大数据·人工智能·ocr
秋刀鱼 ..2 小时前
第五届计算机、物联网与控制工程国际学术会议(CITCE 2025)
人工智能·python·物联网·机器人·制造·新人首发
jkyy20142 小时前
慢病全周期管理+数智化:重构药品零售的健康价值
大数据·人工智能·物联网·健康医疗
l3538o675732 小时前
智能家居设备供电芯片:220v降压5v 12v-600ma电源芯片AH8966/AH8665
人工智能·科技·单片机·智能家居
xieyan08112 小时前
论文阅读_FinRL-DeepSeek:大语言模型赋能的风险敏感强化学习交易代理
论文阅读·人工智能·语言模型
人工智能培训2 小时前
循环神经网络讲解(2)
人工智能·rnn·深度学习·大模型·具身智能·大模型学习·大模型工程师
free-elcmacom2 小时前
机器学习进阶<2>基于朴素贝叶斯的电影评论情感分析
人工智能·机器学习
兜兜转转了多少年2 小时前
《Prompt Engineering白皮书》笔记04 System / Context / Role 三种提示工程
人工智能·笔记·prompt
Jerryhut2 小时前
01、yolov8合集1
人工智能·yolo