杨 晨,黎 斌,葛立明
(兰州交通大学 机电工程学院,甘肃 兰州 730070)
随着高等教育的快速推进,高校扩招已成必然,学生食堂所承担的人流量与日俱增,就餐高峰成为了考验一个食堂就餐效率的重要时期。另外,随着社会的发展和科技的进步,师生对就餐环境也提出了更高的要求,希望就餐环境安静整洁,取餐不必一拥而上,取错餐的情况不会发生等[1]。然而据调研表明,学生对于学校的餐饮服务觉得满意的不多,其原因主要来自“食堂服务员叫喊式取菜”导致就餐环境嘈杂,学生取餐秩序混乱,容易产生取错菜,心情焦躁的状况。也正是这些原因,影响了食堂的就餐效率。
近几年随着“智慧校园”概念的提出,越来越多的人意识到了建设“智慧食堂”的重要性。随着技术的发展,将嵌入式技术运用到学校餐厅的设计和应用中[2],打造新型智慧取餐系统,有效解决学生就餐环境拥堵和嘈杂的问题,提高学生就餐效率和用餐质量。基于单片机取餐系统的设计和应用具有重要价值和实际意义。
本文设计了一款基于STM32的高校智能取餐系统。该系统以STM32单片机为核心,采集和处理点餐数据,搭建前台、后厨和顾客之间的无线通信网络,使这三部分有机统一,从而有效提高后厨工作效率、学生就餐效率,有力改善就餐环境。
系统整体设计方案如图1所示。本设计主要由前台设备、后厨设备和用户端组成[3]。
结合图1可知,当客人点餐后,收款机将录入的点餐信息通过串行通信电路发送到STM32F103单片机,而后对数据进行相应的处理,如数据检索、识别等,之后将处理的信息通过串口发送至后厨上位机软件[4]。软件接收到数据后,即可在上位机控制界面上显示顾客的点餐信息,如所点餐谱、点餐顺序等,厨师根据软件提示完成饭菜的制作。烧制完成后,即可将菜名在软件上有选择地发送至无线通信模块。无线模块对接收到的数据进行处理后,把“顾客的取餐信息”以无线通信的方式发送至移动终端,供顾客参考。
图1 系统整体设计方案
该系统硬件由微处理器和各种通信电路组成。
STM32处理器是由意法半导体(ST)公司设计生产,基于Cortex-M3内核开发的新型单片机[5]。该内核是ARM公司设计的新一代内核,具有高性能、低成本、低功耗、调试容易等特点。因此采用STM32处理器作为本设计的控制处理器方案可行。
STM32F103RCT6属于中低端32位ARM微控制器,是一种增强型闪存微处理器,其丰富的片上资源可以大大简化系统硬件,降低设计成本。本设计中的微处理器均采用基于Cortex-M3的 STM32F103RCT6。
顾客在前台点餐后,数据被点餐机录入,并通过RS 232串口传出。由于STM32处理器的串口为全双工工作方式,因此可以把发送与接收独立分开,由PA10引脚负责接收RS 232通过串行通信电路[6]传来的数据,PA9引脚负责发送STM32单片机处理后的数据,可以只使用单片机的串口1完成对数据的接收、处理和再发送,从而大大减小了系统复杂度,以及I/O口资源的利用。RS 232-STM32串行通信电路如图2所示。
图2 RS 232-STM32串行通信电路
由于STM32F103RCT6的接口为I/O口,上位机的接口为USB接口,所以为了解决两者之间的信息传输问题,引入基于CH340设计的USB接口电路[7]。CH340是一款USB总线转接芯片,串口为全双工通信方式,内置收发缓冲区,支持波特率50 bps~2 Mbps,并且与计算机端Windows操作系统下的串口应用程序完全兼容。USB接口电路设计如图3所示。
图3 USB接口电路
2.4.1 ATK-ESP8266 WiFi模块
ATK-ESP8266是ALIENTEK生产的一款高性能UARTWiFi(串口-无线)模块。ATK-ESP8266模块与MCU(或者其他串口设备)采用串口(LVTTL)通信,模块内置TCP/IP协议栈,兼容3.3 V和5 V单片机系统,能够轻松实现串口和WiFi之间的转换。若只与传统串口设备相连,则只需简单配置即可通过网络传输自身数据。另外,模块支持串口转WiFi STA、串口转AP和WiFi STA+WiFi AP三种模式,可快速构建数据传输方案,方便设备使用网络传输数据[8]。
2.4.2 电路设计
ATK-ESP8266无线WiFi模块采用串口实现与MCU之间的通信。通过ATK-ESP8266模块,传统的串口设备只需简单的串口配置即可通过网络(WiFi)传输自身数据。即STM32单片机通过串口与ATK-ESP8266通信时,只需对串口进行必要的配置即可实现STM32与外接设备(手机)之间的WiFi数据传输[9]。STM32-WiFi电路设计原理如图4所示。
图4 STM32-WiFi串行通信电路
系统软件设计可分为前台设备微控制器的程序设计、上位机软件设计、后厨设备微控制器程序设计以及用户端APP设计。
前台设备微控制器的程序设计主要包括数据接收、数据处理和数据发送三部分,其程序流程如图5所示。STM32单片机的串口1接收点餐机发来的顾客点餐信息。数据处理和发送部分负责将接收的数据进行循环检索,翻译检测到的相关信息,并从串口1输出。
设备开始运行后,当串口1检测到有数据传来时,会进入中断接收模式,当检测到帧尾[10](数据0xfe 0x4a),USART_RX_STA置1,说明接收完成,帧尾前的数据全部存入USART_Rx_BUF[i]数组。之后在主函数中,程序自动提取相关信息并输出。
上位机软件位于后厨PC机,基于Visual Basic6.0开发[11],其界面布置如图6所示。控制界面的右侧用于显示时间和设置相关参数,如串口、波特率等;左侧的文本框用于显示由前台设备传来的顾客点餐内容以及点餐号。后厨师傅在接收到信息后,以此为根据准备相关菜肴,完成制作后在左侧文本框中选中完成的菜名,点击“请选择已完成的菜单”按钮,将其移送到右侧区域,这些为待发送给顾客手机APP的信息,如图7所示。点击“发送至APP”按钮,即可完成对顾客取餐的提示。软件操作流程简单,可以帮助厨师高效快速地完成相关信息管理,从而提高就餐效率。
图5 前台微控制器的程序流程图
图6 上位机软件接收前台数据界面
图7 上位机软件发送数据界面图
基于STM32的后厨微处理器系统的程序设计主要解决两大内容。
(1)对后厨上位机发送来的数据进行解析和存储,即将串口1接收到的数据进行处理;
(2)将经过处理的数据通过串口3发送到WiFi模组,进而通过对WiFi模组的配置,将数据通过无线方式发送到手机APP上显示输出。
在此程序设计中,对于WiFi模块的驱动通过相应的AT指令进行端口配置,使相应的终端设备配置于同一局域网下,从而实现WiFi模块对于数据的收发和共享功能。用AT指令对WiFi模块进行配置[12],部分配置方式如下:
设置WiFi模式为STA模式:AT+CWMODE=1;
建立Server,设置端口号:AT+CIPSERVER=1,8080;
模块向指定通道发送数据:AT+CIPSEND=id,size。
后厨微控制器程序设计流程如图8所示。
图8 后厨微控制器程序流程图
移动终端的设计主要取决于数据传输方式以及数据类型。在经过实际调研分析后,移动终端采用Android系统进行相关设计[13],既符合当下的时代潮流,也能方便快捷地实现有序取餐等目的。手机在接收到从WiFi模块发来的数据后,由APP对数据进行解析并处理,然后在手机APP界面上显示,即顾客的取餐信息[14]。接收信息界面如图9(a)所示。主要工作流程:启动应用程序后,在APP界面选择TCP Client模式,接着点击“连接后厨”按钮,完成相关参数的配置,APP参数配置界面如图9(b)所示。其目的是让手机和WiFi模块在同一个局域网下,将手机作为客户端去访问WiFi网络(服务器),接收从WiFi模块传输的数据,而这也是多个终端设备实现共享网络实时数据的关键。
系统主要从以下几个方面检测[15]:
(1)前台到后厨设备数据传输是否正常;
(2)后厨到手机APP数据传输是否正常;
(3)后厨到手机APP数据传输实时性测试。
通过前台点餐机输入点餐信息,处理后发送到上位机软件,作为待处理菜单。后厨做好餐品后,通过上位机软件,系统处理后经WiFi发送到手机APP。实验过程参考图6、图7、图9。系统实验结果见表1所列。
表1 实验结果
图9 APP示意图
本文设计了一种新的基于STM32微处理器的高校智能取餐系统。所设计系统硬件部分主要由微处理器和各种通信电路组成。软件部分主要分为前台微控制器的程序设计、上位机控制界面的设计、后厨微控制器的程序设计和用户端APP的设计。该系统结合嵌入式技术,建立了从点餐到取餐的一体式高校餐饮服务架构。经过对系统的整体测试,证明本系统运行稳定性良好,数据传输无误,无遗漏。APP数据接收延时均在1 s内,实时性能良好,基本达到了预期的设计目标,可有效解决高校食堂点取餐效率低,食堂秩序混乱的问题,打造了一个功能完备的“智慧食堂”服务系统。