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