面向虚拟游戏拓展的智能小车设计
2018-07-27,,,,
, , ,,
(重庆师范大学 物理与电子工程学院,重庆 401331)
0 引言
随着科学技术的不断发展,人工智能技术[1]与移动互联网[2-3]的结合达到前所未有的高度。随着无线网络技术的发展,网络游戏[4]的硬件将向无线信息终端大拓展,可以通过笔记本电脑或手机来进行网络游戏。但传统游戏方式缺乏真实体验感。因此实现游戏的真实体验感是目前玩家新的需求。
基于Android 平台设计的互联网智能小车已经越来越受到研究者的青睐,汤莉莉等人[5]把把蓝牙、无线电子技术、单片机技术和Android移动终端平台结合在一起,利用APP界面的“按钮”、重力、语音分别控制改变小车运动状态。但是小车控制有虚拟按键、重力、语音三种控制方式,导致Android手机客户端的APP在Eclipse 开发环境中编程难度较大。董涛等人[6]以玩具小车为车体,STC89C52单片机为整个系统的控制核心,采用IRM-2638红外一体接收头接收控制信号实现对小车的控制,但是缺乏像APP那样灵活的对小车进行控制。朱丹峰等人[7]用蓝牙和WIFI两种遥控方式,硬件上以STC12C5A60S2单片机为核心,其他用Android设备、WIFI模块和小车蓝牙模块HC06、摄像头模块、直流电机驱动模块等硬件平台;软件上用Android应用程序开发环境Eclipse进行上位机设备程序开发,从而实现了一种新型无线控制智能小车的方法,但是开发环境Eclipse中编程难度较大。
本设计采用MIT APP Inventer[8]进行手机APP界面设计及编程,开发方式采用图形化编程,不需要开发者有JAVA编程经验,有效减小了初学者开发APP的难度。系统以STM32F103C8T6单片机为核心,由HC06蓝牙模块、电机驱动模块、电机电流监控模块、舵机转向模块等组成。小车的控制信号通过操作手机由手机的重力传感器[9]得到信号,再由蓝牙[10]将控制信号传给小车,最终达到利用蓝牙无线通信技术让虚拟游戏和传统的玩具小车相结合进而控制小车,最终实现人机网络游戏交互,体现游戏真实体验感,为将来虚拟游戏提供设计和方案。
1 系统方案设计
从整体设计来看,智能小车控制系统由电源模块、控制器、电机驱动模块、电机电流监控模块、蓝牙模块、模拟舵机模块、安卓手机APP组成。图1为系统整体框图。
安卓手机APP将手机的方位状态转化为数据帧通过蓝牙发送到小车的蓝牙模块,小车的控制器接收蓝牙模块的数据帧之后,提取其中的指令来控制直流电机和模拟舵机,电流检测模块时刻监控电机电流。在电源模块中,锂电池经降压模块处理后为各个模块提供所需要的电源。
本系统的设计目标如下:
1)通过控制手机的方向,来改变手机上APP画布的小球坐标的位置,通过蓝牙模块来控制智能小车的转向、转速等;
2)在改变控制手机与智能小车的距离时,通过手机向智能小车发送指令,测量小车接收到指令的准确度;
3)智能小车在遇到故障时,通过电流监测模块,能够自动断电,进而停止运行。
2 硬件电路设计
2.1 系统电源设计
电源是整个电路的动力,其中需要供电的硬件电路模块包括:蓝牙模块、单片机、电机驱动模块、模拟舵机转向模块。如图2所示。
图2 系统电源电路
系统设计中采用7.2 V/2 000 mAh充电电池包作为整个系统电源。其中图2MC7805CD2T电源芯片将7.2 V的电源电压转化为5 V电压,为蓝牙模块、电机驱动模块、模拟舵机转向模块供电。电路中AMS1117-3.3电源芯片将5 V电压转化为3.3 V电压为单片机供电。经过对系统测试,单片机信号输出稳定,直流电机工作正常。
2.2 蓝牙通信模块的选择
在蓝牙模块设计中,采用 HC-06 无线模块与单片机相连。HC-06 模块采用 CSR 公司的主流蓝牙芯片,遵循蓝牙 V2.0协议标准,可以在 30 米范围内实现无线通信,模块尺寸为 3.57 cm×1.52 cm,共有 4 个引脚,即 VCC、GND、RXD、TXD,可以很方便地与手机等蓝牙设备进行无线连接,在具有蓝牙通信功能的设备中广泛使用。HC-06蓝牙通信模块具有低功耗、低成本、高性能无线收发系统等特征。模块与单片机通过串口互相通信,使用AT指令设置蓝牙模块的参数。在工作前,HC-06可以一直搜索上一次配对的从机,直到搜索完成并配对成功为止。
2.3 控制器的选择
设计中采用智能手机APP通过蓝牙模块传输给单片机,根据设计要求综合考虑,单片机采用STM公司的STM32F103C8T6芯片(STM32系列芯片特点在于高性能、低成本、低功耗,其分为3种不同作用的类型, STM32F101系列属于基本型,其中包含了最基本的STM32芯片功能。STM32F105、STM32F107“互联型”系列。STM32F103系列属于增强型,增强型系列时钟频率达到72 MHz,是同类产品中性能最高的产品。STM32F103C8T6是F103系列单片机成本最低,封装最小的单片机)来实现对小车的控制。单片机串口的RXD、TXD分别与蓝牙串口的TXD、RXD引脚相连。单片机PA6、PA7与电机驱动模块INTX连接,其中PA6与INT1、INT4相连,PA7与INT2、INT3相连。电机驱动芯片使能端由单片机PB12、PB13控制。
2.4 电机驱动及电流监测模块
本设计所选用的电机型号RS-540RH/SH的直流微型电机。其中电机驱动模块应用电路如图3,采用L298N电机驱动芯片并联扩流驱动电路的方式如图4,增大电机驱动芯片的驱动电流,使小车可以获得更高的速度。驱动芯片的输出端加上四个二极管可以防止电机产生的感应电动势损坏驱动芯片内部电路,有效的保护电路。电源旁边加上一个大容量的电容是为了在电机启动瞬间,提供瞬时电压,避免系统电压被拉低时,影响系统正常工作。
图3 电机驱动电路
图4 并联扩流电路
在电机驱动模块中,当驱动芯片的PB12、PB13为高电平时,使能驱动芯片;当PB12、PB13端口输入低电平时,驱动芯片停止工作。PA5端口输入高电平,PA7端口输入低电平时,OUT1、OUT4端口输出高电平,OUT2、OUT3端口输出低电平,电机正转;当驱动芯片的PA5端口输入低电平,PA7端口输入高电平时,OUT2、OUT3端口输出高电平,OUT1、OUT4端口输出低电平,电机反转。
2.5 电流监测模块
在电流监测模块中,电机电流监控方案是基于驱动芯片L298N所设计,通过查阅L298N芯片手册得知,流过电机的电流最终都会从ISEN A和ISENB两个端口流出到地。在电流输出端串联一个采样电阻,通过获取采样电阻的电压进而计算出电机的电流值。采样电阻的电压采样端接电压跟随器,再通过二阶RC无源滤波滤除干扰信号,最后通过单片机内部模数转换器(ADC)读取电压值。
图5 电流监测电路
当小车行进过程中,因故障电机无法转动,流过电机的电流将会迅速增大,控制器通过电机电流监控电路判断电流过大立即使图5中的PB12、PB13端口输入低电平,使驱动芯片停止工作。
2.6 舵机转向控制模块
智能小车的转向是由舵机控制的。本设计选用FutabaS3010舵机作为其控制器,其舵机能输出力矩来驱动智能小车。图6为舵机模块电路,舵机共有三接口,分别为电源接口、信号接口PB7(图6)以及地线。控制器 STM32F103的端口PB7直接与舵机的信号端口PB7(图6)相连,由控制器端口PB7输出的PWM波来控制舵机的转向。该舵机为模拟电路控制舵机,信号处于高电平时长来控制舵机的转向角度,进而改变前轮的朝向,从而实现小车的转向。舵机的转角只与高电平脉冲宽度有关,与占空比无关。
图6 舵机模块电路
3 软件设计
3.1 APP组件
本设计中的手机APP是谷歌公司致力于完全在线的可视化编程而打造的一项Andruino手机应用程序开发工具。该APP具有以下几个特点:(1) 能够在线开发;(2)可视化界面设计;(3)积木式编程界面;(4)MIT AppInventor平台提供了在线模拟功能[11]。
基于上述优势,本设计选用该APP,APP的设计分为两个过程如图7:界面的设计和功能的设计。其中界面的设计包括开机动画如图8和演示动画9,首先在MIT APP Inventer2中添加一个项目,添加两个屏幕,在开机动画屏幕中拖两个“水平布局”的组件放置在屏幕的上下方,并且使两个组件宽度刚好充满整个屏幕,高度适中。将视频播放器拖进屏幕上方的水平布局中,使高度、宽度充满水平布局,然后在视频播放器的源文件中插入选好的视频。在屏幕下方的水平布局中拖进去按钮,按钮的背景插入图像,文本输入“start”。再拖一个计时器,用来控制视频的起始和终止。
图7 逻辑设计图
图8 小车APP启动界面
图9 演示屏幕
在演示动画屏幕中拖一个画布组件,放在屏幕左上角并占整个屏幕的80%,再分别把方向传感器、蓝牙服务器拖在屏幕中,将球形精灵组件拖到画布中,球形精灵的X、Y坐标分别设置为方向传感器的倾斜角和翻转角。在屏幕下方放“灵动小车……”按钮,在按钮下方并列放置两个文本,其中左边文本显示倾斜角转化为X方向数据,右边文本显示翻转角转化为Y方向数据。在屏幕右侧拖4个按键,按键的文本分别为“Blue”、“Exit”、“Done”、“ CCD”,其中“Blue”表示APP与蓝牙建立连接,“Exit”表示退出软件界面。
3.2 蓝牙指令接收
主控器的设计软件的开发环境是RealView MDK,本控制系统采用Keil MDK uVision keil5进行软件设计,它不仅支持C语言,而且还支持在线仿真调试。这些功能都是经过uVision集成在一起,对于初学者来说是很容易入门的。
以下设计是基于上述特点所选择的开发环境,蓝牙模块与控制器采用串口方式通信,程序配置为串口中断模式。当串口接收到数据时,将串口接收到的数据从第一位开始依次存在一个数组中。当串口接收到的字符为换行符’ ’时,表示指令已经接收完毕,下一个数据又从数组的第一位开始存。指令接收完成之后,程序提取数组中的指令执行对应的操作。指令数据据帧格式及其含义如表1所示。
表1 数据帧格式及其含义
上述表1中从左到右看到各个蓝牙指令码的含义,“AB01”表示用户密码,“CQNU0001”表示用户名,“A”表示动作命令,“090”表示转向角度值,“50”表示速度值。
3.3 电机驱动
对于普通直流电机,其控制方法比较简单,可采用PWM调速方法。PWM调速就是使加在直流电机两端的电压为方波形式,加在电机两端的电压就在VLoad和0 V之间不停的跳变,加在电机两端的平均电压Uo=Th/(Th+Tl)VLoad,可以通过调整PWM的占空比来改变Th和Tl的比值。这样就可以通过PWM调节加在电机两端的平均电压,从而改变电机的转速。
当驱动芯片输入端PA5(图3)输入PWM信号,输入端PA7(图3)为低电平,电机正转;当驱动芯片输入端PA7(图3)输入PWM信号,输入端PA5(图3)为低电平,电机反转。电机的转速由PWM信号的占空比决定,也就是指令中的速度值。当指令速度值为50时,程序将PWM信号占空比设置为50%,电机转速为最大速度的50%。PWM信号的频率不能过高,过高会因为电机驱动芯片内部开关响应延迟而不能改变电机转速。本设计中PWM脉冲信号的频率为50 Hz。
3.4 舵机控制
舵机的控制信号是一个脉宽调制(PWM)信号,所以很方便的和数字系统进行接口,只要能产生标准的控制信号的数字设备都可以用来控制舵机。
本设计采用的核心控制器是STM32F103单片机,通过单片机的输出端PB7(图6)与舵机控制接口直接相连接。在端口PB7(图6)为高电平(通过延时函数来控制)期间时,舵机的转向就从0°~180°之间变化。根据舵机(Futaba S3010)数据手册,舵机接口的高电平持续时间与转向角有如下关系:当高电平的持续时间为1 520 μs时,舵机的转向一定处于最中间的位置;当高电平的持续时间为920 μs时,舵机的转向一定处于最左的位置;当高电平的持续时间为2 120 μs时,舵机的转向一定处于最右的位置。随着PB7(图6)端口的高电平的持续时间从920 μs~2 120 μs变化时,舵机的转向也从0°到180°之间相应变化,进而达到控制舵机的转向。
4 测试与分析
如图10所示为APP控制智能小车正面与侧面的实物图,该实物图以STM32F103C8T6单片机为控制核心,由HC06蓝牙模块、电机驱动模块、电机电流监控模块、舵机转向模块等硬件模块组合而成。
图10 小车实物图
在搭建好如图10所示硬件平台的条件下,接着就是在Android手机上启动MIT App Inventor应用程序,软件的控制界面如图11所示。从图11的(a)、(b)、(c)、(d)界面图中均可以看到一个小球,当小球处于界面不同位置时,相应的手机APP的重力感应方向不一样,进而控制智能小车的不同运动状态。同时也可以从图11中看到标有坐标数值的标志,取图11(a)中的坐标数值(75 80)为例,其中“75”表示小球前轮转向角度为75°,这个转向角度是由舵机控制的,控制着智能小车的转向,“80”表示小车后轮速度占最大的百分比为80%。结合图11界面中的红色小球和坐标数值的标志,就可以控制智能小车所需要达到速度和转向。在控制小车之前,需要触摸图11(a)中的“BLU”按钮,智能小车与手机APP之间建立连接(“BLU”的功能在3.1、3.2中已详细表述)。当手机的倾斜方向为右前方时,APP画布中的小球在画布的左上角,此时智能小车向右前方行驶。根据图10中的四种界面情况,智能小车的运动状态详细总结在表2中。智能小车运动状态的控制基本已实现。
图11 小车运动方向及坐标数值监控
表2 手机倾斜方向与小车运动状态关系
以下是在空旷的足球场上改变手机APP和智能小车的距离时,测试智能小车从手机APP发送指令数与智能小车接收到指令数的准确性,测试的结果如表3,其中在20(20)中,“20”表示手机APP发出的指令数,“(20)”表示智能小车在手机APP发送指令数为20时,接收到指令正确数为20。从表3分析可以看出,在手机APP与智能小车相距为0~30 m范围内,智能小车接收指令码基本无误。但在距离为36 m及以上时,智能小车出现接收指令码错误现象。但从表3整体来看,在距离为40 m范围内,智能小车接收到手机APP指令的准确率高达97.1%,随着距离的增加,在距离为48 m时,在手机APP手机发送20个指令的条件下,智能小车只能接收到2个正确指令,可见控制范围明显受限。但由于软件设计存在延时,设计的算法未能很好地实现对数据的处理和发送,因此本设计还可进一步优化,但不会影响小车的运动状态,最终能达到预期的要求。
表3 不同距离控制指令准确性测试
5 结论
本设计采用MIT APP Inventer进行手机APP界面设计及编程,论述了整个设计软硬件的实现过程,经过测试,设计的上位机软件能够通过手机终端顺利安装并流畅运行,实时、无错的控制小车的运动状态,用手机和软件的形式代替玩具业的遥控器,最终实现人机网络游戏交互,实现游戏真实体验感,为将来虚拟游戏提供设计和方案。