譚成宇,代少升,謝小芳
(重慶郵電大學(xué)信號(hào)與信息處理重慶市重點(diǎn)實(shí)驗(yàn)室,重慶 400065)
責(zé)任編輯:時(shí) 雯
傳統(tǒng)的點(diǎn)菜方式需要服務(wù)員周旋于餐桌、廚房和收銀臺(tái)之間,這種點(diǎn)菜方式技術(shù)水平落后、信息化程度低、服務(wù)員工作量大。由于傳統(tǒng)的點(diǎn)菜方式存在上述缺點(diǎn),智能化點(diǎn)菜系統(tǒng)應(yīng)運(yùn)而生。在一般的智能化點(diǎn)菜系統(tǒng)中,服務(wù)員需手持一臺(tái)點(diǎn)菜器為顧客點(diǎn)菜,點(diǎn)菜后數(shù)據(jù)直接發(fā)送到廚房,進(jìn)行菜品制作,這種智能點(diǎn)菜系統(tǒng)終端界面友好、信息化程度高,但存在成本較高、功能單一,仍需服務(wù)員參與,且無(wú)法實(shí)現(xiàn)多個(gè)餐桌同時(shí)點(diǎn)菜等問(wèn)題[1]。本文針對(duì)現(xiàn)有點(diǎn)菜系統(tǒng)的缺點(diǎn)創(chuàng)新性地提出一種基于RFID技術(shù)的無(wú)線點(diǎn)菜系統(tǒng)方案[2]。該系統(tǒng)中點(diǎn)菜器終端實(shí)現(xiàn)了RFID系統(tǒng)中的標(biāo)簽功能并繼承其結(jié)構(gòu)簡(jiǎn)單、成本低的特點(diǎn);作為第二終端的讀菜器實(shí)現(xiàn)了RFID系統(tǒng)中的讀卡器功能,并且智能化程度高;而廚房通過(guò)上位機(jī)實(shí)現(xiàn)對(duì)所點(diǎn)菜品信息的分頁(yè)顯示。這套點(diǎn)菜系統(tǒng)可以實(shí)現(xiàn)無(wú)需服務(wù)員自行點(diǎn)菜的功能,真正做到智能點(diǎn)菜。
系統(tǒng)主要由點(diǎn)菜器、讀菜器以及上位機(jī)組成。假設(shè)每個(gè)餐桌上放置一個(gè)具有顯示功能的點(diǎn)菜器;每個(gè)點(diǎn)菜器自身帶有一個(gè)和餐桌號(hào)相同的固定ID號(hào);顧客可以通過(guò)輸入菜名所對(duì)應(yīng)的編號(hào)實(shí)現(xiàn)點(diǎn)菜、加菜、退菜的功能;不同廚師負(fù)責(zé)不同的菜品制作。點(diǎn)菜信息可以通過(guò)射頻模塊傳送至讀菜器,讀菜器將收到的數(shù)據(jù)解析、分類排序,然后將處理后的數(shù)據(jù)通過(guò)網(wǎng)口傳送至上位機(jī),上位機(jī)實(shí)現(xiàn)的數(shù)據(jù)顯示、刪除和上傳數(shù)據(jù)庫(kù)。該系統(tǒng)架構(gòu)如圖l所示。
圖1 系統(tǒng)架構(gòu)圖
系統(tǒng)工作流程:顧客進(jìn)店就座,根據(jù)餐桌上的菜譜選菜,將菜名對(duì)應(yīng)的編號(hào)輸入點(diǎn)菜器中,點(diǎn)菜完成,點(diǎn)菜器將顯示所點(diǎn)菜品清單及總價(jià)格。顧客確認(rèn)后,按發(fā)送鍵,點(diǎn)菜器將自身ID號(hào)和點(diǎn)菜信息一同發(fā)送至讀菜器,點(diǎn)菜器進(jìn)入接收狀態(tài)。讀菜器收到信息后,向處于接收狀態(tài)的點(diǎn)菜器發(fā)送點(diǎn)菜成功信息和預(yù)計(jì)的顧客等待時(shí)間信息。如果點(diǎn)菜時(shí)發(fā)生數(shù)據(jù)碰撞,讀菜器向處于接收狀態(tài)的點(diǎn)菜器發(fā)送點(diǎn)菜失敗信息,點(diǎn)菜器自動(dòng)重新發(fā)送點(diǎn)菜信息。點(diǎn)菜成功后,廚師通過(guò)廚房上位機(jī)所顯示的菜品順序制作,每完成一道菜品,廚師刪除菜品對(duì)應(yīng)的信息,刪除的同時(shí)信息被寫(xiě)入數(shù)據(jù)庫(kù)備用,最后收銀臺(tái)可通過(guò)讀取數(shù)據(jù)庫(kù)信息進(jìn)行結(jié)賬。系統(tǒng)工作流程如圖2所示。
圖2 系統(tǒng)工作流程
點(diǎn)菜器主要由MCU微處理器、電源模塊、鍵盤(pán)、LCD以及射頻收發(fā)模塊組成[3]。點(diǎn)菜器硬件結(jié)構(gòu)如圖3所示。
圖3 點(diǎn)菜器結(jié)構(gòu)圖
其中,射頻模塊芯片采用TI公司生產(chǎn)的CC2500芯片,它是一款超低功耗、低成本的無(wú)線收發(fā)芯片,支持多種調(diào)制方式,包括FSK,GFSK,OOK和MSK,數(shù)據(jù)傳輸速率最高可達(dá)500 kbit/s,傳輸距離為100 m。微處理器選擇STC10L16XE單片機(jī),STC10L16XE可提供以下功能:16 kbyte Flash存儲(chǔ)器;40個(gè)I/O引腳;2個(gè)16位可編程定時(shí)器/計(jì)數(shù)器;5路外部中斷口;1個(gè)全雙工UART口;工作電壓為1.8~3.6 V,滿足本系統(tǒng)低功耗、低成本、高速通信的設(shè)計(jì)要求。本系統(tǒng)采用4個(gè)獨(dú)立按鍵,分別為確認(rèn)鍵、撤銷鍵、+/向上鍵、-/向下鍵,通過(guò)查詢方式掃描按鍵,軟件設(shè)計(jì)實(shí)現(xiàn)按鍵的復(fù)用功能。LCD選用LCM12832ZK液晶顯示模塊,具有串行接口、內(nèi)部含有中文字庫(kù)的圖形點(diǎn)陣液晶顯示模塊,可顯示2行×8個(gè)漢字。
系統(tǒng)中讀菜器主要由核心處理器、SDRAM、Flash和CC2500射頻模塊共同組成,其中核心處理器選用S3C6410芯片[4],SDRAM 用于系統(tǒng)內(nèi)存,F(xiàn)lash為整個(gè)系統(tǒng)的存儲(chǔ)設(shè)備。讀菜器將CC2500射頻模塊嵌入系統(tǒng)中,并基于WinCE操作系統(tǒng)[5],通過(guò)設(shè)計(jì)SPI接口的驅(qū)動(dòng)程序及上層應(yīng)用程序,使讀菜器與點(diǎn)菜器之間進(jìn)行無(wú)線通信。讀菜器架構(gòu)如圖4所示。
圖4 讀菜器結(jié)構(gòu)圖
點(diǎn)菜系統(tǒng)的軟件設(shè)計(jì)包括點(diǎn)菜器的軟件設(shè)計(jì)、讀菜器的軟件設(shè)計(jì)、上位機(jī)的軟件設(shè)計(jì)等。
點(diǎn)菜器發(fā)送數(shù)據(jù)格式如圖5所示。
圖5 點(diǎn)菜器傳輸數(shù)據(jù)格式
前導(dǎo)碼、同步詞匯與CRC校驗(yàn)在發(fā)送數(shù)據(jù)時(shí)是由CC2500硬件自動(dòng)添加,在接收時(shí)由硬件自動(dòng)去除,不需軟件設(shè)定。CC2500工作在可變長(zhǎng)度通信模式下,需要8位的長(zhǎng)度字節(jié)給出發(fā)送數(shù)據(jù)的長(zhǎng)度信息。
功能選擇位供顧客選擇點(diǎn)菜、加菜或退菜等功能,數(shù)據(jù)位提供詳細(xì)點(diǎn)菜信息,包括菜品類型,桌號(hào),菜品編號(hào),點(diǎn)菜數(shù)量等詳細(xì)信息。
讀菜器軟件包括數(shù)據(jù)接收、數(shù)據(jù)處理、有線網(wǎng)絡(luò)傳輸、設(shè)備驅(qū)動(dòng)模塊等4個(gè)部分[6],如圖6所示。
圖6 讀菜器軟件設(shè)計(jì)
其中數(shù)據(jù)接受主要通過(guò)CC2500射頻模塊接收點(diǎn)菜器發(fā)送的點(diǎn)菜信息,以及向點(diǎn)菜器反饋菜品制作信息,如點(diǎn)菜成功、失敗、顧客等待時(shí)間、所點(diǎn)菜品排序等信息。數(shù)據(jù)處理部分為讀菜器軟件的設(shè)計(jì)核心,主要實(shí)現(xiàn)分頁(yè)顯示點(diǎn)菜信息、防碰撞算法的設(shè)計(jì)、計(jì)算顧客等待時(shí)間等功能。有線網(wǎng)絡(luò)傳輸指讀菜器與上位機(jī)間通過(guò)網(wǎng)口傳輸數(shù)據(jù)。設(shè)備的驅(qū)動(dòng)主要包括SPI驅(qū)動(dòng)、串口驅(qū)動(dòng)、網(wǎng)口驅(qū)動(dòng)等。
3.2.1 設(shè)備驅(qū)動(dòng)模塊
設(shè)備驅(qū)動(dòng)程序是操作系統(tǒng)內(nèi)核和機(jī)器硬件之間的接口,為應(yīng)用程序屏蔽了硬件的細(xì)節(jié)。
本次所開(kāi)發(fā)的系統(tǒng)包含的驅(qū)動(dòng)主要有SPI驅(qū)動(dòng)、串口驅(qū)動(dòng)和網(wǎng)口驅(qū)動(dòng)等。SPI驅(qū)動(dòng)包括以S3C6410處理器作為主設(shè)備,CC2500模塊為從設(shè)備的兩種驅(qū)動(dòng)方式,SPI操作主要完成對(duì)寄存器的讀、寫(xiě)操作,對(duì)CC2500芯片的寄存器進(jìn)行配置,實(shí)現(xiàn)讀菜器與標(biāo)簽的無(wú)線通信。
3.2.2 數(shù)據(jù)處理模塊
1)分頁(yè)顯示
假設(shè)一個(gè)較正規(guī)的餐廳,有幾個(gè)甚至十幾個(gè)廚師,每個(gè)廚師分別負(fù)責(zé)幾種菜品的制作。廚房上位機(jī)顯示所點(diǎn)菜品的信息,本系統(tǒng)設(shè)計(jì)界面按不同廚師分類,每個(gè)廚師對(duì)應(yīng)自己的一欄點(diǎn)菜信息,這樣廚師可以清楚地看到自己的做菜順序。假設(shè)顧客所點(diǎn)菜品如圖7所示,經(jīng)過(guò)整理后廚師所看到的界面如圖8所示。
圖8這種菜單顯示方式方便廚師直觀準(zhǔn)確地看出自己將要做的菜品,在節(jié)省時(shí)間的同時(shí)能夠有效地避免錯(cuò)炒、漏炒等現(xiàn)象的發(fā)生。
2)顧客等待時(shí)間計(jì)算
根據(jù)平時(shí)炒菜經(jīng)驗(yàn),可總結(jié)出廚師做每道菜的平均時(shí)間,得出一張菜品與時(shí)間的映射表。由于篇幅有限現(xiàn)只給出表的格式,如表1所示。
表1 菜品與時(shí)間的映射表
這樣可以模糊的計(jì)算出顧客需等待菜品的時(shí)間。計(jì)算方法的舉例說(shuō)明如下。
現(xiàn)以魚(yú)頭泡餅為例計(jì)算顧客需等待的時(shí)間:魚(yú)頭泡餅為廖廚師第3個(gè)菜品,通過(guò)查表1可得這3道菜所用時(shí)間分別為7 min,6 min,6 min,簡(jiǎn)單相加可得第3個(gè)菜品等待時(shí)間為19 min。
由于簡(jiǎn)單相加,計(jì)算出的等待時(shí)間比實(shí)際時(shí)間長(zhǎng),計(jì)算結(jié)果不準(zhǔn)確。在實(shí)際情況下,每個(gè)廚師負(fù)責(zé)不同類型的菜品,且不同類型的菜品之間可不受影響的同時(shí)制作,如“煮菜”的制作并不影響“炒菜”的制作,更不會(huì)影響“涼菜”的制作,只需適當(dāng)?shù)目紤]同時(shí)做菜時(shí)中間的時(shí)間損耗即可,現(xiàn)有3種類型的菜品(炒菜、煮菜和涼菜),為了簡(jiǎn)化,假設(shè)每?jī)煞N不同菜品間的損耗為1 min,基于上述考慮,提出如下計(jì)算方法:
本例中的魚(yú)頭泡餅為燉菜,前兩個(gè)菜的類型分別為涼菜和炒菜,由于有3種類型菜品,所以損耗時(shí)間定為2 min,可得魚(yú)頭泡餅制作完成時(shí)間約為6 min+2 min=8 min,方法經(jīng)過(guò)長(zhǎng)時(shí)間實(shí)驗(yàn)證明比較符合實(shí)際情況。
將計(jì)算出的等待時(shí)間發(fā)送給顧客,這樣顧客可以更加直觀地得知自己所要等待的時(shí)間,而不會(huì)因?yàn)橐淮我馔膺^(guò)長(zhǎng)的等待而抱怨。
3)防碰撞算法的設(shè)計(jì)
當(dāng)不同的餐桌同時(shí)點(diǎn)菜并發(fā)送點(diǎn)菜信息給上位機(jī),有可能發(fā)生點(diǎn)菜信息碰撞的情況,本系統(tǒng)采取點(diǎn)菜不成功則根據(jù)一定的間隔時(shí)間重發(fā)的簡(jiǎn)單方法解決這個(gè)小概率事件。
在為每個(gè)餐桌設(shè)置餐桌編號(hào)的時(shí)候,為每個(gè)餐桌設(shè)置不同的優(yōu)先級(jí),例如,現(xiàn)有40個(gè)餐桌,編號(hào)為1~40,按編號(hào)為每個(gè)餐桌設(shè)置優(yōu)先級(jí),編號(hào)為1的餐桌優(yōu)先級(jí)為1,依次類推,編號(hào)為40的餐桌優(yōu)先級(jí)為40,數(shù)據(jù)重新發(fā)送的間隔時(shí)間=優(yōu)先級(jí)×T,T>數(shù)據(jù)發(fā)送時(shí)間,這樣就保證不會(huì)再次發(fā)生碰撞,由于數(shù)據(jù)的傳輸時(shí)間為毫秒級(jí),所以這個(gè)優(yōu)先級(jí)不會(huì)對(duì)顧客有任何影響。
正常情況下點(diǎn)菜器在發(fā)送餐桌號(hào)、菜品名稱、菜品數(shù)量等信息至上位機(jī)后,進(jìn)入監(jiān)聽(tīng)模式(點(diǎn)菜器只有進(jìn)入監(jiān)聽(tīng)模式才能接受到上位機(jī)發(fā)送的信息),上位機(jī)接收到信息后發(fā)送點(diǎn)菜成功信息,當(dāng)點(diǎn)菜機(jī)接收到“成功點(diǎn)菜”的信息,則點(diǎn)菜過(guò)程完成?,F(xiàn)假設(shè)1號(hào)餐桌和3號(hào)餐桌同時(shí)發(fā)送點(diǎn)菜信息,上位機(jī)接收到亂碼后得知發(fā)生碰撞,由于上位機(jī)并不知道具體哪些餐桌發(fā)生了碰撞,所以以廣播的形式發(fā)送碰撞信號(hào),這時(shí)發(fā)生碰撞的兩個(gè)餐桌(1號(hào)和3號(hào))接收到碰撞信息后,得知自己發(fā)送的點(diǎn)菜信息發(fā)生碰撞,將做如下處理:根據(jù)自己的餐桌優(yōu)先級(jí)延時(shí)相應(yīng)的時(shí)間再次發(fā)送點(diǎn)菜信息,假設(shè)1號(hào)餐桌延時(shí)5 ms,3號(hào)餐桌延時(shí)15 ms再重新發(fā)送信息,從而確保不會(huì)再次發(fā)生碰撞,這種方法同樣可以解決多個(gè)餐桌發(fā)送的碰撞問(wèn)題。
上位機(jī)界面[7]如圖9所示,包括端口配置、開(kāi)臺(tái)信息、點(diǎn)菜信息、點(diǎn)菜清單、員工信息、員工清單等界面,其中端口配置界面完成IP地址和通信端口的設(shè)置;開(kāi)臺(tái)信息界面顯示所有餐桌當(dāng)前的狀態(tài)是否為空閑,為顧客提供直觀的空位查詢服務(wù);點(diǎn)菜信息界面顯示當(dāng)前將要制作的菜品的詳細(xì)信息,包括菜品所屬餐桌號(hào)、菜品名稱、菜品類型、菜品單價(jià)、點(diǎn)菜時(shí)間等。點(diǎn)擊已完成將菜品存入數(shù)據(jù)庫(kù)用以結(jié)賬和存檔;點(diǎn)菜清單界面顯示數(shù)據(jù)庫(kù)中當(dāng)天所完成的菜品信息;員工信息界面實(shí)現(xiàn)員工信息的管理,包括添加、刪除和查找員工信息等功能;員工清單界面詳細(xì)列出員工的各項(xiàng)信息方便老板對(duì)員工的管理。
圖9 上位機(jī)菜單界面(截圖)
系統(tǒng)采用由多個(gè)點(diǎn)菜器、單個(gè)讀菜器、以及上位機(jī)組成的系統(tǒng)結(jié)構(gòu)。點(diǎn)菜器ID號(hào)與餐桌編號(hào)對(duì)應(yīng),創(chuàng)新性的將RFID技術(shù)應(yīng)用在了點(diǎn)菜系統(tǒng)中[8];針對(duì)系統(tǒng)特點(diǎn)提出了防碰撞算法和顧客等待時(shí)間估算算法;上位機(jī)提供開(kāi)臺(tái)信息查詢功能,菜品的顯示、存儲(chǔ)功能,員工信息管理功能;這種結(jié)構(gòu)下,點(diǎn)菜器成本低,操作簡(jiǎn)單,無(wú)需服務(wù)員顧客可自行點(diǎn)菜。復(fù)雜的算法和數(shù)據(jù)處理被屏蔽在讀菜器中,系統(tǒng)擴(kuò)展性強(qiáng),非常適合大中型餐飲業(yè)的使用。
[1]王景景.無(wú)線點(diǎn)菜系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].海南大學(xué)學(xué)報(bào):自然科學(xué)版,2009,27(1):65-72.
[2]涂亮,段紅光.基于433無(wú)線收發(fā)模塊的物聯(lián)網(wǎng)智能家居系統(tǒng)設(shè)計(jì)[J]. 電視技術(shù),2012,36(6):44-46.
[3]程繼興.一種單片機(jī)控制的點(diǎn)菜系統(tǒng)[J].電子工程師,2004,30(4):76-77.
[4]馮少奇,丁春峰.基于S3C6410的MPEG-4視頻壓縮濾波器的設(shè)計(jì)研究[J]. 電視技術(shù),2012,36(7):42-45.
[5]張毅,王海濤.基于S3C2410A的WinCE 5.0下觸摸屏驅(qū)動(dòng)的實(shí)現(xiàn)[J].重慶郵電大學(xué)學(xué)報(bào):自然科學(xué)版,2008,20(6):742-745.
[6]錢(qián)麗.基于ARM的嵌入式無(wú)線點(diǎn)菜[D].武漢:武漢科技大學(xué)計(jì)算及應(yīng)用技術(shù),2005.
[7]劉炳文.精通Visual Basic 6.0中文版[M].北京:電子工業(yè)出版社,1999.
[8]鄔賀銓.物聯(lián)網(wǎng)的應(yīng)用與挑戰(zhàn)綜述[J].重慶郵電大學(xué)學(xué)報(bào):自然科學(xué)版,2010,22(5):526-531.