陳建剛,劉云霞,黃國(guó)偉,蔡鴻鑫
(深圳信息職業(yè)技術(shù)學(xué)院計(jì)算機(jī)學(xué)院,廣東 深圳 518172)
WiFi智能小車的不同控制方式設(shè)計(jì)與實(shí)現(xiàn)
陳建剛,劉云霞,黃國(guó)偉,蔡鴻鑫
(深圳信息職業(yè)技術(shù)學(xué)院計(jì)算機(jī)學(xué)院,廣東 深圳 518172)
提供了一種使用同一安卓APP近程和遠(yuǎn)程控制wifi智能小車的方法。安卓APP可以在智能小車的WiFi狀態(tài)下近程控制智能小車,分別借助于安卓系統(tǒng)的開源java-websocket的jre包和OpenWRT系統(tǒng)的 開源libwebsocket插件,在安卓APP和智能小車的主控板Wrtnode上實(shí)現(xiàn)websocket協(xié)議功能,通過(guò)websocket server中轉(zhuǎn)實(shí)現(xiàn)遠(yuǎn)程控制效果。安卓APP通過(guò)json格式下發(fā)控制指令,能夠控制智能小車的前后左右停及攝像頭的旋轉(zhuǎn),智能小車根據(jù)控制指令分別采用文本格式和二進(jìn)制格式上報(bào)傳感數(shù)據(jù)和監(jiān)控畫面,為WiFi智能設(shè)備提供多種控制方式的解決方案。
智能路由器; Wrtnode; Websocket;安卓APP; 智能小車;遠(yuǎn)程控制
近年來(lái),采用開源的基于linux的智能路由系統(tǒng)OpenWRT的智能路由器除了作為自身無(wú)線接入功能的家庭智能網(wǎng)關(guān),如極路由HiWiFi 、聯(lián)想neWiFi和小米miWiFi,還有一些主打商業(yè)免費(fèi)WiFi功能,通過(guò)廣告和關(guān)注商家微信公眾號(hào)的方式吸引消費(fèi)者。隨著物聯(lián)網(wǎng)技術(shù)和創(chuàng)客文化的發(fā)展,采用OpenWRT系統(tǒng)的硬件開發(fā)板搭建的應(yīng)用系統(tǒng)也逐漸興起,季曉迪等[1]設(shè)計(jì)出基于OpenWRT的醫(yī)用無(wú)線內(nèi)鏡裝置系統(tǒng),李德強(qiáng)等[2]設(shè)計(jì)出基于OpenWRT的室內(nèi)安防系統(tǒng),袁玉卓等[3]設(shè)計(jì)出基于OpenWRT的植物生長(zhǎng)環(huán)境的監(jiān)測(cè)及控制系統(tǒng)。
伴隨著物聯(lián)網(wǎng)行業(yè)的發(fā)展趨勢(shì),采用OpenWRT系統(tǒng)的面向物聯(lián)網(wǎng)行業(yè)的集成智能硬件紛紛推出,包括基于MTK的mt7620,mt7688等系列芯片的Wrtnode系列[4],MTK自身推出的LinkIt Smart 7688 Duo等,這些開發(fā)板更集成,硬幣大小,并將芯片接口引出連接周邊設(shè)備,方便連接和驅(qū)動(dòng)設(shè)備如攝像頭、arduino等,在物聯(lián)網(wǎng)有廣泛應(yīng)用[5]。
我們通過(guò)將市面的WiFi智能小車的主控板用Wrtnode替代,開發(fā)安卓APP作為上位機(jī)接入Wrtnode的 WiFi,實(shí)現(xiàn)WiFi下的近程控制小車。由于Wrtnode既能作為AP供無(wú)線終端接入,同時(shí)還能遠(yuǎn)程接入上級(jí)WiFi連接上服務(wù)器,上位機(jī)也連接上服務(wù)器,通過(guò)服務(wù)器中轉(zhuǎn)實(shí)現(xiàn)遠(yuǎn)程控制效果。借助于在android系統(tǒng)和OpenWRT系統(tǒng)中實(shí)現(xiàn)websocket協(xié)議功能,我們實(shí)現(xiàn)了通過(guò)同一款安卓APP,既可以在智能小車主控板WiFi下控制小車,也可通過(guò)服務(wù)器中轉(zhuǎn)遠(yuǎn)程控制小車。為WiFi智能設(shè)備提供多種控制方式的解決方案。
WiFi智能小車由arduino和Wrtnode兩個(gè)開發(fā)板組成,其中arduino負(fù)責(zé)控制小車行徑、控制攝像頭旋轉(zhuǎn)和接入傳感器(包括溫度、LED燈等),Wrtnode作為小車主控板,主要實(shí)現(xiàn)視頻監(jiān)控、WiFi接入、與arduino的串口通信等功能,本智能小車的詳細(xì)功能架構(gòu)在文獻(xiàn)[6,7]中有論述,本文主要論述WiFi智能小車與安卓APP的近程及遠(yuǎn)程控制功能的設(shè)計(jì)及實(shí)現(xiàn)。
1.1 接入小車WiFi近程控制智能小車
安卓系統(tǒng)在接入小車主控板Wrtnode的WiFi下,安卓APP即可在WiFi下控制小車行徑,如圖1所示。
圖1 近程控制智能小車Fig.1 The control of smart car under a short range
在WiFi狀態(tài)下的視頻監(jiān)控方式采用小車的OpenWRT系統(tǒng)插件mjpg-streamer實(shí)現(xiàn),通過(guò)mjpgstreamer的output_http模塊采用web輸出方式。接入智能小車WiFi后,安卓APP可連接到小車攝像頭web視頻流端口獲取視頻數(shù)據(jù)。另外,接入小車OpenWRT系統(tǒng)的ser2net插件端口控制小車行徑。在近程控制功能中,安卓APP實(shí)現(xiàn)了按鈕、重力感應(yīng)、語(yǔ)音等三種控制小車行徑功能,能夠控制小車行走,旋轉(zhuǎn),避障等功能,控制攝像頭云臺(tái)旋轉(zhuǎn)功能。Arduino上電后,循環(huán)讀取串口輸入信息,若有輸入值,根據(jù)不同值執(zhí)行相應(yīng)控制指令,其實(shí)現(xiàn)的控制流程如圖2所示。
圖2 近程控制智能小車的交互流程Fig.2 Interaction flow of smart car control under a short range
1.2 通過(guò)websocket協(xié)議遠(yuǎn)程控制智能小車
通過(guò)websocket協(xié)議實(shí)現(xiàn)安卓APP遠(yuǎn)程控制智能小車,該控制過(guò)程如圖3所示,在阿里云服務(wù)器上通過(guò)開源高性能的支持TCP長(zhǎng)連接,支持Websocket等諸多協(xié)議的服務(wù)器框架-workerman[8]搭建websocket server。在近程控制的安卓APP基礎(chǔ)上,我們采用開源的java-websocket的jre包實(shí)現(xiàn)安卓端的websocket功能,通過(guò)該功能安卓APP能連接到websocket server。設(shè)備端則是通過(guò)在Wrtnode主控板中移植libwebsocket插件并開發(fā)交互功能。
圖3 遠(yuǎn)程控制智能小車示意圖Fig.3 Diagram of remote control of smart car
物聯(lián)網(wǎng)技術(shù)中常見的數(shù)據(jù)交互類型包括文本類型和二進(jìn)制類型,采用websocket傳輸時(shí),需要指定消息類型,圖4為websocket的協(xié)議格式,字段opcode定義了 payload data的類型:
0x1:text frame表示文本數(shù)據(jù)
0x2:binary frame表示二進(jìn)制數(shù)據(jù)
由于安卓APP只需發(fā)送控制指令,我們采用將指令組織成json格式,調(diào)用封裝的開源javawebsocket插件,將opcode字段置為0x1,以文本數(shù)據(jù)發(fā)送給websocket server。對(duì)于WiFi智能小車需要上報(bào)溫度和視頻監(jiān)控?cái)?shù)據(jù),其中溫度數(shù)據(jù)以文本方式發(fā)送,opcode置為0x1,視頻圖片數(shù)據(jù)量較大,適合以二進(jìn)制發(fā)送,opcode置為0x2。
圖4 websocket的協(xié)議格式Fig.4 Websocket protocol format
1.2.1 遠(yuǎn)程控制智能小車交互設(shè)計(jì)
根據(jù)智能小車功能,我們?cè)O(shè)計(jì)了安卓APP和WiFi智能小車的三類交互指令:
1)單向控制指令下達(dá)
該類控制指令由安卓APP作為上位機(jī)下發(fā),WiFi智能小車執(zhí)行指令功能。包括控制智能小車行徑指令-前/后/左/右/停(json字段:"type":"Move”,"content":" a/b/c/d/e ")、控制小車攝像頭云臺(tái)舵機(jī)旋轉(zhuǎn)-上/下/左/右/居中(json字段:"type":" Camera”,"content":" A/B/C/D/E ")、開關(guān)LED燈(json字段:"type":" Lamp”,"content":" T/t(開/關(guān)) ")。
2)傳感數(shù)據(jù)上報(bào)
該類指令由安卓APP下發(fā)控制指令,WiFi智能小車執(zhí)行指令功能并返回傳感器檢測(cè)數(shù)據(jù)。掛載在arduino的溫度傳感器數(shù)據(jù)上報(bào),安卓APP發(fā)送上報(bào)溫度數(shù)據(jù)控制指令的json字段為:"type":" Temp”,"content":" T/t (開/關(guān))",而智能小車的溫度傳感器采集的溫度數(shù)據(jù)上報(bào)的json字段為:"type":" Temp”,"content":" 溫度值"。
3)攝像頭監(jiān)控畫面上傳
安卓APP下達(dá)的控制指令的json字段為:"type":" Video”,"content":" V/v(開/關(guān)) "。收到安卓APP下發(fā)開啟攝像頭控制指令后,Wrtnode開啟mjpg-streamer的output_file功能,采用通過(guò)linux進(jìn)程間通信-有名管道方式,將生成的視頻圖片通過(guò)websocket協(xié)議以二進(jìn)制數(shù)據(jù)格式上報(bào)給websocket server。
圖5 控制指令傳輸過(guò)程Fig.5 Transfer flow of Control instruction
在文獻(xiàn)[7]基礎(chǔ)上,我們進(jìn)一步優(yōu)化了這三類交互過(guò)程設(shè)計(jì),簡(jiǎn)化json格式的控制指令,依次對(duì)應(yīng)著圖5所示的1-3的流程。對(duì)于監(jiān)控圖片數(shù)據(jù)不需要另開一個(gè)websocket server端口專門傳送二進(jìn)制數(shù)據(jù),通過(guò)設(shè)置opcode數(shù)據(jù)類型可以在一個(gè)websocket server端口就能完成這三類交互過(guò)程。
1.2.2 WiFi智能小車遠(yuǎn)程控制功能設(shè)計(jì)
(1)Wrtnode收發(fā)消息
在Wrtnode中移植libwebsocket開源代碼并在test-echo.c中根據(jù)上述三類交互流程進(jìn)行代碼修改,在回調(diào)函數(shù)callback_echo中通過(guò)LWS_ CALLBACK_CLIENT_RECEIVE接收json格式控制指令處理接收流程,對(duì)于控制小車行徑、攝像頭旋轉(zhuǎn)、開關(guān)燈、溫度傳感數(shù)據(jù)上報(bào)等,需要寫到串口設(shè)備文件/dev/ttyS0,由arduino讀取并執(zhí)行指令操作,如圖6(a)所示;對(duì)于需要上報(bào)的數(shù)據(jù),包括攝像頭的監(jiān)控圖片數(shù)據(jù)、溫度數(shù)據(jù)等,通過(guò)LWS_ CALLBACK_CLIENT_WRITEABLE處理并調(diào)用函數(shù)libwebsocket write根據(jù)消息類型分別以二進(jìn)制和文本類型發(fā)送數(shù)據(jù),如圖6(b)所示。
圖6 Wrtnode遠(yuǎn)程控制收發(fā)消息功能Fig.6 Remote control to Tx/Rx message
(2)Arduino處理流程
圖7 Arduino處理流程Fig.7 Arduino process flow
Arduino在loop函數(shù)監(jiān)聽到串口有輸入則根據(jù)輸入指令執(zhí)行對(duì)應(yīng)功能,包括控制智能小車行徑指令(前/后/左/右/停)、控制小車攝像頭云臺(tái)舵機(jī)旋轉(zhuǎn)(上/下/左/右/居中)、開關(guān)LED燈、上報(bào)溫度傳感器數(shù)據(jù),其控制流程如圖7所示。
WiFi智能小車上電時(shí)默認(rèn)開啟WiFi,安卓手機(jī)在接入小車WiFi后,打開APP可通過(guò)控制界面連接mjpg-streamer端口和ser2net端口,實(shí)現(xiàn)對(duì)小車的WiFi下的近程控制,操作界面如圖8所示。
圖8 WiFi狀態(tài)下控制智能小車的安卓APP截圖Fig.8 Android APP control GUI under WiFi
若在固定場(chǎng)所,WiFi智能小車可以預(yù)先設(shè)置好接入場(chǎng)所的固定WiFi,若在戶外則需要接入4G路由器等開啟的WiFi,從而接入internet并通過(guò)websocket協(xié)議連接到websocket server,該安卓APP通過(guò)連接設(shè)置界面也接入到websocket server,從而可以要求上傳溫度數(shù)據(jù)、遠(yuǎn)程監(jiān)控小車行徑等,遠(yuǎn)程控制的操作界面如圖9所示。
圖9 遠(yuǎn)程控制智能小車的安卓APP截圖Fig.9 Android APP remote control GUI
在WiFi狀態(tài)下近程控制智能小車基礎(chǔ)上,我們通過(guò)websocket協(xié)議實(shí)現(xiàn)了使用同一個(gè)安卓APP對(duì)智能小車的遠(yuǎn)程控制功能。由于遠(yuǎn)程控制需要服務(wù)器中轉(zhuǎn),監(jiān)控畫面有時(shí)卡頓,可以通過(guò)增加服務(wù)器性能,降低監(jiān)控畫面像素等方式提升監(jiān)控的流暢性。
[1] 季曉迪,羅利文.基于OpenWRT的醫(yī)用無(wú)線內(nèi)鏡裝置系統(tǒng)設(shè)計(jì)[J]. 電子技術(shù)應(yīng)用. 2017 (01):92-98. JI Xiaodi, LUO Liwen. Wireless medical endoscope system design based on OpenWrt[J]. Application of Electronic Technique. 2017 (01):92-98. (in Chinese)
[2] 李德強(qiáng), 孫進(jìn)生, 王超穎等. 基于OpenWRT的室內(nèi)安防系統(tǒng)的研究與設(shè)計(jì)[J]. 工業(yè)控制計(jì)算機(jī). 2016 (07):36-37. LI Deqiang, SUN Jinsheng, WANG Chaoying et al. Research and Design of Indoor Environment Monitoring System Based on OpenWrt[J]. Industrial Control Computer.2016 (07):36-37. (in Chinese)
[3] 袁玉卓, 王卿璞, 魯海瑞等. 基于Z igBee與OpenWRT的植物生長(zhǎng)環(huán)境的監(jiān)測(cè)及控制系統(tǒng)[J]. 現(xiàn)代電子技術(shù). 2016 (04):55-62. YUAN Yuzhuo,WANG Qingpu, LU Hairui et al.Plant growth environment monitoring and control system based on ZigBee and OpenWrt.Modern Electronics Technique.2016 (04):55-62. (in Chinese)
[4] 袁希, 歐陽(yáng)運(yùn)濤.基于Wrtnode2R的智能門禁系統(tǒng)[J].科技創(chuàng)新與應(yīng)用. 2017(02):64. YUAN Xi,OUYANG YunTao. the Entrance Guard System based on Wrtnode2R[J].Technology Innovation and Application.2017 (02):64. (in Chinese)
[5] 陳建剛,紀(jì)嘉銘,葉森等. 采用Wrtnode開源硬件實(shí)現(xiàn)多功能智能小車[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用, 2016, 16(3): 34-36. CHEN Jiangang, JI Jiaming, YE Sen et al. Multifunction Intelligent Car Using WRTnodeOpen Source Hardware[J]. Microcontrollers & Embedded Systems.2016, 16(3): 34-36. (in Chinese)
[6] 陳建剛,黃國(guó)偉,蔡鴻鑫等. 基于WebSocket的多功能智能設(shè)備遠(yuǎn)程控制[J]. 計(jì)算機(jī)與現(xiàn)代化. 2016(12):97-101. CHEN JianGang, HUANG GuoWei, CAI HongXin et al. Remote Control Solution for Multi-function Intelligent Device based on Websocket[J].Computer and Modernization. 2016(12):97-101. (in Chinese)
Design and Implementation of Different Control Modes for WiFiSmart Car
CHEN Jiangang, HUANG Guowei, LIU Yunxia, CAI Hongxin
(School of Computer sciences, Shenzhen Institute of Information Technology, Shenzhen 518172, P.R. China)
This paper presents different control solutions for smart car with Android APP. The Android APP that has access to WiFi of smart car can control smart car under a short range. With the open-source jar package of j avawebsocket and the libwebsocket plug-in of OpenWRT, the Android APP and Wrtnode of smart car can separately implement the websocket function. With the transfer of Websocket Server, the Android APP realizes remote control of smart car. The Android APP sends control instruction in json format, which can control the car action and the camera rotation. The smart car reports data of sensor with text format and monitoring screen with binary format separately and therefor offers solutions with lots of controlling methods for WiFi smart devices.
intelligent router; Wrtnode; Websocket; Android APP; smart car; remote control
TP39;TP312
:A
1672-6332(2017)01-0082-05
【責(zé)任編輯:高潮】
2017-02-23
深圳市2015年市創(chuàng)客專項(xiàng)資金學(xué)生創(chuàng)客項(xiàng)目(GRCK2015092914140517);深圳市2016年市創(chuàng)客專項(xiàng)資金個(gè)人創(chuàng)客項(xiàng)目(GRCK2016033010181365);2016年廣東大學(xué)生科技創(chuàng)新培育項(xiàng)目(“攀登計(jì)劃”)(pdjh2016b0711);深圳市2016年科技計(jì)劃基礎(chǔ)研究項(xiàng)目(JCYJ2016030710153)
陳建剛(1978-),男(漢),江西豐城人,博士,高工,主要研究方向:網(wǎng)絡(luò)技術(shù)。 E-mail:chenjg@sziit.edu.cn