APP下载

Cortex-A8和ZigBee构成的智能餐厅系统*

2015-07-01王灵芝吴辉煌吴一纯

单片机与嵌入式系统应用 2015年3期
关键词:点菜数据表菜品

王灵芝,吴辉煌,吴一纯

(1. 闽南师范大学 物理与信息工程学院,漳州 363000;2. 厦门大学)

王灵芝1,吴辉煌1,吴一纯2

(1. 闽南师范大学 物理与信息工程学院,漳州 363000;2. 厦门大学)

本文提出一种基于Cortex-A8和ZigBee的智能餐厅系统设计方案,构建了无人餐厅模型,系统通过ZigBee无线网络连接自助点菜终端、PC主机端、网关端、厨房端、送餐车、清洁车等模块,最终实现了通过Web服务器、CGI接口、云计算平台等方式提供远程订餐服务。经测试,本方案可实现包括自助点菜、送餐、清洁、结算、网页微信订餐等功能。

物联网;Cortex-A8;ZigBee;智能餐厅

引 言

近年来,随着嵌入式技术的迅速发展和开发成本的降低,基于掌上电脑的无线点菜系统正在逐渐替代原有的人工点菜方式[2]。以嵌入式系统为核心的无线点菜系统以快捷、高效、稳定等优点已迅速在中高端餐饮企业使用。

目前,已有的手持式点菜机多为服务员操作,其无线通信采用多信道跳频通信技术。随着人力成本的提高及客户体验度要求不断提升,人们希望在更为宽松与私密的空间中就餐,无人餐厅系统应运而生。本设计选择Cortex-A8平台结合ZigBee组网技术实现自助点菜系统,除具有一般点菜机的基本功能(如自动送餐、清洁、结算等)外,还可通过WiFi模块及云平台实现手机、网页及微信订餐业务。

无人餐厅系统实现了顾客与餐厅的互动,为顾客提供了各种菜品和服务信息;同时,餐厅通过后台数据库可以便捷地收集顾客的意见和建议,从而不断改善服务质量,为最终实现顾客和餐厅的双赢创造条件。利用ZigBee的网络拓扑,还可以实现对餐厅家电的控制,实现餐厅无线物联化。

1 系统构成

根据系统需求分析,本系统包括:自助点菜终端、PC主机端、网关端、厨房端、载物车、清洁车以及ZigBee无线通信系统。其中自助点菜终端、网关端和厨房端由Cortex-A8 DM3730与ZigBee模块构成,ZigBee无线通信是由CC2530组成的星形网络,作为核心模块的PC主机端利用ZigBee协调器实现与各节点模块的通信。通过QT应用程序编写人机交互界面,SQLite 作为嵌入式数据库,实现对无线传感网络的控制、管理、存储及查询。智能无人餐厅系统框图如图1所示。

图1 智能无人餐厅系统框图

各模块简要功能如下:

① PC主机端:实时显示餐厅信息,如菜单管理、预定管理、账单管理、用户管理、系统设置、打印账单和查询点菜信息。

② 手持点菜终端:点菜系统分为无预定点菜和预定点菜,可以查看菜品介绍、发送点菜信息、发送送餐及清洁指令。

③ 厨房端:厨房端能显示总台传来的菜品信息,将完成的菜品信息反馈给PC主机端。

④ 网关端:通过搭建Web服务器及CGI接口,可实现手机和网页订餐。

⑤ 送餐车:基于餐厅坐标,通过Dijkstra算法计算出餐桌间的最短路径[3],沿最短路径送餐,提高送餐效率。

⑥ 清洁车:智能两轮洗地机运用两轮和舵机臂的配合可以进行360°全方位的清洗,可以通过ZigBee发送指令或者使用手动模式进行清理。

⑦ 微信订餐:通过云计算平台、网络服务器及微信公众号可实现微信订餐。

2 硬件平台

本系统嵌入式平台硬件部分的核心采用TI公司Cortex-A8处理器DM3730,该芯片时钟主频可达到1 GHz,包含丰富的功能外设。选择UART3与CC2530连接,通过MAX3386进行电平转换,采用CP2102芯片完成UART转USB,由TFT 7寸触屏实现人机交互。采用DM9000AE网卡芯片实现网络通信,通过RJ45端口与外部网络接口相连。512 MB的MDDR以及512 MB的NAND Flash共同构成外部存储器。

无线通信传感网络各节点采用TI公司的CC2530,该芯片符合2.4 GHz IEEE 802.15.4协议,内部集成高性能RF收发器与8051微处理器。可配备TI专有网络协议栈ZStack,加快开发速度。打印机采用DP-HT201便携式热敏打印机,提供USB接口,安装相应的驱动程序即可通过串口输出打印信息。清洁及送餐车模块略——编者注。

3 软件平台

3.1 ZigBee数据通信协议

在ZigBee网络中使用TI公司的ZStack-CC2530-2.3.1-1.4.0协议,该协议符合ZigBee2007规范,支持多种平台。PC主机端与协调器之间的通信协议格式如下:

帧头消息源源ID消息目的命令命令参数帧尾&&d/p/c/w/x/fXXXd/p/c/w/x/f@XXX#XXXX#$$

协议帧由64 位组成,协议帧帧头标记为“&&”,帧尾标记“$$”,表示一帧的结束。不足64 位,以“$”符号补齐。

协议帧共包括5个数据域,其中消息源及消息目的中的d、p、c、w、x、f分别表示点菜终端、PC主机端、厨房、网关端、小车和温控系统;源ID是用来标记点菜终端的ID号,范围为000~999;命令以“@”标记,根据消息源和消息目的不同,表示不同的含义,例如某数据来自点菜端,接收者为PC主机端,则命令“@1”表示点菜、“@2”表示加菜、“@3”表示结账、“@4”表示送餐;不同的命令将附加不同的命令参数,该数据域以“#”开始,以“#”结束。

如某数据帧为:&&d001p@1#1012#1034#$$…$$$$d001。表示该数据来自点菜终端1号桌;数据接收者为PC主机端;@1表示点菜;#1012表示点菜信息,其中“101”为菜品编号,“2”表示份数;不足64位的部分用“$”补齐。协调器主要完成3个部分的工作:初始化组成星形拓扑;接收PC主机端串口的控制命令,判断并封装成协议包发送给各节点模块;接收来自各节点模块的数据并解析,发送给PC主机端。

3.2 PC主机端软件架构

PC上安装集成开发环境Qt Creator,配置交叉编译工具win32-g++及环境变量。在开发环境下编写人机交互界面,PC主机端QT应用程序流程框图如图2所示,包括餐厅实时信息界面、菜单管理界面、系统设置界面、账单管理界面、预订信息界面、温度控制界面、送餐车控制界面。搭建SQLite数据库,数据库包含6张数据表:

① 菜单信息数据表:保存菜品的ID、价格、描述、图片等信息。

② 预订信息数据表:通过MySQL定时读取网络数据库中的手机、网页、微信订餐等信息,并将预订信息更新到本地数据库。

③ 餐厅座位信息数据表:保存开台及订桌信息,通过主界面实时显示。

④ 实时账单数据表:保存当日账单,提供查询、修改、打印等功能。

⑤ 总账单数据表:保存总账单,提供查询、修改、打印等功能。

⑥ 特色菜数据表:根据菜品的销售情况排序,为微信客户提供特色菜目录。

图2 PC主机端QT应用程序流程框图

PC主机端通过串口实时接收来自ZigBee协调器上各节点模块的信息并更新数据库,然后将处理后的数据通过协调器发送给各节点模块。图3为送餐车Dijkstra算法实现界面。基于餐厅坐标,通过Dijkstra算法计算出餐桌间的最短路径,实时接收来自于送餐车的位置信息,当小车处于空闲或者到达某一目的地时,根据最短路径指定下一目的地。目前只考虑环形结构,即所有的节点分布在环形的循线上,可根据最短路径决定向前或向后循迹。

图3 送餐车Dijkstra算法实现界面

3.3 点菜终端与厨房端

点菜终端与厨房端模块软件架构基于嵌入式Linux系统。嵌入式环境的构建包含交叉编译环境的建立,U-Boot-1.1.6的移植、嵌入式Linux3.0.1内核的配置和移植,基于Busybox及Qt4.7.1的YAFFS2根文件系统的构建。对于内核的移植主要包括添加串口驱动、触摸屏及LCD驱动,以及网卡芯片、WiFi模块驱动等。

点菜终端界面可选择预定点餐和无预定点餐,进入点菜界面可以点餐、发送菜单信息、查看消费信息等功能。厨房端根据主机发送过来的菜单信息完成相应菜品准备,当完成相应菜单将信息返回给主机,继续下一餐单的准备。以下程序段为发送菜单的槽函数:

void ordersend::on_pushButton_4_clicked(){

//菜单发送槽函数

QSettings *sysset = new QSettings("/usr/qte/config/myorder.ini", QSettings::IniFormat);

//读取ini配置文件

QString set;

QString senddata;

QString temp;

set=sysset->value("ORDER/tbnum").toString();

//读取点菜终端的桌号

senddata.append("&&d");

senddata.append(set);

senddata.append("@1");

QSqlQuery query;

query.exec("select *from wei_send");

//查询数据库

while(query.next()){

//下一条数据

senddata.append("#");

senddata.append(query.value(0).toString());

//发送菜品编号

senddata.append(query.value(3).toString());

//发送菜品数量

}

senddata.append("#$$"); //添加#$$

int i=senddata.length();

temp.fill('$',64-i); //用$填满64位数据

senddata.append(temp);

emit sendmsg(senddata);

//触发信号,调用相应槽函数发送协议帧

}

3.4 网关及微信点菜

3.4.1 CGI接口HTML页面设计

在网关端搭建BOA Web服务器,BOA服务器是一个高效小巧的Web服务器,可运行于Linux操作系统之下,支持CGI接口编程,且源代码开放,性能高。利用CGI编程可实现与HTML网页的交互[4],用户通过网页或手机端APP进行订桌并可预定菜品。

系统通过浏览器输入BOA 服务器的IP地址即可发送HTTP请求,服务器响应请求后返回HTML登陆界面,并提交表单。CGI通过“Get”方式获取表单提取的内容,若登陆成功则返回订桌及预定菜品界面。订桌及预定菜品HTML网页如图4所示。

图4 订桌及预定菜品HTML网页

同理,在点击界面中的按钮时,触发服务器调用相应的CGI脚本,在脚本中将根据HTTP请求向串口发送命令或查询数据库内容更新HTML页面。

3.4.2 微信订餐

通过申请微信公众号及新浪云计算APP服务,即可成为微信开发者,可使用微信公众平台接口及云计算平台进行开发。普通用户能与公众账号交互6种格式的消息:文本(包括表情)、语音、图片、视频、位置、链接。该公众账号可提供特色菜推荐、订桌、获取验证码等服务。

微信通信接口示意图如图5所示,手机向微信公众号发送如“特色菜”指令后,微信服务器将以固定的xml格式封装发送给云平台,云平台解析后访问相应的网络数据库,查询菜品并以固定的规则组装,回复给公众账号,公众账号再推送给用户。在这个收发过程中,发送方和接收方进行了调换(ToUserName和FromUserName值互换),收发都是以xml格式在后台进行传输的。云计算平台端采用PHP(超文本预处理器)编程。

图5 微信通信接口示意图

相应PHP的关键代码如下:

public function responseMsg(){

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

if (!empty($postStr)){

$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);

//获取微信传来的信息,赋值给结构体

$MsgType = trim($postObj->MsgType);

//获取消息类型

$keyword = trim($postObj->Content); //获取消息内容

......

if($keyword == "特" || $keyword == "特色" || $keyword {== "特色菜"){

//判断输入的内容

$msgType = "text";

$link=mysql_connect("103.1.90.135","sq8china","cestel99") or die("connection error".mysql_error());

//连接网络数据库、输入IP、账号、密码等

$flag=mysql_select_db("sq8china",$link); //打开数据库

$result = mysql_query("SELECT * FROM menu");

//查询数据库中menu的数据表

$respon = "您好,我们的特色菜有: ";

while($row = mysql_fetch_array($result)) {$respon = $respon . " " . $row['state'];

}

}

结 语

本文设计了一种基于物联网的嵌入式智能餐厅系统,系统分为自助点菜终端、PC主机端、网关端、厨房端、载物车、清洁车以及ZigBee无线通信模块。各模块之间通过PC主机端及ZigBee网络进行通信,可实现包括自助点菜、送餐、清洁、结算等功能,还可通过WiFi模块及云平台实现手机、网页及微信订餐业务。经测试,本方案切实可行,能实现各种预设功能。

[1] 王琳,余震虹,李鑫,等.基于ARM的嵌入式点菜系统的设计[J].ARM开发与应用, 2009,2(2):105-107.

[2] 何伟,游婧,张玲.基于Nios II自助点菜系统的μC/GUI应用[J].电子技术应用, 2011(9):35-38.

[3] 王昆仑,李红.数据结构与算法[M].北京:中国铁道出版社,2006: 294-296.

[4] 王灵芝,叶美霞,张建造.基于Zigbee及BOA服务器的嵌入式智能家居的设计[J].闽南师范大学学报,2014(3).

[5] 赵鹤芹.设计动态网站的最佳方案:Apache+PHP+MySQL[J].计算机工程与设计,2007(4):933-934,938.

Wang Lingzhi1,Wu Huihuang1,Wu Yichun2

(1.Department of Physics and Electronic Information Engineering,Minnan Normal University,Zhangzhou 363000,China;2.Xiamen University)

The paper proposes an intelligent restaurant system based on Cortex-A8 and ZigBee,and constructs the model of an unmanned restaurant.In the system,the hand-held order terminals,PC host,gateway terminal,kitchen terminal,delivery car,rubbish car,and the other modules are connected through ZigBee.Finally the system can supply remote ordering service with the methods of Web server,CGI interface,cloud computing and etc.According to the test,the system has many functions such as self-help order,delivery,cleaning,billing,web and wechat ordering services.

Internet of Things;Cortex-A8;ZigBee;intelligent restaurant

闽南师范大学杰出青年基金(SJ1113);福建省自然科学基金资助项目(2013J05014)。

TN92

A

�士然

2014-09-30)

猜你喜欢

点菜数据表菜品
点菜
团膳菜品质量管理存在的问题及完善策略
会点菜的人,混得不会太差
迷惑菜品又来了
湖北省新冠肺炎疫情数据表(2.26-3.25)
湖北省新冠肺炎疫情数据表
基于列控工程数据表建立线路拓扑关系的研究
假蒟叶系列菜品的开发利用现状
疯狂编辑部之点菜风波
说话之道