向 瑞,駱德漢,幸 興
(1.廣東工業(yè)大學(xué) 信息工程學(xué)院,廣東 廣州 510006;2.廣東瑞德智能科技股份有限公司,廣東 佛山 528000)
隨著“物聯(lián)網(wǎng)+”概念的興起,人們對(duì)售貨機(jī)期待的發(fā)展方向是:設(shè)備功耗低、支付方式數(shù)字化、購(gòu)物界面清晰明了化、設(shè)備連接速度更加迅速[1]。
基于以上需求,文中設(shè)計(jì)了售貨機(jī)控制硬件,采用支付寶、微信移動(dòng)支付技術(shù)[2],以微信小程序作為購(gòu)物的顯示界面,為了快速連接并且處理保存大量的訂單數(shù)據(jù)以及設(shè)備狀態(tài)數(shù)據(jù),該系統(tǒng)將MQTT(Message Queuing Telemetry Transport)協(xié)議與4G通信技術(shù)相結(jié)合,并且采用云服務(wù)端保存各項(xiàng)處理數(shù)據(jù)。該系統(tǒng)滿足人們所期待的需求并且能夠?qū)崟r(shí)監(jiān)控設(shè)備,支持多用戶同時(shí)購(gòu)物,具有廣闊的應(yīng)用前景。
系統(tǒng)總體設(shè)計(jì)分為兩大模塊:售貨機(jī)硬件及其驅(qū)動(dòng)程序、售貨顯示頁(yè)面和支付后臺(tái)程序。系統(tǒng)總體結(jié)構(gòu)如圖1所示,售貨系統(tǒng)流程如圖2所示。
圖1 系統(tǒng)總體結(jié)構(gòu)
圖2 售貨系統(tǒng)流程
通過(guò)微信小程序,用戶進(jìn)行購(gòu)物請(qǐng)求,服務(wù)器接收到請(qǐng)求后調(diào)用支付程序接口,并且將正在進(jìn)行交易的設(shè)備信息進(jìn)行保存,然后調(diào)用MQTT協(xié)議的API(Application Programming Interface, API)進(jìn)行消息發(fā)布。
售貨機(jī)硬件部分的4G模塊接收到MQTT協(xié)議發(fā)送的msg之后進(jìn)行數(shù)據(jù)解析,然后調(diào)用核心控制板的電機(jī)驅(qū)動(dòng)程序打開(kāi)貨柜門。出貨成功之后,云服務(wù)器記錄本次交易數(shù)據(jù),包括訂單號(hào)、出貨設(shè)備號(hào)、商品名等信息,最后向用戶返回交易完成的信息。
硬件設(shè)計(jì)包括4G通信模塊、以SWM220P6T7控制芯片為核心的控制板模塊、電機(jī)驅(qū)動(dòng)模塊、出貨檢測(cè)模塊、電源轉(zhuǎn)換模塊。硬件總體構(gòu)成如圖3所示。售貨機(jī)硬件實(shí)物圖如圖4所示。
圖3 硬件總體構(gòu)成
圖4 售貨機(jī)硬件實(shí)物圖
控制模塊采用華芯微特SWM220P6T7作為主控芯片,該芯片內(nèi)嵌ARM Cortex-M0內(nèi)核,其特點(diǎn)是高性能、高可靠性、超低功耗、多通信接口,包括多個(gè)UART接口、SPI通信接口和I2C接口,其正常模式工作電流為20 mA。MCU驅(qū)動(dòng)4G模塊CU101-G,并承擔(dān)主控芯片與4G模塊的通信服務(wù)。除此之外,主控芯片還要驅(qū)動(dòng)出貨電機(jī),所以必須具有電機(jī)位置檢測(cè)和堵轉(zhuǎn)檢測(cè)、紅外檢測(cè)出貨、充電及斷電檢測(cè)等功能[3]。
4G通信模塊采用中國(guó)聯(lián)通4G模塊CU101-G實(shí)現(xiàn)遠(yuǎn)程網(wǎng)絡(luò)通信功能,采用base64編碼和JSON(JavaScript Object Notation)數(shù)據(jù)格式與云服務(wù)器傳輸數(shù)據(jù)[4]。該模塊支持自定義心跳包,支持標(biāo)準(zhǔn)的MQTT協(xié)議,具有擴(kuò)展AT指令集和數(shù)據(jù)傳輸功能,同時(shí)其工作能耗低。
電機(jī)驅(qū)動(dòng)模塊采用直流電機(jī)驅(qū)動(dòng),MCU的I/O口的驅(qū)動(dòng)能力達(dá)不到驅(qū)動(dòng)電機(jī)的效果,因此在I/O口的輸出端加入一個(gè)NPN的三極管和NCE55P15K的MOS管。用2個(gè)I/O口分別控制電機(jī)的2個(gè)端子就可以啟動(dòng)電機(jī),在I/O口輸出PWM(Pulse Width Modulation)信號(hào)就可以進(jìn)行電機(jī)調(diào)速[5]。電機(jī)驅(qū)動(dòng)的正負(fù)極與I/O口的連接如圖5所示。
圖5 電機(jī)正負(fù)極接口電路
由于電機(jī)驅(qū)動(dòng)電壓與MCU供電電壓不一致,電機(jī)驅(qū)動(dòng)需要24 V電壓,MCU需要3.8 V供電,所以采用XL1509芯片降壓,其具有良好的負(fù)載驅(qū)動(dòng)能力,且紋波低。通過(guò)芯片的VIN端輸入24 V電壓,芯片輸出端就會(huì)輸出3.8 V的電壓[6]。電壓轉(zhuǎn)換模塊電路如圖6所示。
圖6 電壓轉(zhuǎn)換電路
出貨檢測(cè)模塊是由一個(gè)紅外檢測(cè)模塊組成,該紅外檢測(cè)模塊發(fā)射紅外光,當(dāng)有物體被接收管接收時(shí),檢測(cè)貨物是否被取走,當(dāng)貨物被取走時(shí),返回消息給服務(wù)器,即與用戶本次交易已經(jīng)完成。
現(xiàn)在市面上的售貨機(jī)常常自帶顯示屏幕,但是本文設(shè)計(jì)的售貨機(jī)是通過(guò)機(jī)器上的二維碼進(jìn)入微信小程序,然后在微信小程序上進(jìn)行購(gòu)物操作。相比較而言,本文售貨機(jī)功耗更低,機(jī)器出現(xiàn)問(wèn)題時(shí)便于維修,顯示界面清晰,操作更加簡(jiǎn)單。微信小程序操作界面如圖7所示,軟件設(shè)計(jì)流程如圖8所示。
圖7 微信小程序界面
圖8 軟件設(shè)計(jì)流程
客戶端與服務(wù)器的通信方式是WebSocket和HTTPS,微信小程序基于HTTPS協(xié)議和TCP/IP協(xié)議與服務(wù)器端進(jìn)行數(shù)據(jù)通信[7]。客戶端與服務(wù)器端通信的數(shù)據(jù)格式為JSON數(shù)據(jù)格式[8]??蛻舳税l(fā)送數(shù)據(jù)的格式如下:
客戶端與服務(wù)器的連接采用長(zhǎng)連接的方式,客戶端會(huì)發(fā)送一個(gè)心跳包和對(duì)應(yīng)的時(shí)間戳保持與服務(wù)器的連接狀態(tài),時(shí)間戳是一個(gè)關(guān)鍵信息,系統(tǒng)判斷交易時(shí)間是否超時(shí)的依據(jù)就是時(shí)間戳,時(shí)間戳可以轉(zhuǎn)換為當(dāng)前時(shí)間。當(dāng)客戶端向服務(wù)器發(fā)送購(gòu)物請(qǐng)求時(shí),客戶端需要提供IMEI(International Mobile Equipment Identity)號(hào)、訂單號(hào)、時(shí)間戳等信息。服務(wù)器接收到該信息后進(jìn)入訂單輪詢狀態(tài),判斷訂單時(shí)間是否超過(guò)規(guī)定的閾值,同時(shí),服務(wù)器會(huì)向客戶端返回輪詢的結(jié)果。如果訂單沒(méi)有超時(shí),服務(wù)端通過(guò)MQTT協(xié)議推送出貨的消息,售貨機(jī)4G模塊收到出貨的信息后,經(jīng)過(guò)MCU調(diào)用電機(jī)驅(qū)動(dòng)模塊,完成出貨,并且向服務(wù)器返回出貨狀態(tài),由服務(wù)器保存記錄本次交易信息;如果訂單超時(shí),服務(wù)器向客戶端發(fā)送訂單超時(shí)信息,并且取消本次訂單。支付程序測(cè)試效果如圖9所示。服務(wù)器與客戶端傳輸?shù)腏SON數(shù)據(jù)格式參數(shù)說(shuō)明見(jiàn)表1所列。
圖9 支付測(cè)試程序效果
表1 JSON數(shù)據(jù)格式參數(shù)說(shuō)明
MQTT協(xié)議是一種輕量級(jí)的消息傳輸協(xié)議,其消息傳輸形式為主題發(fā)布/訂閱的方式[9],是基于TCP/IP協(xié)議改進(jìn)而來(lái),由于其可以適應(yīng)低帶寬、網(wǎng)絡(luò)不可靠、嵌入式處理器等環(huán)境條件,所以被廣泛應(yīng)用在M2M通信中[10]。本系統(tǒng)MQTT結(jié)構(gòu)如圖10所示。
圖10 MQTT結(jié)構(gòu)
基于售貨機(jī)應(yīng)用場(chǎng)景需求,通過(guò)MQTT協(xié)議建立消息轉(zhuǎn)發(fā)機(jī)制,并且采用云端服務(wù)器與MQTT融合的方式,實(shí)現(xiàn)了一個(gè)服務(wù)器同時(shí)與多個(gè)客戶端連接的網(wǎng)絡(luò)通信模式,并且可以遠(yuǎn)程登錄服務(wù)端實(shí)時(shí)查看交易信息。
MQTT固定報(bào)文頭最少是兩個(gè)字節(jié),第一個(gè)字節(jié)是消息類型Qos級(jí)別等標(biāo)志位,第二個(gè)字節(jié)開(kāi)始是字節(jié)總長(zhǎng)度,包括可變報(bào)文頭和消息負(fù)載[11],該字段最多允許4 B。該協(xié)議相比HTTP,資源開(kāi)銷小、網(wǎng)絡(luò)流量消耗低,而且網(wǎng)絡(luò)實(shí)時(shí)性好。但是由于MQTT屬于應(yīng)用層協(xié)議,其安全性缺乏保證,所以在應(yīng)用層MQTT需提供用戶名和密碼方可進(jìn)行用戶檢測(cè),同時(shí)在傳輸層使用TLS加密,以此提高數(shù)據(jù)安全性。
本文設(shè)計(jì)了一種基于售貨硬件、云平臺(tái)、MQTT協(xié)議融合的售貨系統(tǒng),該系統(tǒng)可使用移動(dòng)支付的方式,購(gòu)物頁(yè)面采用微信小程序顯示清晰明了,4G通信模塊和MQTT的低流量消耗和低延遲保證了系統(tǒng)連接的快速性。由于售貨裝置小巧輕便、功耗低,幾乎不會(huì)受到空間限制,可以將其放置在酒店房間中,方便顧客購(gòu)物,如果將購(gòu)物平臺(tái)與酒店管理平臺(tái)進(jìn)行融合,將會(huì)有更加廣泛的應(yīng)用市場(chǎng)。