0.设计摘要
当今社会是信息爆炸的时代,但在绝大多数餐饮行业企业中,通常都还在使用传统的点菜方式,即客人走进餐厅或者酒吧等场所,服务员就拿着菜单迎上来询问客人要求客人点菜。这种传统的点菜方式给顾客带来了很多的不便,并且需要数量众多的服务员,更给企业的发展带来了很大的障碍。智能化设备的引进将有效的减少员工数量并提高员工工作效率,从而在减少企业人力成本的同时提升服务质量,为企业的发展提供强劲的竞争力。
目前餐饮业中顾客对于餐厅的投诉或不满,大部分是由于上菜速度太慢或服务人员对于顾客的要求反应不及时。只有操作简便、服务及时的点菜方式,才能让顾客满意,否则即使菜肴、饮品质量再好,也会使餐厅服务大打折扣。
本设计目的是为餐饮服务业提供一款基于PIC32的自助点菜系统——一种不需要服务员的点菜系统;除此之外,本系统还为顾客提供催菜、缓菜、查看账单和呼叫服务员等服务。该点菜系统一方面能减轻服务员的任务,减少服务员的人数,为商家降低人力成本;另一方面也能为顾客提供更全面和及时的服务,提高顾客消费的便利性、舒适性。
1.系统原理
本系统整合PIC和ZigBee无线通信技术,实现功能齐全方便易用的自助点菜系统。整个系统包括安装在客人餐桌上的终端和餐厅前台的上位机,其中终端主要是由PIC单片机和ZigBee的收发模块组成,而上位机又与其它的ZigBee的收发模块相连接,基本的系统结构框图如图1所示。客人可以使用安装在餐桌上的终端,通过按键等输入设备完成点菜、缓菜、查看账单和呼叫服务员等服务。客人确认所点的菜肴的时候按下确认键,这时候终端系统就会将客人的菜单通过ZigBee无线系统发送到收发模块,收发模块再将客人所点的菜单通过串口发送到厨房和前台的上位机。
本系统所使用的Digilent Cerebot™ 32MX4开发板是一个功能强大的微控制器开发板,可以连接点菜系统中需要用到外围Digilent Pmod模块。本课题采用的是TI公司的嵌入式射频芯片CC2430构建无线局域网络,实现点菜终端和上位机的通信。通常,可以把安装在终端上的无线收发器称之为子节点,与上位机相连的收发器叫做中心节点。
图1 点菜系统结构框图
1.1 ZigBee技术
ZigBee技术在近年来得到了快速的发展。zigBee工作于868MHz、915MHz、2.4GHz这三个频段,传输速率20-250kbps,传输距离为10-100m。由于其低速率、低功耗、低成本、近距离的特点,使得ZigBee技术可以很好的用于本课题设计的无线点菜系统。
ZigBee协议栈符合OSI体系结构,共分4层。下面两层,物理层PHY和媒介访问控制层MAC是由IEEE802.15.4标准定义的。ZigBee规范在此基础之上构建了网络层NWK、应用层APL以及安全服务SSP。ZigBee规范根据设备所处的角色定义了三种逻辑设备类型:ZigBee协调器(ZigBee Coordinator)、ZigBee路由器(ZigBee Router)和ZigBee终端设备(ZigBee End Device)。
1.2终端点菜流程
终端软件的点菜流程如图2所示。上电初始化后,终端上的LCD进入点菜界面,顾客可以根据菜品分类(特色菜品、冷菜类、热炒类、汤羹类、特色小吃、饮料等)浏览菜单,也可以浏览当天的推荐菜品,菜单上显示菜品的价格和文字介绍等信息。同时,获知已点菜品的状态(未制作、烹制中、等待上菜、已经上菜),还可随时查看自己的账单明细。而饭店可根据当日实际情况更改菜品的状态(可点或不可点)和价格。
此外,在整个用餐过程中,可随时催菜、缓菜、退菜、加菜等操作,并查看菜的制作状态和账单明细,其中顾客的所有操作都是通过安装在终端上的按键来完成。最后,通过前台打印账单进行结账服务。整个过程方便快捷、操作简单。
图2 终端点菜流程图
1.3无线点菜终端
终端设计中充分利用了PIC的片内资源,程序可以存储在片内的Flash中,并且片内RAM可以用来存储数据,这样就大大简化了系统设计难度,节约了成本。更重要的是,在PIC周围可以方便的连接上设计所需的外围器件,主要有以下几个部分:
1) UART接口用于与移植到CC2430的ZigBee通信模块进行连接;
2) 16x2字符LCD模块作为终端的输出设备,输入外设为一个2x2的按键开关,这些为用户提供便捷的人机交互界面、良好的操作环境,利于调试;
3) SD卡模块可与PIC32的SPI接口或者GPIO相连接,它用来存储大容量的餐厅的菜品信息和顾客的点菜信息;
4) 外接专用的调试电路,可以通过USB接口方便的下载程序和片上调试;
5) PIC32内建USB 2.0 On-The-Go物理层,可以直接与USB Host和USB OTG接口相连,这两个接口可以用作将来的外设扩展。
其中LCD模块采用使用一个Samsung KS0066 CD控制器的Sunlike LCD板, 而无线通信模块则是基于CC2430搭建的ZigBee局域网络,这些模块正好利用Cerebot 32MX4开发板的PMOD扩展接口进行搭建,做到了资源的充分利用。整个无线点菜终端的硬件结构图如图3所示:
图3 终端硬件结构
1.4前台系统
前台系统由三部分构成:上位机Visual C界面、无线通信中心节点板以及打印机。上位机(PC端)用MFC搭建人机交互界面,用于各个桌号菜单账目统计,并控制打印机打印账单。Visual C通过串口控件与中心节点板连接,保持与多个终端的通信。CC2430中心节点板的串口模块可直接将接收到的数据传到上位机,并将反馈数据传回各个终端。点菜结束后,顾客可从打印机中得到消费账单,快捷方便。
2.技术特点
1)灵活高效的PIC32解决方案
PIC32作为一款高性能32位单片机,它是以MIPS32架构为基础设计的,具有高频、小芯片尺寸和超低功耗的特点。本课题以PIC32MX460为核心部件,完成并实现了ZigBee无线点菜系统的设计,在终端中,采用PIC32来控制发射信号的种类和对信号编码的控制。采用PIC32解决方案,方便灵活的扩展系统,满足复杂的外设要求。
2)最具性价比的ZigBee技术
一般而言,随着通信距离的增大,设备的复杂性、功耗以及系统成本都在增加。相对于现有的各种无线通信技术,ZigBee技术是最低功耗和成本的技术。ZigBee技术也存在着自身的缺点,该技术的数据速率比较低和通信范围较小。但由于本系统所承载数据流量较小,所以ZigBee就非常适合,具有最佳的性价比。
3)Cerebot 32MX4丰富的外设接口
本课题所使用的Digilent Cerebot™ 32MX4开发板是一个功能强大的微控制器开发板,它拥有九个Digilent Pmod™外围模块连接器。本课题需要用到的Digilent Pmod模块有按键开关、字符LCD、以及SD卡插槽,开发板还可以用来连接H-bridge驱动、模数和数模转换器、蜂鸣器、滑动开关、LED指示灯等,其提供了丰富的外设资源。
3.软件流程介绍
3.1无线网络软件设计
系统中通过简单的无线星型网络实现了前台的PC机和PIC32点菜节点的双向通信。无线网络系统初始化时将各节点的通信频率固定在2.48G频点上,通过中心节点轮询各子节点的方式时分复用实现组网及双向通信。
中心节点和子节点的CC2430均通过中断接收串口数据与无线传输的数据。如果PC机通过串口向中心节点发送数据,则中心节点首先解析数据包(33个字节,首字节为地址,其余为数据),并根据地址设置相应的节点标志位。当中心节点对子节点进行询问时首先查询该节点的标志位,若没有数据传输则将发送数据报首位设置为DATA_REQ(0x0F),表明该数据报没有数据内容;若有数据传输则将发送数据报首位设置为DATA_TRANS(0xF0),表明该数据报有数据内容。传输结束后中心节点进入接收状态,接收子节点回传的数据报。接收到的数据报首位为ACK_NO_DATA(0x30)表明数据报中没有数据内容,中心节点不作处理;若数据报首位为ACK_WITH_DATA(0x33),则将子节点号和数据内容通过串口传给PC机,接开始新的询问操作。若中心节点没有收到相应的回传数据报,则中心节点会重复询问子节点,重复询问最高次数为3次。中心节点通过对子节点地址进行计数实现对各个子节点的轮询。
子节点的无线模块一般处于接收状态,当接收到数据报时首先解析数据报的目的地址字节,若目的地址和自身地址不匹配则不作处理;若目的地址和自身地址匹配则对接收到的数据报进行解析,若包头为DATA_TRANS(0xF0)则将数据内容传给终端的PIC32系统,接着查询串口标志位(子节点串口中断接收程序在接受到PIC32发送的数据后设置串口标志位),若有数据发送则将数据报首位置为ACK_WITH_DATA(0x33),并将其和数据内容一起回传给中心节点;若没有数据发送则首位标志置为ACK_NO_DATA(0x30)。
3.2前台人机交互界面设计
点菜系统的前台需要构建操作友好的人机交互界面,考虑到CC2430中心节点板的串口模块可直接将接收到的数据与上位机通信,选用VC搭建该界面。VC提供了MSComm(microsoft communications control)控件,通过串行口进行数据传输和接收,为应用程序提供串行通信功能。MSComm控件通信功能的实现实际上是调用了API函数,而API函数是由Comm.drv解释并传递给设备驱动程序进行的,即MSComm控件的属性提供了通信接口的参数设置,能实现串行通信。
终端与前台通信遵循一定的协议格式,头一个字节是节点号(即就餐桌号),紧接着两个字节是传输命令,最后才是所传输的内容。终端传到前台的命令共有5类:传送菜单(MENU_CMD)、催菜(HUSH_CMD)、加菜(ADD_CMD)、菜单状态(STATE_CMD)和结账(CHECK_CMD);前台传回的命令有两类:操作成功(OK_CMD)和操作失败(NO_CMD)。 |