陳建剛,劉云霞,黃國偉,蔡鴻鑫
(深圳信息職業(yè)技術(shù)學(xué)院計算機學(xué)院,廣東 深圳 518172)
WiFi智能小車的不同控制方式設(shè)計與實現(xiàn)
陳建剛,劉云霞,黃國偉,蔡鴻鑫
(深圳信息職業(yè)技術(shù)學(xué)院計算機學(xué)院,廣東 深圳 518172)
提供了一種使用同一安卓APP近程和遠程控制wifi智能小車的方法。安卓APP可以在智能小車的WiFi狀態(tài)下近程控制智能小車,分別借助于安卓系統(tǒng)的開源java-websocket的jre包和OpenWRT系統(tǒng)的 開源libwebsocket插件,在安卓APP和智能小車的主控板Wrtnode上實現(xiàn)websocket協(xié)議功能,通過websocket server中轉(zhuǎn)實現(xiàn)遠程控制效果。安卓APP通過json格式下發(fā)控制指令,能夠控制智能小車的前后左右停及攝像頭的旋轉(zhuǎn),智能小車根據(jù)控制指令分別采用文本格式和二進制格式上報傳感數(shù)據(jù)和監(jiān)控畫面,為WiFi智能設(shè)備提供多種控制方式的解決方案。
智能路由器; Wrtnode; Websocket;安卓APP; 智能小車;遠程控制
近年來,采用開源的基于linux的智能路由系統(tǒng)OpenWRT的智能路由器除了作為自身無線接入功能的家庭智能網(wǎng)關(guān),如極路由HiWiFi 、聯(lián)想neWiFi和小米miWiFi,還有一些主打商業(yè)免費WiFi功能,通過廣告和關(guān)注商家微信公眾號的方式吸引消費者。隨著物聯(lián)網(wǎng)技術(shù)和創(chuàng)客文化的發(fā)展,采用OpenWRT系統(tǒng)的硬件開發(fā)板搭建的應(yīng)用系統(tǒng)也逐漸興起,季曉迪等[1]設(shè)計出基于OpenWRT的醫(yī)用無線內(nèi)鏡裝置系統(tǒng),李德強等[2]設(shè)計出基于OpenWRT的室內(nèi)安防系統(tǒng),袁玉卓等[3]設(shè)計出基于OpenWRT的植物生長環(huán)境的監(jiān)測及控制系統(tǒng)。
伴隨著物聯(lián)網(wǎng)行業(yè)的發(fā)展趨勢,采用OpenWRT系統(tǒng)的面向物聯(lián)網(wǎng)行業(yè)的集成智能硬件紛紛推出,包括基于MTK的mt7620,mt7688等系列芯片的Wrtnode系列[4],MTK自身推出的LinkIt Smart 7688 Duo等,這些開發(fā)板更集成,硬幣大小,并將芯片接口引出連接周邊設(shè)備,方便連接和驅(qū)動設(shè)備如攝像頭、arduino等,在物聯(lián)網(wǎng)有廣泛應(yīng)用[5]。
我們通過將市面的WiFi智能小車的主控板用Wrtnode替代,開發(fā)安卓APP作為上位機接入Wrtnode的 WiFi,實現(xiàn)WiFi下的近程控制小車。由于Wrtnode既能作為AP供無線終端接入,同時還能遠程接入上級WiFi連接上服務(wù)器,上位機也連接上服務(wù)器,通過服務(wù)器中轉(zhuǎn)實現(xiàn)遠程控制效果。借助于在android系統(tǒng)和OpenWRT系統(tǒng)中實現(xiàn)websocket協(xié)議功能,我們實現(xiàn)了通過同一款安卓APP,既可以在智能小車主控板WiFi下控制小車,也可通過服務(wù)器中轉(zhuǎn)遠程控制小車。為WiFi智能設(shè)備提供多種控制方式的解決方案。
WiFi智能小車由arduino和Wrtnode兩個開發(fā)板組成,其中arduino負責控制小車行徑、控制攝像頭旋轉(zhuǎn)和接入傳感器(包括溫度、LED燈等),Wrtnode作為小車主控板,主要實現(xiàn)視頻監(jiān)控、WiFi接入、與arduino的串口通信等功能,本智能小車的詳細功能架構(gòu)在文獻[6,7]中有論述,本文主要論述WiFi智能小車與安卓APP的近程及遠程控制功能的設(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實現(xiàn),通過mjpgstreamer的output_http模塊采用web輸出方式。接入智能小車WiFi后,安卓APP可連接到小車攝像頭web視頻流端口獲取視頻數(shù)據(jù)。另外,接入小車OpenWRT系統(tǒng)的ser2net插件端口控制小車行徑。在近程控制功能中,安卓APP實現(xiàn)了按鈕、重力感應(yīng)、語音等三種控制小車行徑功能,能夠控制小車行走,旋轉(zhuǎn),避障等功能,控制攝像頭云臺旋轉(zhuǎn)功能。Arduino上電后,循環(huán)讀取串口輸入信息,若有輸入值,根據(jù)不同值執(zhí)行相應(yīng)控制指令,其實現(xiàn)的控制流程如圖2所示。
圖2 近程控制智能小車的交互流程Fig.2 Interaction flow of smart car control under a short range
1.2 通過websocket協(xié)議遠程控制智能小車
通過websocket協(xié)議實現(xiàn)安卓APP遠程控制智能小車,該控制過程如圖3所示,在阿里云服務(wù)器上通過開源高性能的支持TCP長連接,支持Websocket等諸多協(xié)議的服務(wù)器框架-workerman[8]搭建websocket server。在近程控制的安卓APP基礎(chǔ)上,我們采用開源的java-websocket的jre包實現(xiàn)安卓端的websocket功能,通過該功能安卓APP能連接到websocket server。設(shè)備端則是通過在Wrtnode主控板中移植libwebsocket插件并開發(fā)交互功能。
圖3 遠程控制智能小車示意圖Fig.3 Diagram of remote control of smart car
物聯(lián)網(wǎng)技術(shù)中常見的數(shù)據(jù)交互類型包括文本類型和二進制類型,采用websocket傳輸時,需要指定消息類型,圖4為websocket的協(xié)議格式,字段opcode定義了 payload data的類型:
0x1:text frame表示文本數(shù)據(jù)
0x2:binary frame表示二進制數(shù)據(jù)
由于安卓APP只需發(fā)送控制指令,我們采用將指令組織成json格式,調(diào)用封裝的開源javawebsocket插件,將opcode字段置為0x1,以文本數(shù)據(jù)發(fā)送給websocket server。對于WiFi智能小車需要上報溫度和視頻監(jiān)控數(shù)據(jù),其中溫度數(shù)據(jù)以文本方式發(fā)送,opcode置為0x1,視頻圖片數(shù)據(jù)量較大,適合以二進制發(fā)送,opcode置為0x2。
圖4 websocket的協(xié)議格式Fig.4 Websocket protocol format
1.2.1 遠程控制智能小車交互設(shè)計
根據(jù)智能小車功能,我們設(shè)計了安卓APP和WiFi智能小車的三類交互指令:
1)單向控制指令下達
該類控制指令由安卓APP作為上位機下發(fā),WiFi智能小車執(zhí)行指令功能。包括控制智能小車行徑指令-前/后/左/右/停(json字段:"type":"Move”,"content":" a/b/c/d/e ")、控制小車攝像頭云臺舵機旋轉(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ù)上報
該類指令由安卓APP下發(fā)控制指令,WiFi智能小車執(zhí)行指令功能并返回傳感器檢測數(shù)據(jù)。掛載在arduino的溫度傳感器數(shù)據(jù)上報,安卓APP發(fā)送上報溫度數(shù)據(jù)控制指令的json字段為:"type":" Temp”,"content":" T/t (開/關(guān))",而智能小車的溫度傳感器采集的溫度數(shù)據(jù)上報的json字段為:"type":" Temp”,"content":" 溫度值"。
3)攝像頭監(jiān)控畫面上傳
安卓APP下達的控制指令的json字段為:"type":" Video”,"content":" V/v(開/關(guān)) "。收到安卓APP下發(fā)開啟攝像頭控制指令后,Wrtnode開啟mjpg-streamer的output_file功能,采用通過linux進程間通信-有名管道方式,將生成的視頻圖片通過websocket協(xié)議以二進制數(shù)據(jù)格式上報給websocket server。
圖5 控制指令傳輸過程Fig.5 Transfer flow of Control instruction
在文獻[7]基礎(chǔ)上,我們進一步優(yōu)化了這三類交互過程設(shè)計,簡化json格式的控制指令,依次對應(yīng)著圖5所示的1-3的流程。對于監(jiān)控圖片數(shù)據(jù)不需要另開一個websocket server端口專門傳送二進制數(shù)據(jù),通過設(shè)置opcode數(shù)據(jù)類型可以在一個websocket server端口就能完成這三類交互過程。
1.2.2 WiFi智能小車遠程控制功能設(shè)計
(1)Wrtnode收發(fā)消息
在Wrtnode中移植libwebsocket開源代碼并在test-echo.c中根據(jù)上述三類交互流程進行代碼修改,在回調(diào)函數(shù)callback_echo中通過LWS_ CALLBACK_CLIENT_RECEIVE接收json格式控制指令處理接收流程,對于控制小車行徑、攝像頭旋轉(zhuǎn)、開關(guān)燈、溫度傳感數(shù)據(jù)上報等,需要寫到串口設(shè)備文件/dev/ttyS0,由arduino讀取并執(zhí)行指令操作,如圖6(a)所示;對于需要上報的數(shù)據(jù),包括攝像頭的監(jiān)控圖片數(shù)據(jù)、溫度數(shù)據(jù)等,通過LWS_ CALLBACK_CLIENT_WRITEABLE處理并調(diào)用函數(shù)libwebsocket write根據(jù)消息類型分別以二進制和文本類型發(fā)送數(shù)據(jù),如圖6(b)所示。
圖6 Wrtnode遠程控制收發(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í)行對應(yīng)功能,包括控制智能小車行徑指令(前/后/左/右/停)、控制小車攝像頭云臺舵機旋轉(zhuǎn)(上/下/左/右/居中)、開關(guān)LED燈、上報溫度傳感器數(shù)據(jù),其控制流程如圖7所示。
WiFi智能小車上電時默認開啟WiFi,安卓手機在接入小車WiFi后,打開APP可通過控制界面連接mjpg-streamer端口和ser2net端口,實現(xiàn)對小車的WiFi下的近程控制,操作界面如圖8所示。
圖8 WiFi狀態(tài)下控制智能小車的安卓APP截圖Fig.8 Android APP control GUI under WiFi
若在固定場所,WiFi智能小車可以預(yù)先設(shè)置好接入場所的固定WiFi,若在戶外則需要接入4G路由器等開啟的WiFi,從而接入internet并通過websocket協(xié)議連接到websocket server,該安卓APP通過連接設(shè)置界面也接入到websocket server,從而可以要求上傳溫度數(shù)據(jù)、遠程監(jiān)控小車行徑等,遠程控制的操作界面如圖9所示。
圖9 遠程控制智能小車的安卓APP截圖Fig.9 Android APP remote control GUI
在WiFi狀態(tài)下近程控制智能小車基礎(chǔ)上,我們通過websocket協(xié)議實現(xiàn)了使用同一個安卓APP對智能小車的遠程控制功能。由于遠程控制需要服務(wù)器中轉(zhuǎn),監(jiān)控畫面有時卡頓,可以通過增加服務(wù)器性能,降低監(jiān)控畫面像素等方式提升監(jiān)控的流暢性。
[1] 季曉迪,羅利文.基于OpenWRT的醫(yī)用無線內(nèi)鏡裝置系統(tǒng)設(shè)計[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] 李德強, 孫進生, 王超穎等. 基于OpenWRT的室內(nèi)安防系統(tǒng)的研究與設(shè)計[J]. 工業(yè)控制計算機. 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的植物生長環(huán)境的監(jiān)測及控制系統(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] 袁希, 歐陽運濤.基于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] 陳建剛,紀嘉銘,葉森等. 采用Wrtnode開源硬件實現(xiàn)多功能智能小車[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] 陳建剛,黃國偉,蔡鴻鑫等. 基于WebSocket的多功能智能設(shè)備遠程控制[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
【責任編輯:高潮】
2017-02-23
深圳市2015年市創(chuàng)客專項資金學(xué)生創(chuàng)客項目(GRCK2015092914140517);深圳市2016年市創(chuàng)客專項資金個人創(chuàng)客項目(GRCK2016033010181365);2016年廣東大學(xué)生科技創(chuàng)新培育項目(“攀登計劃”)(pdjh2016b0711);深圳市2016年科技計劃基礎(chǔ)研究項目(JCYJ2016030710153)
陳建剛(1978-),男(漢),江西豐城人,博士,高工,主要研究方向:網(wǎng)絡(luò)技術(shù)。 E-mail:chenjg@sziit.edu.cn