人们生活水平的提高推动着餐饮行业的发展,但是很多企业依旧依靠传统的人工服务、核算和查询,对服务员的要求高;单据多、信息量大、出错率高,服务员等候客人点菜耗时多[1],降低了效率。而已有的点餐器采用的是ARM9或ZigBee,成本都太高,而WiFi可靠性不强[2-3]。对此本文提出了双触摸屏、无人服务的无线智能点餐系统,通过降低硬件加强软件来减少成本。系统以STM32为硬件基础结合滋C/OS-Ⅲ嵌入式实时操作系统[4-5],利用STR-18模块构成组网[6]与PC(以VisualStudio作为开发工具[7]开发的前台软件)进行无线数据交换[8],实现无线点餐。该无线点餐系统融合了无线通信技术、计算机网络和数据库技术,数据无线实时传输、实时处理等。系统硬件配置价格低,减少了人员需求,从而降低了成本,并且提高了工作效率和服务质量,优化了业务流程。
1系统总体架构
系统主要由一台PC主机和多个从机(点餐终端系统)组成,以一个从机为例,其系统框图如图1所示。从机上连接2个显示菜单信息的TFTLCD触摸屏,当在一个屏上点菜时,另一个屏上会实时显示点菜的信息。屏上有呼叫人工服务按钮,便于文明呼叫人工服务。当点菜完毕,选择“完成”即可将菜单发送到主机上。主机上有由VisualC#编写的上位机软件,主机和从机通过无线数传模块进行数据传输,主机连接打印机将菜单信息打印出来,用于厨师做菜和结账。当餐厅需要修改菜单时,通过主机将新菜单通过串口发送给从机进行修改。
2下位机设计
2.1硬件设计
下位机主控芯片选用STM32f103VBT6,它是意法半导体公司增强型的32位微控制器,采用先进的ARMCortex-M3内核,拥有72MHz的时钟频率、128KB的Flash、20KB的SRAM;有2个SPI总线接口、2个IIC接口、3个USART、1个USB、1个CAN总线以及2个12bit的ADC转换,80个通用的I/O端口。本设计主芯片上主要连接2个TFTLCD、EEPROM24C02(用于存储触摸屏的校准值)、LED指示灯和JTAG下载口、串口1(PA9、PA10)用于连接到STR-18无线模块与上位机通信。
TFTLCD采用自带XPT2046控制芯片的四线电阻式触摸屏。XPT2046是一款四导线制触摸屏控制器,内含12位分辨率125kHz转换速率逐步逼近型A/D转换器;支持从1.5V~5.25V的低电压I/O接口,能通过执行2次A/D转换查出被按的屏幕位置。触摸屏共有34个管脚,引脚分布如图2所示,BD1~DB16为数据位,RST、CS、RS、WR、RD实现复位、片选、指令数据切换、读写等控制功能,MISO、MOSI、CLK、T_PEN、T_CS用于触摸屏控制。
两个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依次与STM32F103VBT6的PB10、PB6、PB7、PB8和PB9相连。
2.2无线数传模块在本系统中的实现
主机和从机通信采用STR-18微功率无线数传模块,它具有功率小、ISM频段工作频率无需申请频点、抗干扰能力强、误码率低、通信协议完善、数据实时同步和传输距离远等优点,支持1200b/s、2400b/s、4800b/s、9600b/s等接口波特率。
在本系统中,使用了2块STR-18无线数传模块,一块通过USB转串口模块与上位机连接(TXD、TXD、GND和VCC4个引脚一一对应即可);另一块与下位机相连时,除VCC和GND是直接连接以外,TXD和TXD交叉相连。并把设置波特率的焊盘跳线J4~J2接成011态(即9600b/s),J1的E=1(即插上断路器)传输不带奇偶校验的8位数据位。
STR-18无线串口通信有点对点、点对多点和多点对多点三种方式,本设计采用点对多点无线串口通信,如图3所示。
2.3μC/OS-Ⅲ操作系统在本系统中的应用
μC/OS-Ⅲ是一个结构简单、功能完备和实时性很强的嵌入式操作系统内核[5],适合于如STM32F103VBT6这种没有MMU的CPU。下位机的点菜界面如图4所示[9],左边是菜单,分页显示,顾客选择一道菜时,通过μC/OS-Ⅲ发送信号量,此时等待该信号量的任务首先完成在本屏上使该道菜变为蓝底白字且显示在右边,并使另一触摸屏完成相同的任务[10],使之显示相同的信息。当选择“上一页”之类非菜单的选项时不会发送该信号量。当“完成点餐”时会弹出“点餐完成”窗口,并等待PC扫描信号后将顾客菜单发送到PC,打印给厨师。
3系统软件设计
主机的上位机软件由VisualC#编写,系统软件流程图如图5所示。首先从机上电完成初始化,如果要更改菜单,则由上位机通过无线数传模块发送给所有从机,从机遇到串口接收中断,则更新菜单显示;如从机在完成初始化后直接点菜,有顾客在一个触摸屏菜单上点菜,则两触摸屏间进行通信,更新两屏上已点菜品的显示。点菜完成后,将菜品通过无线数传模块发送给主机显示并打印菜单。本设计由于从机较多且用到的是串口通信方式,为防止多个从机有可能在同一时刻发送菜单给主机,采用先给从机编码,主机循环发送从机地址,当从机已经准备好并接收到是本机的地址时,才发送菜单给主机。
privatevoidserialPort1_DataReceived_1(objectsender,
System.IO.Ports.SerialDataReceivedEventArgse)
{indata="";indata=this.serialPort1.ReadExisting();}
本文设计的双触摸屏的无线自助点餐系统,相比于之前的点餐器,既方便快捷智能,又减少了服务员,节约了成本。
参考文献
[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]LABROSSEJ.嵌入式实时操作系统μC/OS-Ⅲ[M].宫辉,曾鸣,龚光华,等,译.北京:北京航空航天大学出版社,2012.