杨瑞东, 杨连军, 王云峰, 张海英
(1.中国科学院 微电子研究所 新一代通信射频芯片技术北京市重点实验室,北京 100029;2.中国科学院大学 微电子学院,北京 100049)
近年来,随着关于无人驾驶技术的报道增多,越来越多的企业、科研机构将目光投向了该新兴行业。无人驾驶是通过车载的传感器系统来感知车辆周边的环境信息,并将收集到的车辆位置、道路位置和障碍物等信息输入到车辆的智能控制决策系统,进而控制车辆的速度和转向,模拟人类驾驶车辆的行为,安全的行驶[1]。无人驾驶在城市公共交通、旅游和军事等方面均有重要的应用。
无人驾驶的研究重点主要包括道路识别、障碍物监测和自动导航等方面,对智能小车的研究是突破无人驾驶技术的关键。本文提出了一种基于Android系统的自动寻找路线,躲避障碍物的智能小车。以主流的Android系统终端作为远程控制端,通过蓝牙功能对小车进行无线控制,并且实时收集小车的状态信息在Android终端进行显示。主体以单片机AT89C52为核心,通过5路红外模块循迹,超声波模块避障,霍尔元件测速,蓝牙模块和Android终端通信。通过Android终端的控制,智能小车可以在遥控模式和自动行驶模式下工作。
整个系统分为两个部分:控制终端和小车主体。控制终端采用Android系统的客户端对小车进行无线控制和信息显示。小车主体包括各种用来获取外部环境信息的传感器模块以及电机驱动模块。具体分为以下几个部分:电源模块、电机驱动模块、循迹模块、避障模块、测速模块和无线通信模块。总体硬件框图如图1所示。
图1 系统总体设计框架
AT89C52单片机的工作电压为5 V,因此需要一个电路提供稳定的5 V电压。采用单电源7.2 V可充电Ni-MH电池供电,电机直接提供7.2 V的电压,单片机系统经LM7805稳压后,提供5 V的稳定电压。输入电压一般要求大于7 V,小于35 V,输出5 V稳定电压,最大输出电流1.5 A。图2为稳压电路,其中的两个电容器用于滤波。
图2 LM7805稳压电路
采用集成电机驱动芯片L298N[2]作为系统的电机驱动电路。调试时程序输入对应的码值,能够实现对应的动作。表1为其使能(ENA,ENB)、输入引脚(IN1~IN4)和输出引脚的逻辑关系,通过单片机的I/O控制IN1~IN4的高、低电平,可以控制电机的正、反转及停止[3]。该调速方式调速特性优良、调整平滑、调速范围广、过载能力大,而且能承受频繁的负载冲击。
表1 L298N的逻辑功能
L298N分别由5 V和7.2 V供电,通过控制4个输入端控制输出电平驱动电机转动,电机采用脉宽调制(pulse width modulation,PWM)的方式进行调速。图3为L298N驱动原理。
图3 L298N电机驱动原理
采用5只TCRT5000红外对管组成循迹单元。传感器采用高发射功率红外光电二极管和高灵敏度光电晶体管组成,输出信号经施密特电路整形,稳定可靠。红外光电二极管不断地反射出红外线,当遇到黑线时,发射的红外线未反射回来或反射回来但强度较小,光敏三级管一直处于截止状态;当遇到白线时,发射的红外线反射回来,光敏三级管处于导通状态。因此,可以在接收头加电压比较器,通过高、低电平判断白线或者黑线。
5个红外对管TCRT5000采集的信号经LM339放大后送到单片机P10~P14口,进而判断5只红外传感器对应的白线或黑线,判断小车当前所处位置[4]。图4为循迹原理。调节R12的大小可以得到合适的电压,供输出信号与之比较。
图4 循迹原理
避障部分采用HC—SR04超声波测距模块实现。为了提高避障精度,采用3路超声波在3个方向探测障碍物,在小车的前方中部探测正前方障碍物,在小车的左右两侧分别交叉探测右前方和左前方的障碍物。HC—SR04超声波测距模块可提供 2~400 cm的非接触式距离感测功能,测距精度高达3 mm。模块包括超声波发射器、接收器与控制电路。其基本工作原理为:1)采用I/O 口TRIG 触发测距,提供最少10 μs 的高电平信呈;2)模块自动发送8个40 kHz 的方波,自动检测是否有信号返回,如果有信号返回,通过I/O 口ECHO输出一个高电平,高电平持续的时间即为超声波从发射到返回的时间[5]。测试距离=(高电平时间×声速(340 m/s))/2。
测速模块采用霍尔元件A44E。测速时只需在转轴的圆周粘上一粒磁钢,使霍尔元件靠近磁钢,信号为输出,转轴旋转时,不断地产生脉冲信号输出。如果在圆周上粘上多粒磁钢,可得多个脉冲输出,将输出信号送到外部中断,单片机即可检测到脉冲信号。利用霍尔测速,仅需在车轮上安装几块小的磁铁,容易实现,且霍尔元件检测脉冲原理简单,易于编程。图5为霍尔测速原理。
图5 霍尔测速原理
蓝牙通信采用HC—06蓝牙模块与Android客户端进行信息传输。蓝牙模块与单片机通过串口连接,蓝牙模块将Android终端的无线信号转换为单片机的串口信号,使单片机可以与Android终端直接进行串口通信[6]。由于蓝牙模块采用3.3 V的供电电源,故采用LM1117—3.3搭建了降压电路。HC—06蓝牙模块为支持蓝牙协议2.0的CSR系列主控蓝牙芯片,工作电流40 mA,波特率默认9 600,可以与Android设备进行蓝牙配对连接。
系统中小车的循迹功能设计为在地面上铺设2 cm的黑色胶带,小车沿黑色胶带的轨迹行走。与传统的3路循迹不同,本系统循迹模块采用5个红外对管构成5路循迹,成排排列在小车底盘前部[7]。每个红外模块检测到黑色时返回高电平,检测到白线时返回低电平。单片机根据检测的5个红外对管返回的高低电平结果判断小车相对黑线所处的位置。当非中间的红外对管检测到黑线时说明小车偏离正常的轨迹,需要进行转向操作。采用5路红外对管的原因是为了防止速度过快时偏离轨迹无法及时矫正方向,最左边和最右边的红外对管是最后一层保障。表2为循迹算法,“1”表示检测到黑线,“0”表示未检测到黑线。
表2 循迹算法
在PWM驱动控制的系统中,按固定的频率接通和断开电源,并根据需要改变一个周期内“接通”和“断开”时间的长短,通过改变直流电机电枢上电压的“占空比”来改变平均电压的大小,实现电机转速控制[8]。占空比计算公式为D=t1/T,t1为高电平时间,T为脉冲周期,D为占空比。如图6为电枢电压占空比和平均电压的关系。
图6 电枢电压占空比和平均电压的关系
系统软件分为上位机Android客户端和下位机AT89C52[9]的软件设计。系统整体程序流程如图7。
图7 系统程序流程
使用Keil软件开发单片机程序,程序运行时首先进行初始化,如打开定时器和外部中断等。定时器可用于超声波模块测距。主程序置于死循环中不断检测上位机软件Android设备发来的控制信息,进行相应的行为响应。
系统在Android设备上开发了一个对小车进行控制的应用程序(APP),利用Android设备的蓝牙功能和小车上的HC—06蓝牙模块进行无线通信[10]。APP使用Eclipse软件进行开发,主要设计控制界面,包括开启自动行驶,关闭自动行驶以及前进、后退、左转弯和右转弯等按钮。APP控制界面中的不同按钮对应着不同的串口指令,点击后可以对小车进行相应的控制。APP中关于蓝牙主要使用的类有:BluetoothDevice,BluetoothSocket,BluetoothSeverSocket等。BluetoothDevice为远端的蓝牙设备,用于请求远端蓝牙设备连接,BluetoothSocket 为蓝牙套接字的接口,是应用程序通过输入、输出流与其他蓝牙设备通信的连接点。
智能小车具有遥控模式和自动行驶2种模式。小车启动后,默认以遥控模式运行,通过APP上4个方向按钮操作可以控制小车进行相应的运动。当点击“开启自动行驶”,小车进入自动行驶模式,通过车载的传感器进行循迹和避障,如果前方没有障碍物且小车未探测到黑线,小车直行。如果探测到黑线和探测到障碍物同时出现时,优先躲避障碍物。小车探测到黑线且没有障碍物时小车按照黑线路径行驶。
为了验证系统运行情况,设计了智能小车的测试环境。主要测试以下几个内容:蓝牙通信距离;循迹和避障功能以及是否按照优先级运行;是否能够采集速度和行驶距离等信息。系统启动后,使用Android终端在距离小车不同的距离进行遥控,测试无线通信是否正常,结果如表3所示。
表3 通信距离测试结果
在地板上铺设2 cm的黑色胶带,并在胶带转弯处设置障碍,测试小车是否能够循迹、避障以及能否从循迹状态转换为避障状态。首先在无障碍区域启动小车,使用遥控使小车移动到黑线位置,并开启自动行驶模式。经测试,小车可以沿着黑色胶带的轨迹行驶,也可以躲避设置的障碍物,而且正在循迹的小车遇到障碍物后进行了躲避,优先避障,符合设计要求。图8为在30次试验中放置不同数量的障碍物小车成功到达终点的次数统计。
图8 不同障碍物数量下的循迹避障测试结果
可以看出:随着障碍物数量的增多,成功循迹避障的次数会相对减少,但整体仍保持较高的水平,能够满足基本要求。经测试,小车在行进过程中可以实时地显示当前速度以及行驶的距离。
提出了一种基于Android系统的智能循迹避障小车的软硬件设计方案,实现了小车在遥控模式和自动行驶模式下的运行。采用5路红外循迹模块以及3路超声波避障模块,提高了小车循迹和避障的准确性。采用Android终端对小车进行控制,同时可以对小车的状态信息进行采集和显示。本文方法是当前无人驾驶技术研究的原型,因此,具有较高的学术价值和现实意义。
[1] 姜 岩,赵熙俊,龚建伟,等.简单城市环境下地面无人驾驶系统的设计研究[J].机械工程学报,2012,48(20):103-112.
[2] 谢 檬,郭 霞.智能小车控制系统设计[J].传感器与微系统,2016,35(12):110-112.
[3] 林明标,莫金海.基于安卓手机的无线重力感应控制智能小车[J].计算机测量与控制,2015,23(4):1175-1178.
[4] 尹 杰,杨宗帅,聂 海,等.基于红外反射式智能循迹遥控小车系统设计[J].电子设计工程,2013,21(23):178-180,184.
[5] 陈小宁,黄玉清,杨 佳.多传感器信息融合在移动机器人定位中的应用[J].传感器与微系统,2008,27(6):110-113.
[6] 钟 君,蔡黎明,于 涌.基于MLX90614的无线温度采集系统设计[J].传感器与微系统,2015,34(3):87-89,93.
[7] 董 杰,王国豹.基于STM32的智能循迹往返小车设计[J].电子设计工程,2013,21(12):158-160.
[8] 王 苏.直流电机PWM调速研究及单片机控制实现[J].机电工程技术,2008,37(11):82-84,95.
[9] 王光利,代小红.基于AT89C52的恒温室监控系统设计[J].微电子学,2010,40(4):588-590,595.
[10] Cheng Z T,Yang M,Wang W P.The design of mobile phone multimeter based on the Android platform[J].Applied Mecha-nics and Materials,2015:527-530.