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