李帅,卢洁聪,王海潮,朱晨照,王晨超
(1.东南大学成贤学院 机械与电气工程学院,江苏南京,210000;2.东南大学成贤学院 电子与计算机工程学院,江苏南京,210000)
我国的视障人群众多且分布广泛,随着现代化社会的发展,落后的导盲辅具与现代化生活的矛盾日益加剧,导致视障人群难以融入现代化生活。市面上的大多数导盲辅具在使用时存在着一定的局限性,例如导盲犬存在着训练周期长、饲养成本高的特点,且在适用环境上有多方面的限制。现在的盲人更多的使用盲杖作为出行工具,而盲杖作为一根普通的长杆,存在太多的局限与不足。为了协助盲人安全行进,人们也发明了许多高科技产品来助行、导航。但是,这些高科技产品普遍成本过高,使用复杂,受众小,无法投入量产。因此,社会需要为视障人群提供更加方便使用、价格实惠的导航工具。基于以上导盲工具的不足,本文介绍设计了一款基于视力障碍人群的导盲小车,同时具备超声波避障、语音提示和摄像头跟随功能,满足了视障人群出行散步的基本需求。
本方案是在满足系统功能的前提下以经济实用的角度出发,采用了51系列的单片机,以该单片机为控制核心,结合了L298N驱动模块,OpenMV摄像头模块以及直流电机模块和其他控制模块而设计出的智能导盲小车系统。此系统硬件部分由单片机单元、传感器单元、语音提示单元、电机控制单元和电源单元组成,如图1所示。
图1
主控单元为STC89C52RC,主要负责与OpenMV串口通信,完成了检测障碍物,语音识别提示,以及电机舵机步进电机PWM波的输出等功能。图2是基于STC89C52RC自制的主控和驱动电路的原理图。
图2
基于超声波反应灵敏,检测距离远,适用范围广泛、精度高,受外界干扰小的优点,本项目采用超声波HC-SR04芯片作为检测前方障碍的工具。其原理是:超声波由传感器发出后,遇到障碍物便反射回来,再被超声波传感器接收。由单片机计算这个声波在空气中传播的时间以此来确定障碍物的距离。具体就是第一步就是让Trig 管脚所接的单片机I/O口置为高电平,而且需要持续10μs以上。此外,为了避免下一次超声波发出的信号对上一次的返回信号产生影响,超声波模块发出信号的时间间隔要在200ms以上。第二步再让Trig为低电平,这样就可以达到超声波模块自动发出一次检测信号的效果了。
图3
基于红外传感器优越的环境适应性和工作稳定性,该导盲小车的左右两边采用E18-D80NK光电开关进行检测障碍物。光电开关的工作原理是:通过单片机读取该光电开关I/O口的电平高低,来判断小车两侧有没有障碍物。当检测到障碍物时,与黑线连接的单片机I/O口被置低电平0。同时有效地避免了可见光的干扰。而光电开关中透镜的使用,也使得这款传感器最远可以检测到80cm内的障碍。
本设计是通过MP3提示器来实现语音播报功能的。该MP3兼容Arduino功能,由带256M的TF卡、一个带3W4Ω喇叭和一个音源箱组成。该模块采用排针朝下焊接方式,直流5V1A供电、包含9个触发端口。具有16G的最大内存。该模块具备9个直接触发端口 ,是A1~A9这9根排针,分别对应第一首到第九首的MP3。语音模块是通过低电平触发的。如果要触发A1口,只要向A1口提供1个低电平,就马上进行播放第一首MP3。为了给盲人提供规避路障的语音提示,我们在制作语音模块时,把各种常用的导航提示语分别录入MP3,当语音对应的路障出现时,该首MP3被触发,即向盲人发出相应的语音提示。
图4
此模块包括OpenMV摄像头、舵机驱动,从而完成监测盲人位置和精确跟踪功能。在盲人腿上穿戴提前设定好颜色的脚环,利用OpenMV颜色阈值判断,计算与中心线偏差返回值给主控单元,主控单元处理后发出PWM控制电机舵机驱动,从而控制小车的移动。 OpenMV是一个低成本且功能强大的机器视觉模块。以STM32F427芯片为核心,集成了OV7725摄像头芯片。其有UART,I2C,SPI,PWM,ADC,DAC以及GPIO等接口方便扩展外围功能。
本次使用的180度MG905金属齿轮加强版舵机,其原理是舵机通过PWM脉冲的脉宽来控制其自身的转动,每到固定脉宽的脉冲,舵机转过一个特定的角度。
将OpenMV摄像头安装在舵机齿轮的旋转架上,使舵机带动摄像头转动,从而实现摄像头0~180度的探测范围。
此次的导盲小车是通过L298N来实现电机驱动的。其原理是改变输入端的逻辑电平,当驱动直流电机时,可以直接控制步进电机,并可以实现电机的正转与反转。其轮胎部分选用麦克纳姆轮,其原理是依靠各自机轮的方向和速度,使小车能在任意方向上实现平移和原地旋转,从而快速、灵敏地跟随使用者,保证使用者的出行安全。
在主程序中,系统初始化之后,摄像头检测人是否在小车的后方并且超声波和光电开关不断检测小车的前方、左方、右方有无障碍物,在没有检测到障碍物时,小车继续保持在人正前方预定距离内随人的移动而移动。当在一定距离内有障碍物时,小车会通过光电开关来判断左右的障碍物,若此时前方和左边同时存在障碍物,则会语音提示向右拐弯。若此时前方和右边同时存在障碍物,则会语音提示向左拐弯。否则,会发出警报。当位于小车后的人拐弯以后小车会自动移动到使用者的正前方继续提醒前方的路况。
图5
该导盲小车的左右方向采用光电开关,自动检测距离小车30cm内是否有障碍物,例如当小车左侧30cm内有障碍物时标志位(变量)Left_ray_flag置为0,否则置为1。小车前方采用超声波检测障碍,两者同时进行。超声波传感器会自动发出8个40kHz的方波并且自动检测是否有声波信号返回,有信号返回则表示有障碍物,反之则无。若有信号返回那么此时Echo所接单片机的I/O口被置为高电平1,通过测量高电平持续的时间并运用公式:小车与障碍物之间的距离=(高电平时间*声速/2)计算出障碍物距小车中传感器的距离。小车通过距离判断此障碍物是否会对人行走产生影响,若距离小于70cm (根据盲人步长设置)则小车发出语音提示提醒盲人前方有障碍物。
小车的摄像头跟随部分分为两个单片机分别为STM32单片机和51单片机,STM32单片机嵌在摄像头里面,用来处理摄像头捕获到的信号指令,51单片机通过与STM32单片机通信得到信号指令,进而控制小车的移动的方向、速度和距离等。
图6
首先,摄像头OpenMV检测是否有色块,STM32单片机与51单片机进行通信,51单片机接收到STM32单片机发来的信号指令,如果有色块存在,那么小车根据OpenMV返回距离、左右偏移等调整自己的移动和速度使得人在小车摄像头的中间;如果没有色块存在那么小车则调整摄像头的角度,左转45°再右转90°如果还是没有色块存在那么小车停止并发出语音提示。
图7
小车的移动是由51单片机控制的L298N电机来实现的,小车的前面和后面分别有两个L298N电机,当两个电机的输入控制信号为1010时,小车前进;当电机输入控制信号为0101时,小车后退;当电机输入控制信号为0110时,小车左转;当电机输入控制信号为1001时,小车右转;当电机输入控制信号为0000是,小车停止;当前L298N电机输入控制信号为1001,后L298N电机输入控制信号为0110时,小车平行左移;当前L298N电机输入控制信号为0110,后L298N电机输入控制信号为1001时,小车平行右移。平行左移和平行右移是为了使小车转弯的时候更加的灵活。
本设计需检测各种环境指标。开始测试时,使用者站在小车后面,打开小车运行开关后,小车先检测与测试者距离,同时行驶到预设的距离。当使用者开始行走时,通过不断改变的间距小车也随之行驶,并始终保持在正前方。当小车前方一定距离内出现障碍时,小车检测左右两边的障碍情况,同时发出语音提示“前方有障碍,请向左/右行走”,当人开始转向后,小车也开始转向行驶到使用者前方。经测试小车功能实现良好,能达到预期的目标。
小车在使用测试程中,人和小车都在移动相对误差就会比较大。总误差在预设的范围之内,误差主要来源于光电开关的感应速度、超声波的传输以及人与车之间的距离等。
本文讨论了智能导盲小车的设计与实现,该设计具备人性化,能够与使用者进行人机交互,带领使用者在一定区域内安全行走,适用于盲人在陌生的地方想要进行散步等简单活动。同时经过许多测试与改良,智能小车各项功能实现良好,能够取得预期的应用效果,可以不断拓宽应用领域,具有广阔的应用前景。
测试项目 预设值/cm 四次测量平均值/cm 误差/cm超声波检测检测障碍物 70 70.8 +0.8光电开关检测障碍 30 29.9 -0.1人直走时小车与人之间保持的距离 70 72.8 +2.8