csa Computer Science and Application 2161-8801 2161-881X beplay体育官网网页版等您来挑战! 10.12677/csa.2025.153068 csa-110024 Articles 信息通讯 基于STM32 + 百度云人脸识别的智能外卖 背包系统设计
Design of Intelligent Takeout Backpack System Based on STM32 + Baidu Cloud Facial Recognition
马凯凯 亓相涛 武汉商学院信息工程学院,湖北 武汉 12 03 2025 15 03 161 169 19 2 :2025 17 2 :2025 17 3 :2025 Copyright © 2024 beplay安卓登录 All rights reserved. 2024 This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/ 智能外卖背包终端系统采用多核处理器STM32MP157的Cortex-A7核运行Linux操作系统,并通过QT实现了人机交互界面,使用TCP向服务端上传人脸图片,并接收返回的人脸识别结果;Cortex-M4核执行例如温湿度检测、背包门开关控制等实时任务,并使用MQTT协议与华为云IOT服务器进行上、下行通信。Cortex-A7和Cortex-M4这两个核心基于OpenAMP库中的跨处理器通信的协议和框架RPMsg进行异核通信。服务端采用MVC架构、Spring Boot框架、Mybatis持久层框架构建,并通过百度人脸识别API提供人脸认证服务;Android客户端采用MVP架构构建,采用Retrofit + RxJava + OkHttp网络请求框架实现与服务端网络交互,Room框架实现客户端数据缓存。通过外卖背包设备终端,Android客户端,Spring Boot服务端,以及华为云IOT服务器搭建整个系统,实现用户对设备控制与监测,向用户提供较为完善的服务。
The intelligent takeaway backpack terminal system uses the Cortex-A7 core of the STM32MP157 multi-core processor to run the Linux operating system, and implements a human-computer interaction interface through QT. It uploads facial images to the server using TCP and receives the returned facial recognition results; The Cortex-M4 core performs real-time tasks such as temperature and humidity detection, backpack door switch control, and uses MQTT protocol to communicate with Huawei Cloud IOT servers in both uplink and downlink directions. The Cortex-A7 and Cortex-M4 cores are based on the cross processor communication protocol and framework RPMSg in the OpenAMP library for cross core communication. The server is built using MVC architecture, Spring Boot framework, Mybatis persistence layer framework, and provides facial authentication services through Baidu facial recognition API; The Android client is built using the MVP architecture and utilizes the Retrofit + RXJava + OkHttp network request framework to interact with the server network. The Room framework is used to catch client data. By using the takeaway backpack device terminal, Android client, Spring Boot server, and Huawei Cloud IOT server to build the entire system, users can control and monitor their devices, providing them with comprehensive services.
外卖背包,人脸识别,STM32,百度云,物联网,MQTT
Take-Out Backpack
Facial Recognition STM32 Baidu Cloud Internet of Things MQTT
1. 引言

我国在线外卖行业正迅速发展,用户规模急剧增长。据统计,截至2023年底,外卖市场交易额达到1.2万亿元,外卖用户达5亿 [1] 。目前,传统的外卖配送方式主要依赖于配送员将餐品送达指定地点,再通过电话通知用户取餐 [2] 。然而,这种方式会在某些情况下给骑手和用户带来不便。为满足实际用户需求,本文设计了一套基于STM32 + 百度云人脸识别的智能外卖背包系统,旨在为用户和配送员提供更便捷、安全的外卖领取与存放方案,从而优化整个外卖行业的服务体验。

智能外卖背包系统的应用领域包括以下几个方面:

1) 小区社区:为居民提供安全、便捷的外卖领取服务。

2) 餐饮行业:为外卖用户提供便捷的领取和存放外卖食品的方式。

3) 商业区域:为顾客提供外卖领取和存放服务,增加顾客体验和便利性。

4) 教育机构:为师生提供便利的外卖领取方式,满足他们在繁忙学习生活中的需求。

5) 办公场所:放置在办公楼、写字楼等场所,方便员工在工作时间领取外卖,提高工作效率。

2. 系统设计

本文的智能外卖背包系统包含智能外卖背包硬件终端、用户端手机APP、Spring Boot服务端、MySql数据库和华为云IOT服务器。智能外卖背包终端利用MQTT协议将背包内手机号、取件码、温湿度等数据上报至华为云IOT服务器。当华为云IOT服务器接收到智能外卖背包上报的数据后,会触发数据转发规则,将数据转发至Spring Boot服务端进行处理。当用户在摄像头前点击屏幕上的人脸识别按钮时,系统会拍摄一张人脸图片,并通过TCP协议将照片发送至Spring Boot服务端。Spring Boot服务端收到人脸图片后,调用百度智能云人脸识别API对照片进行人脸识别,并对识别到的结果进行相应的处理,最后通过TCP协议向智能外卖背包终端发送对应的指令,实现了人脸识别的外卖存取功能。系统总体设计方案如 图1 所示。

Figure 1. Overall design architecture of intelligent backpack system--图1. 智能背包系统总体设计架构--
3. 外卖背包终端设计 3.1. 硬件框架设计

本文的智能外卖背包硬件终端选用了STM32MP157作为其主控芯片。STM32MP157是一款卓越的多核处理器,内含两个独立核心:Cortex-A7和Cortex-M4。在本系统中,Cortex-A7核心负责运行Linux操作系统,以处理包括人脸识别和用户界面等任务;而Cortex-M4核心则专门用于执行实时任务,例如温湿度检测、背包门开关控制等。智能外卖背包硬件系统框架如 图2 所示。

Figure 2. Hardware system framework diagram of intelligent takeaway backpack--图2. 智能外卖背包硬件系统框架图--

Cortex-A7和Cortex-M4这两个核心基于OpenAMP库中的跨处理器通信的协议和框架RPMsg通过虚拟串口进行异核通信 [3] 。这样的设计使得智能外卖背包在高性能计算与实时控制之间取得了优秀的平衡,从而确保了其快速响应和可靠性。基于虚拟串口实现异核通信框架如 图3 所示。

Figure 3. Framework diagram of heterogeneous communication based on virtual serial port implementation--图3. 基于虚拟串口实现的异核通信框架图--
3.2. Cortex-M4内核的功能设计

Cortex-M4内核启动后首先对Tcrt5000红外反射传感器、温湿度传感器DHT11、紫外灯、排风扇、定时器和串口等外设进行初始化。ESP8266模块连接在串口3上,当串口初始化成功后,首先通过串口向ESP8266模块发送AT指令将ESP8266连接至一个提前设定好的、可以访问外网的WIFI [4] 。连接WIFI成功后先发送AT + MQTTUSERCFG和AT + MQTTCLIENTID命令配置MQTT连接所使用的账号、密码和设备号,配置成功后通过AT + MQTTCONN = 0,“1 17.78.5.125”,1883,1命令连接至对应的华为云IOT服务器。华为云IOT服务器连接成功后,再通过AT指令将每个背包子状态清空,以防止设备非正常关闭时所带来的干扰。设备数据清空代码片段如 图4 所示。

Figure 4. Code snippet diagram for clearing device data--图4. 设备数据清空代码片段图--

由于本文所使用的ESP8266模块的MQTT传输协议一次最多只能传输255个字节,所以我们将JSON数据中的各属性集成在一个no属性中,再以特殊符号隔开,以节省传输空间(no后面的数字表示背包号)。设备属性上报格式如 图5 所示。

Figure 5. Format diagram for device attribute reporting--图5. 设备属性上报格式图-- Figure 6. Partial code diagram of virtual serial port callback function--图6. 虚拟串口回调函数部分代码图--

在设备初始化属性成功后,在主循环中使用OPENAMP_check_for_message ()函数进行轮询,以检查Cortex-A7内核是否有发送数据过来。当Cortex-M4内核的虚拟串口检测到有Cortex-A7内核发送来的数据后,回调函数void VIRT_UART0_RxCpltCallback (VIRT_UART_Handle TypeDef * huart)会将对应的标志位flag置为SET,并且通过一个二维数组t [5] [20]提取并存储其中的有效数据。其中t [0]对应的是背包号,t [1]对应的是手机号,t [2]对应的是取件码。虚拟串口回调函数部分代码如 图6 所示。

一旦一次数据提取完成,将打开对应背包号t [0]的背包门,并通过串口向ESP8266发送AT指令,以上报存储在背包号t [0]中的手机号t [1]、取件码t [2]和温湿度信息。最后,根据背包内是否已存在物品,翻转该背包的紫外线杀菌灯状态。当背包内存在物品时,紫外线杀菌灯点亮;不存在物品时,紫外线杀菌灯关闭。

此外,通过背包门顶部的红外反射传感器实时监测背包门的开关状态。当背包门打开时,对应背包门的红外传感器的输出由低电平转换为高电平。背包门状态检测的任务函数会根据红外反射传感器的电平输出实时控制对应排风扇的运行。当背包门打开时,排风扇会自动开启,以实现除尘和散味的作用。

3.3. Cortex-A7内核的功能设计

Cortex-A7内核运行了Linux操作系统,系统启动完成后首先通过SDIO接口的WIFI芯片RTL8723DS连接至事先设定好的WIFI。

为了提高骑手的送餐效率并使操作更加简单快速,本文采用QT设计了一个统一的人机交互界面,将所有功能都整合在一个界面中。在这个界面上,骑手和食客可以通过数字键盘轻松进行外卖的存取操作 [5] 。同时,该界面还提供了一个便捷且快速的人脸识别存取功能,只需点击右侧的识别按钮即可完成操作。人脸识别界面实物如 图7 所示。

Figure 7. Physical image of facial recognition interface--图7. 人脸识别界面实物图--

用户可通过点击界面中的【当前模式:存放】按钮切换模式,并且根据模式不同,输入的数字位数限制也会不同:存放模式时是骑手输入食客的手机号,限制为11位;取出模式时是食客输入自己的取件码,限制为6位。

当骑手或用户将脸对准摄像头时点击识别按钮,系统会拍摄一张图片,然后通过TCP Socket上传该图片至Spring Boot服务端,并且接收并解析处理Spring Boot服务端传输回来的人脸识别结果数据,然后给Cortex-M4内核下发相应的命令以完成对应的操作。

4. 外卖背包系统软件设计

服务端作为本系统中的数据处理中心,其向硬件端提供端到端的可靠数据传输(TCP)端口,TCP端口向硬件端提供人脸图片上下行数据传输服务,并接入百度人脸识别API服务以实现对人脸的识别功能 [6] ;其向APP客户端提供订单数据处理,用户数据处理,外卖背包状态数据处理HTTP请求接口;向华为云IOT服务器提供数据推送接口,实现硬件端状态数据录入更新。

其基于Java语言开发;使用Spring Boot框架,MyBatis持久层框架为基础,采用MVC架构构建;以MySql数据库为用户所有数据的载体。服务端框架图如 图8 所示。

Figure 8. Server framework diagram--图8. 服务端框架图-- 4.1. 客户端APP设计

Android APP客户端作为系统中用户交互的接口,其向用户提供可视化的界面,并为用户提供订单,外卖背包控制,账户控制的功能入口;通过与服务端之间的HTTP连接通道请求相应的功能服务,以实现用户对外卖背包控制,外卖背包状态监测,订单信息查询控制,个人账户信息录入更改功能 [7]

其同样基于JAVA语言开发;使用MVP框架构建客户端,使用SQLITE轻量型数据库作为用户数据的临时缓存载体;采用GOOGLE的ROOM框架简便高效的访问SQLITE数据库数据,向APP提供用户数据写入读取入口;采用Retrofit + RxJava + OkHttp网络请求框架向服务端发起HTTP请求,向APP提供服务端数据请求入口;客户端框架图如下 图9 所示。

Figure 9. APP client system framework diagram--图9. APP客户端系统框架图--
4.2. 数据库设计

在设计数据时,考虑到客户端频繁请求服务端数据的情况,因此对重复请求数据暂存于Android系统中支持的SQLITE轻量型数据库中,一定量地减少了客户端对服务端的数据请求次数;在客户端的SQLITE数据库中存放用户账户信息,亦可实现用户账户自动登录功能;在服务端采用MySql关系型数据库存储用户账户信息,订单信息,外卖背包信息数据,其中用户信息表(User)、订单信息表(Orders)之间存在一对多关系,外卖背包状态信息表(BoxData)、订单信息表(Orders)之间存在一对一关系。系统实体关系图如下 图10 所示。

Figure 10. APP client system framework diagram--图10. APP客户端系统框架图--

账户表用于记录用户账户基本信息,包括用户唯一标识,账户密码,用户权限(骑手mv,食客user)。账户表如下 表1 所示。

<xref></xref>Table 1. Account tableTable 1. Account table 表1. 账户表

字段名

字段类型

主键

是否为空

描述

username

varchar

FALSE

用户标识

password

varchar

TRUE

账户密码

privileges

varchar

TRUE

用户权限

订单表用于记录用户订单基本信息,包括订单ID,下单用户名,配送用户名,菜品名称,存放背包号,订单状态。订单表如下 表2 所示。

<xref></xref>Table 2. Orders tableTable 2. Orders table 表2. 订单表

字段名

字段类型

主键

是否为空

描述

id

int

FALSE

订单id

Orderphone

varchar

FALSE

下单用户

Mvphone

varchar

TRUE

配送用户

No

varchar

TRUE

存放背包号

Orderstatus

varchar

TRUE

订单状态

dishname

varchar

FALSE

菜品名称

外卖背包状态表用于记录外卖背包基本信息,包括背包号,取件码,物品所属用户名,湿度,温度。外卖背包状态表如下 表3 所示。

<xref></xref>Table 3. Delivery backpack status tableTable 3. Delivery backpack status table 表3. 外卖背包状态表

字段名

字段类型

主键

是否为空

描述

No

varchar

FALSE

背包号

code

varchar

TRUE

取件码

phone

varchar

TRUE

背包格占用手机号

temp

varchar

TRUE

温度

humi

varchar

TRUE

湿度

5. 结语

虽然本文成功地完成了该系统的设计,但在后续实际使用的过程中发现了一些可以改进的地方。下面是我们认为需要改进的几个方面:

1) 网络功能优化:系统用于连接网络的ESP8266模块和RTL8723DS可升级为4G网络模块,这样即使是在没有WIFI覆盖的区域,智能外卖背包也可以正常使用。

2) 性能优化:通过优化算法和代码,可以减少系统的资源占用和运行时间,以提高其响应速度和运行效率。从而提升整体性能。

3) 安全性加强:需要进一步加强系统的安全性,确保用户数据的保密性和完整性。通过加密传输、权限控制和漏洞修复等措施,提升系统对潜在风险和威胁的防范能力。

4) 功能扩展:计划后续在系统中添加一些新的功能,以满足用户不断变化的需求。

基金项目

武汉商学院大学生创新创业项目——平安包护智能背包202311654066。

NOTES

*通讯作者。

References 王紫玥, 陈建新. 校园共享智能快餐柜设计研究[J]. 设计, 2023, 36(9): 55-59. 李欣霞, 熊永贞, 王超越, 王志云, 卢立凤, 丁淑菡. 基于丰巢模式下的智能外卖保温保鲜柜数字化设计[J]. 电子制作, 2020(11): 43-45+77. 马后权. 基于STM32MP157的Linux技术研究和相关子系统驱动开发[D]: [硕士学位论文]. 北京: 中国电子科技集团公司电子科学研究院, 2022. 吴杨博, 闫金萌, 胡海峰. 基于ESP8266的智能家居环境监测系统设计与实现[J]. 通信与信息技术, 2024(2): 10-14. 潘俊珂. 基于Linux_Qt的人脸识别视频监控系统设计与实现[D]: [硕士学位论文]. 温州: 温州大学, 2022. 马宇轩, 潘纬航, 廖腾烈, 等. 基于百度AI人脸识别的机场危险人员监控[J]. 现代信息科技, 2022, 6(1): 25-27+31. Ji, J.Y., Xu, M.Y., Jin, S.R. and Du, S.J. (2021) Based on Campus Takeout Distribution Problems and Takeout Cabinet Application Analysis. Journal of Smart Cities, 6, 22-24.
Baidu
map