WiFi智能小车的不同控制方式设计与实现
2017-06-05陈建刚刘云霞黄国伟蔡鸿鑫
陈建刚,刘云霞,黄国伟,蔡鸿鑫
(深圳信息职业技术学院计算机学院,广东 深圳 518172)
WiFi智能小车的不同控制方式设计与实现
陈建刚,刘云霞,黄国伟,蔡鸿鑫
(深圳信息职业技术学院计算机学院,广东 深圳 518172)
提供了一种使用同一安卓APP近程和远程控制wifi智能小车的方法。安卓APP可以在智能小车的WiFi状态下近程控制智能小车,分别借助于安卓系统的开源java-websocket的jre包和OpenWRT系统的 开源libwebsocket插件,在安卓APP和智能小车的主控板Wrtnode上实现websocket协议功能,通过websocket server中转实现远程控制效果。安卓APP通过json格式下发控制指令,能够控制智能小车的前后左右停及摄像头的旋转,智能小车根据控制指令分别采用文本格式和二进制格式上报传感数据和监控画面,为WiFi智能设备提供多种控制方式的解决方案。
智能路由器; Wrtnode; Websocket;安卓APP; 智能小车;远程控制
引言
近年来,采用开源的基于linux的智能路由系统OpenWRT的智能路由器除了作为自身无线接入功能的家庭智能网关,如极路由HiWiFi 、联想neWiFi和小米miWiFi,还有一些主打商业免费WiFi功能,通过广告和关注商家微信公众号的方式吸引消费者。随着物联网技术和创客文化的发展,采用OpenWRT系统的硬件开发板搭建的应用系统也逐渐兴起,季晓迪等[1]设计出基于OpenWRT的医用无线内镜装置系统,李德强等[2]设计出基于OpenWRT的室内安防系统,袁玉卓等[3]设计出基于OpenWRT的植物生长环境的监测及控制系统。
伴随着物联网行业的发展趋势,采用OpenWRT系统的面向物联网行业的集成智能硬件纷纷推出,包括基于MTK的mt7620,mt7688等系列芯片的Wrtnode系列[4],MTK自身推出的LinkIt Smart 7688 Duo等,这些开发板更集成,硬币大小,并将芯片接口引出连接周边设备,方便连接和驱动设备如摄像头、arduino等,在物联网有广泛应用[5]。
我们通过将市面的WiFi智能小车的主控板用Wrtnode替代,开发安卓APP作为上位机接入Wrtnode的 WiFi,实现WiFi下的近程控制小车。由于Wrtnode既能作为AP供无线终端接入,同时还能远程接入上级WiFi连接上服务器,上位机也连接上服务器,通过服务器中转实现远程控制效果。借助于在android系统和OpenWRT系统中实现websocket协议功能,我们实现了通过同一款安卓APP,既可以在智能小车主控板WiFi下控制小车,也可通过服务器中转远程控制小车。为WiFi智能设备提供多种控制方式的解决方案。
1 系统设计
WiFi智能小车由arduino和Wrtnode两个开发板组成,其中arduino负责控制小车行径、控制摄像头旋转和接入传感器(包括温度、LED灯等),Wrtnode作为小车主控板,主要实现视频监控、WiFi接入、与arduino的串口通信等功能,本智能小车的详细功能架构在文献[6,7]中有论述,本文主要论述WiFi智能小车与安卓APP的近程及远程控制功能的设计及实现。
1.1 接入小车WiFi近程控制智能小车
安卓系统在接入小车主控板Wrtnode的WiFi下,安卓APP即可在WiFi下控制小车行径,如图1所示。
图1 近程控制智能小车Fig.1 The control of smart car under a short range
在WiFi状态下的视频监控方式采用小车的OpenWRT系统插件mjpg-streamer实现,通过mjpgstreamer的output_http模块采用web输出方式。接入智能小车WiFi后,安卓APP可连接到小车摄像头web视频流端口获取视频数据。另外,接入小车OpenWRT系统的ser2net插件端口控制小车行径。在近程控制功能中,安卓APP实现了按钮、重力感应、语音等三种控制小车行径功能,能够控制小车行走,旋转,避障等功能,控制摄像头云台旋转功能。Arduino上电后,循环读取串口输入信息,若有输入值,根据不同值执行相应控制指令,其实现的控制流程如图2所示。
图2 近程控制智能小车的交互流程Fig.2 Interaction flow of smart car control under a short range
1.2 通过websocket协议远程控制智能小车
通过websocket协议实现安卓APP远程控制智能小车,该控制过程如图3所示,在阿里云服务器上通过开源高性能的支持TCP长连接,支持Websocket等诸多协议的服务器框架-workerman[8]搭建websocket server。在近程控制的安卓APP基础上,我们采用开源的java-websocket的jre包实现安卓端的websocket功能,通过该功能安卓APP能连接到websocket server。设备端则是通过在Wrtnode主控板中移植libwebsocket插件并开发交互功能。
图3 远程控制智能小车示意图Fig.3 Diagram of remote control of smart car
物联网技术中常见的数据交互类型包括文本类型和二进制类型,采用websocket传输时,需要指定消息类型,图4为websocket的协议格式,字段opcode定义了 payload data的类型:
0x1:text frame表示文本数据
0x2:binary frame表示二进制数据
由于安卓APP只需发送控制指令,我们采用将指令组织成json格式,调用封装的开源javawebsocket插件,将opcode字段置为0x1,以文本数据发送给websocket server。对于WiFi智能小车需要上报温度和视频监控数据,其中温度数据以文本方式发送,opcode置为0x1,视频图片数据量较大,适合以二进制发送,opcode置为0x2。
图4 websocket的协议格式Fig.4 Websocket protocol format
1.2.1 远程控制智能小车交互设计
根据智能小车功能,我们设计了安卓APP和WiFi智能小车的三类交互指令:
1)单向控制指令下达
该类控制指令由安卓APP作为上位机下发,WiFi智能小车执行指令功能。包括控制智能小车行径指令-前/后/左/右/停(json字段:"type":"Move”,"content":" a/b/c/d/e ")、控制小车摄像头云台舵机旋转-上/下/左/右/居中(json字段:"type":" Camera”,"content":" A/B/C/D/E ")、开关LED灯(json字段:"type":" Lamp”,"content":" T/t(开/关) ")。
2)传感数据上报
该类指令由安卓APP下发控制指令,WiFi智能小车执行指令功能并返回传感器检测数据。挂载在arduino的温度传感器数据上报,安卓APP发送上报温度数据控制指令的json字段为:"type":" Temp”,"content":" T/t (开/关)",而智能小车的温度传感器采集的温度数据上报的json字段为:"type":" Temp”,"content":" 温度值"。
3)摄像头监控画面上传
安卓APP下达的控制指令的json字段为:"type":" Video”,"content":" V/v(开/关) "。收到安卓APP下发开启摄像头控制指令后,Wrtnode开启mjpg-streamer的output_file功能,采用通过linux进程间通信-有名管道方式,将生成的视频图片通过websocket协议以二进制数据格式上报给websocket server。
图5 控制指令传输过程Fig.5 Transfer flow of Control instruction
在文献[7]基础上,我们进一步优化了这三类交互过程设计,简化json格式的控制指令,依次对应着图5所示的1-3的流程。对于监控图片数据不需要另开一个websocket server端口专门传送二进制数据,通过设置opcode数据类型可以在一个websocket server端口就能完成这三类交互过程。
1.2.2 WiFi智能小车远程控制功能设计
(1)Wrtnode收发消息
在Wrtnode中移植libwebsocket开源代码并在test-echo.c中根据上述三类交互流程进行代码修改,在回调函数callback_echo中通过LWS_ CALLBACK_CLIENT_RECEIVE接收json格式控制指令处理接收流程,对于控制小车行径、摄像头旋转、开关灯、温度传感数据上报等,需要写到串口设备文件/dev/ttyS0,由arduino读取并执行指令操作,如图6(a)所示;对于需要上报的数据,包括摄像头的监控图片数据、温度数据等,通过LWS_ CALLBACK_CLIENT_WRITEABLE处理并调用函数libwebsocket write根据消息类型分别以二进制和文本类型发送数据,如图6(b)所示。
图6 Wrtnode远程控制收发消息功能Fig.6 Remote control to Tx/Rx message
(2)Arduino处理流程
图7 Arduino处理流程Fig.7 Arduino process flow
Arduino在loop函数监听到串口有输入则根据输入指令执行对应功能,包括控制智能小车行径指令(前/后/左/右/停)、控制小车摄像头云台舵机旋转(上/下/左/右/居中)、开关LED灯、上报温度传感器数据,其控制流程如图7所示。
2 功能展示
WiFi智能小车上电时默认开启WiFi,安卓手机在接入小车WiFi后,打开APP可通过控制界面连接mjpg-streamer端口和ser2net端口,实现对小车的WiFi下的近程控制,操作界面如图8所示。
图8 WiFi状态下控制智能小车的安卓APP截图Fig.8 Android APP control GUI under WiFi
若在固定场所,WiFi智能小车可以预先设置好接入场所的固定WiFi,若在户外则需要接入4G路由器等开启的WiFi,从而接入internet并通过websocket协议连接到websocket server,该安卓APP通过连接设置界面也接入到websocket server,从而可以要求上传温度数据、远程监控小车行径等,远程控制的操作界面如图9所示。
图9 远程控制智能小车的安卓APP截图Fig.9 Android APP remote control GUI
3 结束语
在WiFi状态下近程控制智能小车基础上,我们通过websocket协议实现了使用同一个安卓APP对智能小车的远程控制功能。由于远程控制需要服务器中转,监控画面有时卡顿,可以通过增加服务器性能,降低监控画面像素等方式提升监控的流畅性。
[1] 季晓迪,罗利文.基于OpenWRT的医用无线内镜装置系统设计[J]. 电子技术应用. 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的室内安防系统的研究与设计[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的植物生长环境的监测及控制系统[J]. 现代电子技术. 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的智能门禁系统[J].科技创新与应用. 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开源硬件实现多功能智能小车[J]. 单片机与嵌入式系统应用, 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的多功能智能设备远程控制[J]. 计算机与现代化. 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年市创客专项资金学生创客项目(GRCK2015092914140517);深圳市2016年市创客专项资金个人创客项目(GRCK2016033010181365);2016年广东大学生科技创新培育项目(“攀登计划”)(pdjh2016b0711);深圳市2016年科技计划基础研究项目(JCYJ2016030710153)
陈建刚(1978-),男(汉),江西丰城人,博士,高工,主要研究方向:网络技术。 E-mail:chenjg@sziit.edu.cn