张恩迪,余 萌(湖南大学 物理与微电子科学学院,湖南 长沙410082)
人们生活水平的提高推动着餐饮行业的发展,但是很多企业依旧依靠传统的人工服务、核算和查询,对服务员的要求高;单据多、信息量大、出错率高,服务员等候客人点菜耗时多[1],降低了效率。而已有的点餐器采用的是 ARM9或 ZigBee,成本都太高,而WiFi可靠性不强[2-3]。对此本文提出了双触摸屏、无人服务的无线智能点餐系统,通过降低硬件加强软件来减少成本。系统以STM32为硬件基础结合μC/OS-Ⅲ嵌入式实时操作系统[4-5],利用 STR-18模块构成组网[6]与 PC(以 Visual Studio作为开发工具[7]开发的前台软件)进行无线数据交换[8],实现无线点餐。该无线点餐系统融合了无线通信技术、计算机网络和数据库技术,数据无线实时传输、实时处理等。系统硬件配置价格低,减少了人员需求,从而降低了成本,并且提高了工作效率和服务质量,优化了业务流程。
系统主要由一台PC主机和多个从机(点餐终端系统)组成,以一个从机为例,其系统框图如图1所示。从机上连接2个显示菜单信息的TFTLCD触摸屏,当在一个屏上点菜时,另一个屏上会实时显示点菜的信息。屏上有呼叫人工服务按钮,便于文明呼叫人工服务。当点菜完毕,选择“完成”即可将菜单发送到主机上。主机上有由Visual C#编写的上位机软件,主机和从机通过无线数传模块进行数据传输,主机连接打印机将菜单信息打印出来,用于厨师做菜和结账。当餐厅需要修改菜单时,通过主机将新菜单通过串口发送给从机进行修改。
图1 系统框图
下位机主控芯片选用STM32f103VBT6,它是意法半导体公司增强型的32位微控制器,采用先进的ARM Cortex-M3内核,拥有72 MHz的时钟频率、128 KB的Flash、20 KB的 SRAM;有 2个 SPI总线接口、2个 IIC接口、3个 USART、1个 USB、1个 CAN总线以及 2个 12 bit的ADC转换,80个通用的I/O端口。本设计主芯片上主要连接 2个TFTLCD、EEPROM24C02(用于存储触摸屏的校准值)、LED指示灯和JTAG下载口、串口1(PA9、PA10)用于连接到STR-18无线模块与上位机通信。
TFTLCD采用自带XPT2046控制芯片的四线电阻式触摸屏。XPT2046是一款四导线制触摸屏控制器,内含12位分辨率125 kHz转换速率逐步逼近型A/D转换器;支持从1.5 V~5.25 V的低电压I/O接口,能通过执行2次A/D转换查出被按的屏幕位置。触摸屏共有34个管脚,引脚分布如图 2所示,BD1~DB16为数据位,RST、CS、RS、WR、RD实现复位、片选、指令数据切换、读写等控制功能,MISO、MOSI、CLK、T_PEN、T_CS 用于触摸屏控制。
图2 触摸屏引脚图
两个LCD触摸屏分别与STM32f103VBT6连接。两屏16位的数据位分别与STM32f103VBT6的PD口、PE口相连,其中一个TFT屏的连线如图2所示,另一屏的MISO、MOSI、CLK、T_PEN、T_CS 依 次 对 应 PB0、PB1、PC4、PC5、PB11,BL、CS、RS、WR、RD 依 次 与 STM32F103 VBT6的 PB10、PB6、PB7、PB8和 PB9 相连。
主机和从机通信采用STR-18微功率无线数传模块,它具有功率小、ISM频段工作频率无需申请频点、抗干扰能力强、误码率低、通信协议完善、数据实时同步和传输距离远等优点,支持 1 200 b/s、2 400 b/s、4 800 b/s、9 600 b/s等接口波特率。
在本系统中,使用了2块STR-18无线数传模块,一块通过USB转串口模块与上位机连接(TXD、TXD、GND和VCC4个引脚一一对应即可);另一块与下位机相连时,除VCC和GND是直接连接以外,TXD和 TXD交叉相连。并把设置波特率的焊盘跳线J4~J2接成011态(即9 600 b/s),J1的 E=1(即插上断路器)传输不带奇偶校验的8位数据位。
STR-18无线串口通信有点对点、点对多点和多点对多点三种方式,本设计采用点对多点无线串口通信,如图3所示。
图3 点对多点的无线串口通信
μC/OS-Ⅲ是一个结构简单、功能完备和实时性很强的嵌入式操作系统内核[5],适合于如STM32F103VBT6这种没有MMU的CPU。下位机的点菜界面如图4所示[9],左边是菜单,分页显示,顾客选择一道菜时,通过μC/OS-Ⅲ发送信号量,此时等待该信号量的任务首先完成在本屏上使该道菜变为蓝底白字且显示在右边,并使另一触摸屏完成相同的任务[10],使之显示相同的信息。当选择“上一页”之类非菜单的选项时不会发送该信号量。当“完成点餐”时会弹出“点餐完成”窗口,并等待PC扫描信号后将顾客菜单发送到PC,打印给厨师。
图4 下位机界面
主机的上位机软件由Visual C#编写,系统软件流程图如图5所示。首先从机上电完成初始化,如果要更改菜单,则由上位机通过无线数传模块发送给所有从机,从机遇到串口接收中断,则更新菜单显示;如从机在完成初始化后直接点菜,有顾客在一个触摸屏菜单上点菜,则两触摸屏间进行通信,更新两屏上已点菜品的显示。点菜完成后,将菜品通过无线数传模块发送给主机显示并打印菜单。本设计由于从机较多且用到的是串口通信方式,为防止多个从机有可能在同一时刻发送菜单给主机,采用先给从机编码,主机循环发送从机地址,当从机已经准备好并接收到是本机的地址时,才发送菜单给主机。
图5 系统软件流程图
上位机界面如图6所示,有选择端口和帮助等功能,鼠标点到某个桌号上,会显示此桌最近时间的点餐信息。本文主要采用serialPort控件来接收下位机的数据,其配置应与下位机串口配置保持一致,即BaudRate=9 600;Databits=8;Stopbits=1;Parity 为 NONE,并选择对应的COM口,先定义全局变量public string indata="";主要代码如下:
图6 上位机界面
本文设计的双触摸屏的无线自助点餐系统,相比于之前的点餐器,既方便快捷智能,又减少了服务员,节约了成本。
[1]陈晓峰,林正浩.基于 Android的无线点餐系统设计[J].上海师范大学学报(自然科学版),2012,41(4):369-373.
[2]李泉溪,吴硕.ZigBee无线点餐系统研究[J].河南科技大学学报(自然科学版),2011,32(5):28-32.
[3]杨保亮,王庆阁.触摸式无线点餐终端系统的设计[J].重庆文理学院学报(自然科学版),2012,31(1):76-79.
[4]李正民,姬晓阳,陈京育.嵌入式实时操作系统在测控系统中的应用研究[J].计算机与现代化,2010(6):153-155.
[5]党宏社,姚勇,张新院.一种用于触摸屏的多级菜单界面实现方法[J].计算机应用与软件,2013,301(10):159-161.
[6]邱红兵,邱晓燕.基于 WinCE的点餐系统设计[J].数字技术与应用,2011(8):127-130.
[7]孙凯明,石磊,甄海涛,等.基于 Cortex-M3处理器和CC2430的无线网关设计[J].自动化技术与应用,2011,30(8):34-35.
[8]丁顺莺.RFlD触控屏幕点餐系统[J].计算机时代,2013(3):21-22,25.
[9]宋亮,苗琼.嵌入式实时操作系统μC/OS-II串口通信的设计与实现[J].电子设计工程,2011,19(1):42-45.
[10]LABROSSE J.嵌入式实时操作系统 μC/OS-Ⅲ[M].宫辉,曾鸣,龚光华,等,译.北京:北京航空航天大学出版社,2012.