颜琳谕,姚玲英,张晓熳,王晓琳
(广州市广东第二师范学院,广东广州,510300)
随着社会经济的发展,双职工家庭在不断增多,人们渴望追求更加美好的生活,外出就餐的需求也越来越大。传统餐饮行业依靠纯人工点菜、记账与送餐,存在记录修改不便、成本高、利润低等劣势,已经逐步退出市场,取而代之的是手机扫码点餐的普及,扫码点餐虽节省了点餐的流程,但仍需要人力送餐。此外,三年疫情警示人们,日常生活中应该尽量减少不必要的接触,这也促使了智能送餐小车逐步走入人们的视野。无接触式智能送餐小车不但节省了人力成本,减少了人员之间的接触,为顾客提供了更加安全、便捷的服务,帮助企业节约了成本,而且,相比人工送餐服务更能得到人们的青睐,有效提高了企业的竞争力,需求量也在逐步增加,市场前景广阔。
智能送餐小车的硬件系统主要是由STM32F103ZET6芯片、Open MV4plus 智能摄像头、矩阵键盘、OLED 液晶显示模块、ESP8266 无线收发模块、五路循迹传感器、红外模块、超声波模块、语音播报模块、雾化器消毒模块、L298N 直流电机驱动模块以及3W/4R 喇叭等组成,系统总体设计模块框图如图1 所示。
图1 系统总体设计模块框图
智能小车系统以STM32F103ZET6 为核心,通过ESP8266 无线收发模块搭建无线网络,并设计APP 与无线网络相互配合。顾客连接无线网络登录APP 进行线上下单,送餐小车接收到顾客的下单信息后在OLED 显示端显示,实现控制端到小车间的远程信息交互。将餐品放入放餐台后按下对应的按键,送餐开始。小车以Open MV 作为视觉系统核心,采用卷积神经网络对数字和字母进行模型训练,将训练模型导入Open MV,调用内部神经网络库进行识别,配合红外和超声波等多种模块,设计了线上点餐、巡线避障、定点送餐、语音播报、自动消毒等功能,实现无接触式智能送餐。
系统采用STM32F103ZET6 作为主控芯片,实现对整个智能送餐小车的运行管理。
红外循迹采用的模块是TCRT5000L 红外线反射式光电开关板,这是专门设计用作复杂黑白线、交叉黑白线检测的传感器,因此在小车送餐的过程中主要使用5 路巡线传感器进行巡线。避障电路采用超声波传感器HC-SR04,它的最大射程为4m,最小射程为2cm,测距精度可达3mm。程序开始时,先开启超声波模块的外设时钟,通过单片机I/O 控制启动超声波模块发送频率为40kHz 的方波并接收到高电平,记录总时间再通过公式计算出障碍物的距离[1]。在巡线过程中一旦检测到障碍物在系统设定的60cm 范围内时,就执行停止巡线指令,并进行语音播报行人避开,从而实现巡线避障的功能。五路巡线电路原理图如图2 所示,超声波避障电路原理图如图3 所示。
图2 五路巡线电路原理图
图3 超声波避障电路原理图
电机的驱动芯片是双L298N,L298N 是一款高电压、大电流输出的电机驱动芯片,其驱动电压可以在6V~36V 内正常工作,单个L298N 输出电流能力可达2A,芯片内部集成了双H 桥电路结构[2],能使单片机方便操控所输入的TTL 电平,满足了小车电机运行所需要的驱动要求。在设计电路中,通过改变连接单片机IO 口控制电机两个端子的高低电平,来切换电机正、反转及停止,通过调节PWM 脉宽调制波的占空比来控制小车行进的速度,脉宽调制的频率范围保持在0~40kHz 以内,从而实现小车的运动控制。L298N 电路原理图如图4 所示。
图4 L298N 电路原理图
ESP8266 是一款超低功耗的UART-WiFi 透传模块,作为高度集成的WiFi SoC[2]解决方案,具有功耗低、稳定性高的优势。其CPU 时钟速度在80MHz~160MHz 之间,支持实时操作系统,广泛应用于各种移动设备和物联网中。
智能小车上搭载的ESP8266 模块充当网络通信中的网络服务器端,手机充当网络客户端,ESP8266 和单片机两者之间直接通过串口交互,网络客户端给ESP8266 模块发送相应AT 指令就能间接控制STM32F103ZET6 单片机外围器件。ESP8266 电路原理图如图5 所示。
图5 ESP8266 电路原理图
视觉识别系统由摄像头模块和云台共同搭建完成。摄像头模块使用的是Open MV4 H7 Plus,它是一款开源、小巧、低功耗、功能强大的机器视觉模块,以STM32H743 处理器为核心,集成了OV7725 摄像头芯片[4],模块上的Python编程接口方便使用者开发更多功能。而云台的模型可根据智能送餐小车的高度和观测倾斜度设计,再3D 打印成型。将它们组合并搭建在小车的前面,云台用来架高Open MV 并固定倾斜角度,Open MV 主要是用来在巡线过程中识别数字和字母,从而完成视觉识别系统的电路设计。Open MV电路接口图如图6 所示。
图6 Open MV 电路接口图
JQ8900-16P 语音播报模块的工作电压在3.3~5.5V之间,满足单片机IO 对硬件的供电要求,还能够灵活地更换SPI-flash 内的语音内容。在电路设计中先将需要播报的语音转换成MP3文件,再把它们储存在SPIFLASH 中,该语音播报模块有三种控制模式,分别是多种控制模式、两线串口控制模式、一线串口控制模式,智能送餐小车使用的是最简单的一线串口控制模式。这种模式是SDA 为数据发送端口,先发送低位,再发送需要播报的语音地址,简单易控制,在送餐过程中便于播报各种情况和提醒顾客取餐。JQ8900-16P 电路原理图如图7 所示。
图7 JQ8900-16P 电路原理图
0.96 寸的4 针OLED显示屏小巧精致、用软件模拟I2C 接口的操作方式极为便利、显示可以多样化。在智能送餐小车的显示电路设计中,OLED 屏不仅显示餐位号,还显示语音播报的内容。选用4×4矩阵键盘搭配OLED 屏实现餐位号的显示,矩阵键盘可以减小单片机IO 口的使用,有效提高单片机系统中I/O口的利用率,按下按键后单片机对其进行行列扫描,从而确定按键值并显示在OLED 屏中。显示电路原理图如图8 所示。
图8 显示电路原理图
利用USB 雾化器进行消毒,用杜邦线将雾化器正负极与芯片的引脚相连接,便于单片机直接控制开关。小车在顾客取餐后接收指令,启动雾化器喷出消毒液对放餐台进行消毒,延时5s 后关闭雾化器,实现自动消毒功能。USB 雾化器电路原理图如图9所示。
图9 USB 雾化器电路原理图
点餐程序由ESP8266 无线收发模块、矩阵键盘、OLED 屏幕和手机APP 共同完成的。首先通过串口对ESP8266 模块进行使用模式配置,再与单片机的串口引脚相连接,相当于将ESP8266 作为单片机和手机通讯的桥梁,而手机APP 在MIT APP Inventor 中制作,点餐界面如图10 所示。开启送餐模式时,OLED 屏幕上会显示顾客下单的餐位号,在矩阵键盘上按下相应的数字,小车自动执行送餐指令。
图10 手机APP 控制界面
小车使用最新的机器视觉模块Open MV 来做数字自动识别[4],实现了一个完全自动化的识别控制管理。在智能送餐小车的设计中可以根据特定视觉特征的需要,运用Python 设计合理的算法,进而得到稳定可靠的输出,再配合单片机交互,有机统一地完成对应数字和字母的识别,相当于给Open MV 提供机器视觉的功能,指引小车完成送餐任务。
送餐过程中,Open MV是处于数字识别和字母识别的状态中,此时Open MV 进入GRAYSCALE灰度模式,识别地面左右的数字和字母并发送给单片机。当识别出的指定字母时进入转弯程序,之后识别数字。当识别到的数字与指定餐位号相同时,则执行语音播报取餐指令,提醒顾客取餐,否则继续前进。小车送餐流程图如图11 所示。
图11 小车送餐流程图
点餐功能测试主要由测试者连接局域网登录手机APP,然后随机挑选一桌进行点餐。点餐后无线模块能接收到下单信号并反馈,OLED 屏可以正确显示订餐信息以及餐位号,再将餐品放入餐台,随后在矩阵键盘按下对应的数值,小车顺利进入送餐程序。测试过程中监测到局域网络的最大范围是10m,在10m 内顾客连接无线网络成功后可迅速进入手机APP,网络稳定,手机APP 内容清晰明了,OLED 屏显示点餐信息无误,按键功能正常,智能送餐小车的点餐功能符合预期测试结果。
进行测试时,选择位于设计图纸上第二个十字路口左边尽头的D4 号餐桌,并在小车的行进路线上放置障碍物。小车在巡线过程中离障碍物60cm 处原地停止并播报语音提醒,拿走障碍物后小车继续巡线来到第二个十字路口,Open MV 识别D 字母并进行右转弯,直行至餐桌前识别数字,识别成功后播报语音提醒顾客取餐。在顾客取餐后播报“开启消毒模式”的语音,然后开启雾化器,喷出消毒液,5s 后结束消毒模式,小车调头原路巡线返回。测试过程中小车各项指标正常,对指令反应迅速,巡线避障无偏差,符合预期设计要求。记录小车的实际运行状态如表1 所示。
表1 小车实际运行状态
传统的餐饮行业想要在未来的竞争中取得优势,除了要在菜品的质量和口味上下功夫,更重要的要让客人获得舒适的服务体验。为了能够让客人获得用餐时的舒适感,服务人员应该减少一些不必要的工作,多把时间用在回应客人的更多需求中,以提高客人的满意度,增加回头客的数量。本文介绍了一种基于STM32 控制芯片的智能送餐小车的设计,采用ESP8266 模块进行局域通信,实现送餐小车的循迹、避障、语音播报、消毒等功能,减少服务人员简单重复的送餐工作,把精力和时间更多地投入到客户的个人需求中,达到降低餐厅运营成本、提高餐厅整体竞争力的目的。