智能手机远程控制的探测小车设计与实现
2019-04-04康玉忠何拥军曾文权余君
康玉忠, 何拥军, 曾文权, 余君
(广东科学技术职业学院 1. 计算机学院;2. 大数据与人工智能学院,珠海 519090)
0 引言
随着移动互联网技术的不断发展,移动智能手机控制技术已经在生活中得到广泛应用[1、2]。多功能智能探测小车以Android手机应用程序APP为客户端,借助WIFI无线通信技术[3-4],设计制作的移动小车作为服务器端接收手机命令信号,分析控制命令,并驱动小车行进,将车载探测采集的数据实时传到手机APP显示。
1 系统设计
1.1 系统硬件结构
系统由S5pv210芯片系统模块、智能手机终端系统模块和WiFi通信系统模块三大部分组成。硬件部分是以S5pv210芯片为核心作为开发平台,任务驱动板集成小车行驶驱动、无线网卡、摄像头以及超声波、温湿度、LED灯和蜂鸣器等组成,开发手机APP、ARM程序以及通信程序,小车实现手机语音、重力遥控、程序定制路径和自动行驶等行走控制,并实现小车探测的数据采集、拍照、照明和警报等功能,系统结构如图1所示。
1.2 系统软件结构
系统以嵌入式Linux为软件开发平台,设有控制服务器和视频服务器。在硬件平台上,车载探测传感器程序控制采集信号,控制服务器主要接受客户端发送的控制请求,并执行采集数据等操作,如小车的行驶方式控制命令、声音交互唤醒命令、舵机转动操控命令、温湿度命令等操作。选用面向连接的、可靠的传输的TCP 协议[5],利用 socket 网络通信技术(TCP 协议)进行数据传输。设置 mjpg-streamer视频服务器,从摄像头获取视频流,并利用网络(UDP 协议)将视频流发送到客户端,从而达到视频实时监控。系统软件架构如图2所示。
2 行驶驱动电路及程序设计
小车行驶驱动设计采用履带式传动机构,该机构结构稳定,与地面接触面积大,具有良好的越野能力。主控板通过对驱动L298N芯片的控制实现对履带两后轮直流电机的控制,L298N是专门用来驱动两相及四相电机的,它的输入端能够接收标准TTL电平信号,输出端包含两个H桥的大电压大电流双全桥式驱动器。行驶电机驱动电路图如图3所示。
图1 系统结构图
图2 系统软件结构
图3 行驶电机驱动控制电路图
小车的转向控制由控制两个后轮驱动直流电机正反转而控制转向的,其中 OUT1、OUT2 和 OUT3、OUT4 之间分别接小车后轮驱动电动机。IN1、IN2、IN3、IN4 引脚从开发板的 GPIO 接口输入控制电平,电机转动状态编码如表1所示。
表1 小车电机转动状态编码
根据小车电机转动状态编码,分别对INT1、IN2、IN3、IN4给予不同的高低电平,从而控制小车的行驶。
3 车载数据采集
3.1 温湿度传感
探测小车通过接口可灵活加载传感器,如温湿度、瓦斯传感器等,采集数据在手机端进行计算处理、存储、显示、记录等,加载DHT11温湿度采集模块。检测温湿度是采用了DHT11温湿度模块,工作电压3.3-5 V,模板尺寸:3.2 cm*1.4 cm,湿度测量范围为:20%-95%(误差为+-5%),温度测量范围:0°C -50°C(误差为+-2°C)。在小车上添加温湿度检测功能必须要编写该驱动代码,本小车采用的交叉编译工具链为gcc-4.4.4.tar.bz2,linux内核版本为linux-2.6.35.7-gec-v3.0.3.tar,编写驱动代码。
3.2 云台舵机控制
探测小车的视频采集采用全景360度拍摄,为实现功能由摄像头模块、云台舵机模块组成。
视频采集摄像头模块选择OV9650一款CMOS彩色图像传感器芯片,共有1300×1028像素, CMOS传感器具有低噪声和高灵敏度特点,且集成度高、体积小、功耗低、编程方便、易于控制等优点,接口电路将图像信号进行A/D转换和处理,传送到处理器的CAMIF,微系统核心模块通过I2C串行总线实现对传感器的控制。
云台舵机控制摄像头转动实现全景360度拍摄,采用双轴舵机驱动控制水平方向上旋转和垂直上下仰角转动,云台舵机控制电路图如图4所示。
图4 云台舵机控制电路图
水平舵机采用28BYJ48步进电机驱动,由采用核心板芯片GPIO输出信号经ULN2003芯片驱动电机旋转,程序按步距精确地控制水平转角。转子齿为50齿的四相电机,在八拍运行时,步距角为θ=360度/(50*8)=0.9度,每接收一个脉冲信号转过0.9°。
云台舵机垂直仰角的转动,采用sg90舵机直接连接核心板芯片GPIO,连续的PWM的方波控制信号经sg90舵机内信号调制芯片,获得直流偏置电压,它内部有一个基准电路,产生周期为20 ms,宽度为1.5 ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出,电压差的正负值决定电机的正反转,由内部驱动电路驱动电机旋转,当电机转动带动内部级联减速齿轮旋转,调节电位器电阻值使得电压差为0,舵机停止转动。通过程序使核心板芯片GPIO输出可调占空比PWM的方波来整舵机的垂直转角。
3.3 视频采集
视频采集采用了一种开源视频服务器软件MJPG-streamer 完成多媒体数据的处理及存储,采用的 V4L2 架构采集视频,每采集到一帧数据,就将该数据进行预处理并压缩编码为H.264 格式,然后,选择UDP网络协议传输视频,采用FFmpeg 进行视频格式转换处理,将视频格式进行转化后在手机屏上显示。
基于该软件的特点和体系结构,通过修改MJPG-streamer 的源代码,添加新的功能模块,以增强这款软件的功能。并重新交叉编译后,移植到嵌入式系统中,以实现一个可控制前端设备的基于Arm8 的嵌入式远程视频监控系统。mjpg-streamer源码可以从官网上下:http://sourceforge.net/projects/mjpg-streamer/从官网上获取mjpg-streamer的源码后,通过arm的4.5.1工具链对源码进行交叉编译,把所生产的mjpg-streamer库文件移植到小车的/lib目录上,启动mjpg-streamer服务器./mjpg_streamer -i "./input_uvc.so -y" -o"./output_http.so - w ./www"当视频服务启动完毕后,该服务会不断的采集视频数据并上传到网络中,用户只需要访问该网络的端口与IP地址则能获取图像数据。
4 软件整体设计
手机应用程序利用eclipse开发工具进行研发,Andriod控制软件程序流程如图5所示。
图5 Andriod控制软件程序流程
程序采用多线程的设计模式,UI线程为主线程,子线程分别为视频处理线程和指令数据发送线程。程序开始时设置运行相关参数,以建立客户端与服务器之间的网络连接,如IP地址、端口号,进入主程序,APP数据处理模块利用手机进行采集数据存储、语音识别等处理,进入视频处理子线程,采用UDP协议通信,读取数据缓冲区中的视频数据,由SurfaceView类绘制并实时显示视频。主程序控制UI主线程用于用户交互操作,传送指令或采集数据,当用户触发事件时,监听组件根据响应发送指令子线程,通过Socket发送程序命令控制字(用户的指令意图编制的指令数组数据),ARM芯片获取及解析指令,输出控制信号并执行相应的操作或采集数据。
4.1 基于TCP协议的Socket编程
在探测小车通信设计中,手机通过WiFi与小车端进行数据传输,从而达到控制小车的行驶和采集数据。采用雷凌RT3070 无线网卡,以AP接入方式组建无线网络,与S5pv210核心板主控制器进行通信,WiFi其覆盖范围半径超过一百米以上,可覆盖无供电、无网络的救援、探测的特殊场所。
在系统中TCP 协议发送由 Socket 套接字编程来实现,应用程序通过“套接字”向移动小车发出指令控制信息或采集数据。服务端与客户端通讯程序的设计流程如图6所示。
图6 Socket编程设计流程
服务器端先初始化Socket,将Socket与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。客户端初始化Socket,如果有申请连接服务器(connect),如果建立连接成功,客户端发送数据请求,服务器端接收请求并向客户端发送数据。
4.2 手机软件UI界面设计
手机应用程序利用eclipse开发工具进行研发,手机APP程序通过事件屏幕触发事件向小车硬件发送指令,用户通过小车反馈信息或实际位置,实时操控手机界面进行行驶及测控操作,智能小车手机端操控UI界面如图7所示。
4.3 虚拟摇杆控制
手机上app的界面中定义了一个虚拟摇杆控件,以圆形区域设计摇杆,从45度开始,范围是90度,划一等份,将整个圆形摇杆分为四等份,分别对应左下右上四个方位,当用户在手机屏上触摸虚拟控制摇时,根据触摸区域的座标,调用小车前后左右行走指令,从而控制小车行走。
4.4 语音唤醒操控
开启语音模式适用于繁忙用户,可以直接口述指令集的相应指令就能操控小车,操作简单。用户向手机APP口述相应的指令如表2所示。
程序调用了科大讯飞的语音唤醒开源码,根据用户口述指令,手机程序经语音检测、噪声抑制、特征提取、解码器等模块,识别判断口述的指令结果[8],手机的语音唤醒功能根据指令结果给小车下达相应的执行命令。
4.5 重力感应操控
开启重力模式时,根据手机app的偏斜角度来实现探测小车的行驶功能。以手机端水平摆放时为标准,当手机前倾、后倾、左右倾时对应前后左右四个方位,从而可以根据手机实时倾斜情况达到探测小车的行驶功能。先在程序中注册一个重力传感器并注册监听器,通过倾斜手机的方向来改变想x,y,z轴的加速度来控制方向,由于智能探测小车只需要实现前后左右4个方向,即不改变z轴加速度的情况下,根据判断x,y轴的加速度来调用的小车的四个方向指令,从而实现小车的行走。
图7 手机操控UI界面图
表2 指令集
5 小车运行测试
探测小车实现了360°全景拍摄,通过摄像头、温湿度传感器采集数据在手机端进行计算处理、存储、显示、记录等,手机APP界面上,显示视频和温湿度数字记录如图8所示,浮窗显示采集温湿度绘成折线图如下图9所示。
图8 采集视频和温湿度
图9 采集视频和温湿度折线图
[1] 郭志涛, 韩海净,孔江浩, 等. 基于Android移动终端的多功能视频监控系统设计[J].现代电子技术, 2018,41(16):96-99.
[2] 张琪,宋爱国.基于Android的小型移动机器人远程控制系统设计[J].电子测量技术,2017,40(12):33-36.
[3] 张萍,陈国壮,候云雷,等. 基于Android平台的WIFI遥控智能小车的设计[J],计算机测量与控制,2018,26(6):189-191
[4] 聂茹. 基于Android手机蓝牙控制的智能小车设计与实现[J], 微型电脑应用,2015(9):68-69
[5] 罗刘敏,王明霞, 郭艳花,等. 基于单片机的智能小车控制系统设计[J]. 仪表技术与传感器, 2018(1):123-126.
[6] 戈惠梅,徐晓慧,顾志华, 等. 基于Arduino的智能小车避障系统的设计[J]. 现代电子技术,2014,37(11): 118-120.
[7] 蔡卓凡. 基于多超声波传感器避障机器人小车的设计[J]. 自动化技术与应用,2014, 33(5):86-88.
[8] 黄丽雯,韩荣荣,宋江敏,基于 Arduino /Android的语音控制小车设计[J]. 实验室研究与探索,2015,34(12):53-55.