王靈芝,吳輝煌,吳一純
(1. 閩南師范大學(xué) 物理與信息工程學(xué)院,漳州 363000;2. 廈門大學(xué))
王靈芝1,吳輝煌1,吳一純2
(1. 閩南師范大學(xué) 物理與信息工程學(xué)院,漳州 363000;2. 廈門大學(xué))
本文提出一種基于Cortex-A8和ZigBee的智能餐廳系統(tǒng)設(shè)計方案,構(gòu)建了無人餐廳模型,系統(tǒng)通過ZigBee無線網(wǎng)絡(luò)連接自助點菜終端、PC主機端、網(wǎng)關(guān)端、廚房端、送餐車、清潔車等模塊,最終實現(xiàn)了通過Web服務(wù)器、CGI接口、云計算平臺等方式提供遠程訂餐服務(wù)。經(jīng)測試,本方案可實現(xiàn)包括自助點菜、送餐、清潔、結(jié)算、網(wǎng)頁微信訂餐等功能。
物聯(lián)網(wǎng);Cortex-A8;ZigBee;智能餐廳
近年來,隨著嵌入式技術(shù)的迅速發(fā)展和開發(fā)成本的降低,基于掌上電腦的無線點菜系統(tǒng)正在逐漸替代原有的人工點菜方式[2]。以嵌入式系統(tǒng)為核心的無線點菜系統(tǒng)以快捷、高效、穩(wěn)定等優(yōu)點已迅速在中高端餐飲企業(yè)使用。
目前,已有的手持式點菜機多為服務(wù)員操作,其無線通信采用多信道跳頻通信技術(shù)。隨著人力成本的提高及客戶體驗度要求不斷提升,人們希望在更為寬松與私密的空間中就餐,無人餐廳系統(tǒng)應(yīng)運而生。本設(shè)計選擇Cortex-A8平臺結(jié)合ZigBee組網(wǎng)技術(shù)實現(xiàn)自助點菜系統(tǒng),除具有一般點菜機的基本功能(如自動送餐、清潔、結(jié)算等)外,還可通過WiFi模塊及云平臺實現(xiàn)手機、網(wǎng)頁及微信訂餐業(yè)務(wù)。
無人餐廳系統(tǒng)實現(xiàn)了顧客與餐廳的互動,為顧客提供了各種菜品和服務(wù)信息;同時,餐廳通過后臺數(shù)據(jù)庫可以便捷地收集顧客的意見和建議,從而不斷改善服務(wù)質(zhì)量,為最終實現(xiàn)顧客和餐廳的雙贏創(chuàng)造條件。利用ZigBee的網(wǎng)絡(luò)拓撲,還可以實現(xiàn)對餐廳家電的控制,實現(xiàn)餐廳無線物聯(lián)化。
根據(jù)系統(tǒng)需求分析,本系統(tǒng)包括:自助點菜終端、PC主機端、網(wǎng)關(guān)端、廚房端、載物車、清潔車以及ZigBee無線通信系統(tǒng)。其中自助點菜終端、網(wǎng)關(guān)端和廚房端由Cortex-A8 DM3730與ZigBee模塊構(gòu)成,ZigBee無線通信是由CC2530組成的星形網(wǎng)絡(luò),作為核心模塊的PC主機端利用ZigBee協(xié)調(diào)器實現(xiàn)與各節(jié)點模塊的通信。通過QT應(yīng)用程序編寫人機交互界面,SQLite 作為嵌入式數(shù)據(jù)庫,實現(xiàn)對無線傳感網(wǎng)絡(luò)的控制、管理、存儲及查詢。智能無人餐廳系統(tǒng)框圖如圖1所示。
圖1 智能無人餐廳系統(tǒng)框圖
各模塊簡要功能如下:
① PC主機端:實時顯示餐廳信息,如菜單管理、預(yù)定管理、賬單管理、用戶管理、系統(tǒng)設(shè)置、打印賬單和查詢點菜信息。
② 手持點菜終端:點菜系統(tǒng)分為無預(yù)定點菜和預(yù)定點菜,可以查看菜品介紹、發(fā)送點菜信息、發(fā)送送餐及清潔指令。
③ 廚房端:廚房端能顯示總臺傳來的菜品信息,將完成的菜品信息反饋給PC主機端。
④ 網(wǎng)關(guān)端:通過搭建Web服務(wù)器及CGI接口,可實現(xiàn)手機和網(wǎng)頁訂餐。
⑤ 送餐車:基于餐廳坐標(biāo),通過Dijkstra算法計算出餐桌間的最短路徑[3],沿最短路徑送餐,提高送餐效率。
⑥ 清潔車:智能兩輪洗地機運用兩輪和舵機臂的配合可以進行360°全方位的清洗,可以通過ZigBee發(fā)送指令或者使用手動模式進行清理。
⑦ 微信訂餐:通過云計算平臺、網(wǎng)絡(luò)服務(wù)器及微信公眾號可實現(xiàn)微信訂餐。
本系統(tǒng)嵌入式平臺硬件部分的核心采用TI公司Cortex-A8處理器DM3730,該芯片時鐘主頻可達到1 GHz,包含豐富的功能外設(shè)。選擇UART3與CC2530連接,通過MAX3386進行電平轉(zhuǎn)換,采用CP2102芯片完成UART轉(zhuǎn)USB,由TFT 7寸觸屏實現(xiàn)人機交互。采用DM9000AE網(wǎng)卡芯片實現(xiàn)網(wǎng)絡(luò)通信,通過RJ45端口與外部網(wǎng)絡(luò)接口相連。512 MB的MDDR以及512 MB的NAND Flash共同構(gòu)成外部存儲器。
無線通信傳感網(wǎng)絡(luò)各節(jié)點采用TI公司的CC2530,該芯片符合2.4 GHz IEEE 802.15.4協(xié)議,內(nèi)部集成高性能RF收發(fā)器與8051微處理器。可配備TI專有網(wǎng)絡(luò)協(xié)議棧ZStack,加快開發(fā)速度。打印機采用DP-HT201便攜式熱敏打印機,提供USB接口,安裝相應(yīng)的驅(qū)動程序即可通過串口輸出打印信息。清潔及送餐車模塊略——編者注。
3.1 ZigBee數(shù)據(jù)通信協(xié)議
在ZigBee網(wǎng)絡(luò)中使用TI公司的ZStack-CC2530-2.3.1-1.4.0協(xié)議,該協(xié)議符合ZigBee2007規(guī)范,支持多種平臺。PC主機端與協(xié)調(diào)器之間的通信協(xié)議格式如下:
幀頭消息源源ID消息目的命令命令參數(shù)幀尾&&d/p/c/w/x/fXXXd/p/c/w/x/f@XXX#XXXX#$$
協(xié)議幀由64 位組成,協(xié)議幀幀頭標(biāo)記為“&&”,幀尾標(biāo)記“$$”,表示一幀的結(jié)束。不足64 位,以“$”符號補齊。
協(xié)議幀共包括5個數(shù)據(jù)域,其中消息源及消息目的中的d、p、c、w、x、f分別表示點菜終端、PC主機端、廚房、網(wǎng)關(guān)端、小車和溫控系統(tǒng);源ID是用來標(biāo)記點菜終端的ID號,范圍為000~999;命令以“@”標(biāo)記,根據(jù)消息源和消息目的不同,表示不同的含義,例如某數(shù)據(jù)來自點菜端,接收者為PC主機端,則命令“@1”表示點菜、“@2”表示加菜、“@3”表示結(jié)賬、“@4”表示送餐;不同的命令將附加不同的命令參數(shù),該數(shù)據(jù)域以“#”開始,以“#”結(jié)束。
如某數(shù)據(jù)幀為:&&d001p@1#1012#1034#$$…$$$$d001。表示該數(shù)據(jù)來自點菜終端1號桌;數(shù)據(jù)接收者為PC主機端;@1表示點菜;#1012表示點菜信息,其中“101”為菜品編號,“2”表示份數(shù);不足64位的部分用“$”補齊。協(xié)調(diào)器主要完成3個部分的工作:初始化組成星形拓撲;接收PC主機端串口的控制命令,判斷并封裝成協(xié)議包發(fā)送給各節(jié)點模塊;接收來自各節(jié)點模塊的數(shù)據(jù)并解析,發(fā)送給PC主機端。
3.2 PC主機端軟件架構(gòu)
PC上安裝集成開發(fā)環(huán)境Qt Creator,配置交叉編譯工具win32-g++及環(huán)境變量。在開發(fā)環(huán)境下編寫人機交互界面,PC主機端QT應(yīng)用程序流程框圖如圖2所示,包括餐廳實時信息界面、菜單管理界面、系統(tǒng)設(shè)置界面、賬單管理界面、預(yù)訂信息界面、溫度控制界面、送餐車控制界面。搭建SQLite數(shù)據(jù)庫,數(shù)據(jù)庫包含6張數(shù)據(jù)表:
① 菜單信息數(shù)據(jù)表:保存菜品的ID、價格、描述、圖片等信息。
② 預(yù)訂信息數(shù)據(jù)表:通過MySQL定時讀取網(wǎng)絡(luò)數(shù)據(jù)庫中的手機、網(wǎng)頁、微信訂餐等信息,并將預(yù)訂信息更新到本地數(shù)據(jù)庫。
③ 餐廳座位信息數(shù)據(jù)表:保存開臺及訂桌信息,通過主界面實時顯示。
④ 實時賬單數(shù)據(jù)表:保存當(dāng)日賬單,提供查詢、修改、打印等功能。
⑤ 總賬單數(shù)據(jù)表:保存總賬單,提供查詢、修改、打印等功能。
⑥ 特色菜數(shù)據(jù)表:根據(jù)菜品的銷售情況排序,為微信客戶提供特色菜目錄。
圖2 PC主機端QT應(yīng)用程序流程框圖
PC主機端通過串口實時接收來自ZigBee協(xié)調(diào)器上各節(jié)點模塊的信息并更新數(shù)據(jù)庫,然后將處理后的數(shù)據(jù)通過協(xié)調(diào)器發(fā)送給各節(jié)點模塊。圖3為送餐車Dijkstra算法實現(xiàn)界面?;诓蛷d坐標(biāo),通過Dijkstra算法計算出餐桌間的最短路徑,實時接收來自于送餐車的位置信息,當(dāng)小車處于空閑或者到達某一目的地時,根據(jù)最短路徑指定下一目的地。目前只考慮環(huán)形結(jié)構(gòu),即所有的節(jié)點分布在環(huán)形的循線上,可根據(jù)最短路徑?jīng)Q定向前或向后循跡。
圖3 送餐車Dijkstra算法實現(xiàn)界面
3.3 點菜終端與廚房端
點菜終端與廚房端模塊軟件架構(gòu)基于嵌入式Linux系統(tǒng)。嵌入式環(huán)境的構(gòu)建包含交叉編譯環(huán)境的建立,U-Boot-1.1.6的移植、嵌入式Linux3.0.1內(nèi)核的配置和移植,基于Busybox及Qt4.7.1的YAFFS2根文件系統(tǒng)的構(gòu)建。對于內(nèi)核的移植主要包括添加串口驅(qū)動、觸摸屏及LCD驅(qū)動,以及網(wǎng)卡芯片、WiFi模塊驅(qū)動等。
點菜終端界面可選擇預(yù)定點餐和無預(yù)定點餐,進入點菜界面可以點餐、發(fā)送菜單信息、查看消費信息等功能。廚房端根據(jù)主機發(fā)送過來的菜單信息完成相應(yīng)菜品準(zhǔn)備,當(dāng)完成相應(yīng)菜單將信息返回給主機,繼續(xù)下一餐單的準(zhǔn)備。以下程序段為發(fā)送菜單的槽函數(shù):
void ordersend::on_pushButton_4_clicked(){
//菜單發(fā)送槽函數(shù)
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");
//查詢數(shù)據(jù)庫
while(query.next()){
//下一條數(shù)據(jù)
senddata.append("#");
senddata.append(query.value(0).toString());
//發(fā)送菜品編號
senddata.append(query.value(3).toString());
//發(fā)送菜品數(shù)量
}
senddata.append("#$$"); //添加#$$
int i=senddata.length();
temp.fill('$',64-i); //用$填滿64位數(shù)據(jù)
senddata.append(temp);
emit sendmsg(senddata);
//觸發(fā)信號,調(diào)用相應(yīng)槽函數(shù)發(fā)送協(xié)議幀
}
3.4 網(wǎng)關(guān)及微信點菜
3.4.1 CGI接口HTML頁面設(shè)計
在網(wǎng)關(guān)端搭建BOA Web服務(wù)器,BOA服務(wù)器是一個高效小巧的Web服務(wù)器,可運行于Linux操作系統(tǒng)之下,支持CGI接口編程,且源代碼開放,性能高。利用CGI編程可實現(xiàn)與HTML網(wǎng)頁的交互[4],用戶通過網(wǎng)頁或手機端APP進行訂桌并可預(yù)定菜品。
系統(tǒng)通過瀏覽器輸入BOA 服務(wù)器的IP地址即可發(fā)送HTTP請求,服務(wù)器響應(yīng)請求后返回HTML登陸界面,并提交表單。CGI通過“Get”方式獲取表單提取的內(nèi)容,若登陸成功則返回訂桌及預(yù)定菜品界面。訂桌及預(yù)定菜品HTML網(wǎng)頁如圖4所示。
圖4 訂桌及預(yù)定菜品HTML網(wǎng)頁
同理,在點擊界面中的按鈕時,觸發(fā)服務(wù)器調(diào)用相應(yīng)的CGI腳本,在腳本中將根據(jù)HTTP請求向串口發(fā)送命令或查詢數(shù)據(jù)庫內(nèi)容更新HTML頁面。
3.4.2 微信訂餐
通過申請微信公眾號及新浪云計算APP服務(wù),即可成為微信開發(fā)者,可使用微信公眾平臺接口及云計算平臺進行開發(fā)。普通用戶能與公眾賬號交互6種格式的消息:文本(包括表情)、語音、圖片、視頻、位置、鏈接。該公眾賬號可提供特色菜推薦、訂桌、獲取驗證碼等服務(wù)。
微信通信接口示意圖如圖5所示,手機向微信公眾號發(fā)送如“特色菜”指令后,微信服務(wù)器將以固定的xml格式封裝發(fā)送給云平臺,云平臺解析后訪問相應(yīng)的網(wǎng)絡(luò)數(shù)據(jù)庫,查詢菜品并以固定的規(guī)則組裝,回復(fù)給公眾賬號,公眾賬號再推送給用戶。在這個收發(fā)過程中,發(fā)送方和接收方進行了調(diào)換(ToUserName和FromUserName值互換),收發(fā)都是以xml格式在后臺進行傳輸?shù)?。云計算平臺端采用PHP(超文本預(yù)處理器)編程。
圖5 微信通信接口示意圖
相應(yīng)PHP的關(guān)鍵代碼如下:
public function responseMsg(){
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
if (!empty($postStr)){
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
//獲取微信傳來的信息,賦值給結(jié)構(gòu)體
$MsgType = trim($postObj->MsgType);
//獲取消息類型
$keyword = trim($postObj->Content); //獲取消息內(nèi)容
......
if($keyword == "特" || $keyword == "特色" || $keyword {== "特色菜"){
//判斷輸入的內(nèi)容
$msgType = "text";
$link=mysql_connect("103.1.90.135","sq8china","cestel99") or die("connection error".mysql_error());
//連接網(wǎng)絡(luò)數(shù)據(jù)庫、輸入IP、賬號、密碼等
$flag=mysql_select_db("sq8china",$link); //打開數(shù)據(jù)庫
$result = mysql_query("SELECT * FROM menu");
//查詢數(shù)據(jù)庫中menu的數(shù)據(jù)表
$respon = "您好,我們的特色菜有: ";
while($row = mysql_fetch_array($result)) {$respon = $respon . " " . $row['state'];
}
}
本文設(shè)計了一種基于物聯(lián)網(wǎng)的嵌入式智能餐廳系統(tǒng),系統(tǒng)分為自助點菜終端、PC主機端、網(wǎng)關(guān)端、廚房端、載物車、清潔車以及ZigBee無線通信模塊。各模塊之間通過PC主機端及ZigBee網(wǎng)絡(luò)進行通信,可實現(xiàn)包括自助點菜、送餐、清潔、結(jié)算等功能,還可通過WiFi模塊及云平臺實現(xiàn)手機、網(wǎng)頁及微信訂餐業(yè)務(wù)。經(jīng)測試,本方案切實可行,能實現(xiàn)各種預(yù)設(shè)功能。
[1] 王琳,余震虹,李鑫,等.基于ARM的嵌入式點菜系統(tǒng)的設(shè)計[J].ARM開發(fā)與應(yīng)用, 2009,2(2):105-107.
[2] 何偉,游婧,張玲.基于Nios II自助點菜系統(tǒng)的μC/GUI應(yīng)用[J].電子技術(shù)應(yīng)用, 2011(9):35-38.
[3] 王昆侖,李紅.數(shù)據(jù)結(jié)構(gòu)與算法[M].北京:中國鐵道出版社,2006: 294-296.
[4] 王靈芝,葉美霞,張建造.基于Zigbee及BOA服務(wù)器的嵌入式智能家居的設(shè)計[J].閩南師范大學(xué)學(xué)報,2014(3).
[5] 趙鶴芹.設(shè)計動態(tài)網(wǎng)站的最佳方案:Apache+PHP+MySQL[J].計算機工程與設(shè)計,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
閩南師范大學(xué)杰出青年基金(SJ1113);福建省自然科學(xué)基金資助項目(2013J05014)。
TN92
A
?士然
2014-09-30)