黄 莺
(柳州铁道职业技术学院 电子技术学院,广西 柳州 545616)
微电机技术、网络技术、计算机技术和嵌入式技术不断地高速发展,使得生产和管理进入了自动化、智能化和网络化时代。为了解决生产和管理中操作控制复杂的问题,适应社会新管理和控制要求,提高劳动者工作效率,嵌入式多功能小车无疑是一种高效率的工具。多功能小车由于行动模式比较简单,被广泛应用于生产、生活和救援中。目前,小车系统实现的功能大多数只有自动循迹、自动避障、测距等功能,功能较单一、集成度不高;部分小车可实现红外、无线和蓝牙控制,但缺乏远程数据传输、存储和控制;在小车行走路径引导中采用CCD摄像头传感器获取道路信息,图像信息丰富,但由于使用单片机处理,导致数据处理能力不强,图像分析速度慢、分析结果精度较低;尤其是在无人能达的恶劣环境下工作时,远程的控制几乎不可能实现[1-2]。由于智能手机的便携性和普及性,使得手机在各个领域中得到广泛应用。基于此原因,本文以小车为控制装置,采用STC公司的IAP15F2K61S2单片机为处理器核心,借助智能手机处理速度快、存储容量大的特点,该小车依托Android平台,结合各种传感器和云台摄像头,搭配WiFi无线网络传输模块,设计了嵌入式多功能小车,具有自动循迹、自动避障、手机控制、码盘测速、无线图像传输和处理等功能,使小车功能更丰富,在恶劣环境下也能实现数据信息的采集。
多功能小车车体采用四轮结构,在四个步进电机驱动下采用差动方式转向,利用左右电机的速度差控制小车的前进、后退、左转、右转;使用光电传感器电路板实现小车循迹;核心板与WiFi转串口模块连接,实现小车与上位机的数据通信和云台摄像头的图像传输;小车的前面安装有功能板,功能板上安装有光强传感器、超声波传感器,实现光强测量、距离测量和障碍物的检测。上位机控制软件采用Android平台,在谷歌第二代NEXUS 7平板安装监控软件,用于给小车发送工作命令,接收小车发送回来的图像、数据,进行处理和存储,并显示所有的数据信息。具体结构如图1所示。
图1 多功能小车结构框图
嵌入式单片机采用STC公司生产的IAP15F2K61S2型号。该单片机是增强型8051处理器,运行速度快,内置61 kB FLASH程序存储器和2048 B的SRAM、EEPROM,兼容MSC-51单片机系列,支持ISP/IAP功能,内部时钟频率5~35 MHz,内置8通道10位高速ADC和3通道捕获/比较单元,各种接口齐全,方便扩展。
循迹采用的是检测黑线的方法,本模块采用的是8个红外传感器来检测黑线。当红外传感器检测到黑线时,红外光被吸收,安装在小车上的红外接收管接收不到信号,红外传感器电路板上的LED灯灭,当检测不到黑线时,红外管接收到反射回来的红外光,输出低电平,红外传感器电路板上的LED灯亮;通过检测IO口的信号,根据IO口的信号来判定小车是否处于黑色线上或小车是否偏离黑线,并以此信号对小车进行调整。具体电路如图2所示。
图2 循迹传感器电路图
传感器的安装:本模块采用的是8个相同光电传感器,第4、5个传感器处于黑线上,黑线两边各安装3个。在调整灵敏度时,黑线两边的红外传感器的灵敏度要稍高,第4、5个传感器的灵敏度要稍低,这样有利于循迹过程中当小车偏离黑线时能进行更好的调整。
多功能小车采用四个步进电机作为小车驱动电路,电机采用的是H型桥路驱动电路,采用UL2003、L298芯片驱动步进电机工作;采用PWM技术实现对小车的调速,利用左右电机的速度差实现转向。电路实现简单,控制方便,调速范围大。由于电机驱动模块的驱动芯片需要较大电流,因此,电机驱动模块与单片机连接的引脚需设置成推挽输出,PCA模块0-2全部设置为8位PWM模式。
图3中的T1是超声波的发射探头,由TRIG控制是否发送指令,T2是超声波的接收探头,接收到的脉冲数据送入单片机的外部中断入口进行计数,同时设置内部定时器/计数器T0处于定时模式,用于计算从发射数据到接收数据的时间差,再根据公式2S=VT求得距离S=VT/2=172T,其中V是声波速度,取344 m/s,T 为时间差[3]。
图3 码盘测速测距电路原理图
多功能小车采用的是光电码盘式转速传感器,通过测量脉冲的方式求得距离和速度。具体的电路如图3所示。使用外部的中断0对光电码盘的脉冲个数进行计数,计数变量为MP,然后通过MP的个数计算出小车行进的距离,进而可以求得速度。经测知,小车的车轮直径为6.5 cm,车轮走一圈的周长为20.41 cm,使用示波器测得小车走一圈,MP数为152个,因此小车每行走1 cm,MP数量约为7。程序中可以根据MP个数来计算小车所走过的距离,把距离除以时间就可计算速度。
光强传感器模块采用的是光强传感器BH1750FVI,具有良好的光谱灵敏度、16 bit串行数据输出。光强传感器BH1750FVI是数字照度传感器,其与单片机的连接只需3个I/O口,使用I2C通讯协议实现与单片机的数据通讯[4]。具体连接电路如图4所示。
WiFi模块设置成服务器模式,协议通信设置为TCP,端口统一设置为60000,IP地址可以根据需要设定。WiFi模块通过串口方式与单片机连接,WiFi模块的WiFi_RX接到单片机的TXD,WiFi_TX接到单片机的RXD。云台摄像头配置和小车上的WiFi模块一一对应,开启摄像头和小车WiFi,摄像头自动连接WiFi。WiFi模块具体电路连接如图5所示。
多功能小车底层驱动程序主要由小车循迹程序、超声波测距、光强检测、码盘测距程序等组成。
主程序的工作流程具体是:系统通电后,单片机进行初始化,云台摄像头进行自检,与WiFi模块进行网络连接,连接成功后就进入等待接收上位机发送过来的字符,再根据指令作出相应的操作,处理结束后,就把相应的数据信息通过串口转WiFi模块发送到上位机进行处理和存储,以备查用,如图6所示。
图4 光强传感器电路图
图5 WiFi模块电路图
字符代表小车功能操作具体如表1所示。
图6 下位机工作流程图
表1 上位机与单片机通信字符控制表
3.1.1 循迹程序设计
循迹主要是依据循迹传感器模块采集的IO信息来确定的。在小车运行过程,单片机对小车各种状态进行分析,不同状态下给予不同程序的调整。小车在行走的过程中,经分析共有10种状态,具体的状态如表2所示。
表2 小车循迹控制表
根据上述10种状态,利用左右电机的速度差实现小车动作。具体循迹流程如图7所示。
3.1.2 超声波测距程序
程序中使用外部中断2和定时器/计数器T0配合共同完成超声波测距功能。当小车接收到平板电脑发送的测距指令时,单片机P35置成高电平,同时启动定时器/计数器T0,超声波发射出去,超声波在传播过程中碰到障碍物就立即返回来,当接收头接收到数据,即外部中断2发生中断,关闭定时器T0和关闭外部中断,接着进行中断处理,计算定时器T0的数值参数为wavaVal,然后调用距离计算函数并进行处理,向上位机传送数据,定时器时间差wavaVal=TH0*256+TL0,距离计算流程图如图8所示。
图7 小车循迹流程图
图8 超声波测距流程图
3.1.3 光强检测程序
光强检测采用的是BH1750芯片,与单片机的3个IO口连接就可以正常工作(SCL、SDA和ADDR分别接单片机的P14、P15和P42)。BH1750与单片机的通信使用是标准的I2C通讯协议,单片机通过I2C接口向BH1750发送各种控制命令并读取测量数据,然后对数据进行转换处理,向上位机传送数据。
3.1.4 码盘测距程序
使用外部的中断0对光电码盘的脉冲个数进行计数MP,然后通过MP的个数计算出小车行进的距离,进而可以求得速度。外部中断0的具体实现如下:void exint0()interrupt 0{MP++;}。然后再根据MP的数值计算小车前进距离,比如要使小车前进30 cm就停止,根据前文公式可以求得MP为223。实现码盘测距伪代码如下:
Begin
等待中断,并对MP进行计数
If G_Flag并且MP>223
则0→G_Flag并且调用STOP函数
End
其中G_Flag是小车前进的标志位,STOP代表的是让小车停止。
Android操作系统是一个自由、开源的系统,具有资源丰富的特点,广泛应用于便携设备中,具有广阔的应用前景[5]。上位机是在Eclipse开发软件下结合SDK进行开发的。上位机主要有WiFi连接功能、按钮控制、数据显示等功能。上位机通过WiFi连接功能与小车上的WiFi模块进行连接,通过WiFi网络向下位机发送相应的控制字符命令,下位机接收到此控制字符命令后进行验证并返回一个数值,上位机根据数值判定连接是否成功。连接成功后点击上位机监控软件中的按钮,通过WiFi网络向下位机发送相应的控制命令,下位机接收到控制命令并解析后会执行相应的操作,实现对小车的控制,在进行控制的同时向上位机发送数据信息和状态信息,上位机对数据信息和状态信息进行处理并显示、保存[6-7]。具体工作流程如图9所示。
图9 上位机工作流程图
对于上位机通过WiFi网络向下位机发送“photo”命令,下位机接收到此命令后通过WiFi模块向云台摄像头发送拍照命令,云台摄像头拍照成功后会通过WiFi模块向上位机无线发送图片,并完成图片颜色识别同时把处理结果向下位机发送,以实现对小车的控制。颜色识别过程可以描述为:先获取图片得到图片的宽和高,判定图片上各点的像素值,接着对像素进行分离得到RGB的值,再对RGB进行判定,如果R像素比较多,就判断为红色,如果G像素比较多,就判断为绿色,否则就判断为蓝色。
图10 平板控制软件运行图
测试前先使用下载线把下位机程序下载至下位机单片机中,把小车放到指定的赛道上。通过安装在平板电脑上的软件,点击相应的按钮,可以发送相应的命令实现小车的前进、倒退、左转、右转、停止、高速、中速、低速、拍照、颜色识别和测距等功能。平板电脑软件运行效果图如图10所示,小车实物图如图11所示。
图11 小车实物运行图
点击上位机的“循迹”,“前进”,“倒退”,“左转”,“右转”,“停车”,选择“速度档”中“高速”、“中速”、“低速”,“倒车”,“拍照”,“颜色识别”等按钮100次,观察小车运动控制的情况,计算出准确率。点击“摄像头”按钮一次,摄像头会转动90°,再按一次,摄像头会旋转到初始角度,重复这样的过程100次,观察摄像头旋转的准确率。
具体功能测试结果如表3所示。
表3 测试情况表
测试结果表明,点击上位机的“循迹”,“前进”,“倒退”,“左转”,“右转”,“停车”,选择“速度档”中“高速”、“中速”、“低速”,“倒车”,“拍照”,“颜色识别”和“摄像头”等按钮,系统都能正确执行相应的功能,准确率都在95%以上。经过分析,由于平板电脑与小车上的WiFi模块网络连接偶尔会断线,导致无法控制小车运动;颜色识别准确率则是与摄像头拍摄图片的距离有一定关系,距离过近,拍摄的图片易出现色差,导致颜色识别准确率降低。总之,本文设计的运用Android系统控制的多功能小车系统,具有良好的操控性和实用性,小车工作稳定,界面直观友好,实时性较好。
[1]葛广军,杨帆.基于单片机的智能小车控制系统设计[J].河南城建学院学报,2011(3):47-50.
[2]孙青.基于嵌入式控制系统的自动导引小车设计与实现[D].南京理工大学,2010.
[3]侯益坤,侯聪玲,刘益标.基于ARM嵌入式的智能小车的控制系统设计[J].机电工程技术,2010(1):21-23,105.
[4]王建,毛腾飞,陈英革.基于BH1750芯片的测光系统设计与实现[J].常熟理工学院学报,2011,25(2):117-120.
[5]徐诚.零点起飞学Android开发[M].北京:清华大学出版社,2013:2-3.
[6]朱丹峰,葛主冉,林晓雷.基于Android平台的无线遥控智能小车[J].电子器件,2013,36(3):408-412
[7]林长青,成海量.基于Android系统和蓝牙通信的手机遥控车设计[J].山西电子技术,2012(3):56-58.