一款基于STM32单片机的六足巡检机器人设计
2023-03-02徐琬婷梅源周欣悦
徐琬婷,梅源,周欣悦
(芜湖职业技术学院汽车与航空学院,安徽 芜湖 241006)
0 引言
近年来,机器人技术的发展越来越成熟,巡检机器人的应用领域也越来越广泛。传统的巡检机器人大多采用轮子或履带结构,虽然运动速度较快,但运动范围局限在二维平面,无法在复杂的地形情况下移动,从而导致在实际的应用中有一定的限制[1]。为了解决机器人运动局限的问题,本设计采用了六足机器人,它采用每一足三舵机的结构,使得六足机器人的每一足的自由度大幅提升,步态更为丰富,更适应于起伏不平的地形,从而替代人工,完成更多的危险、繁重的任务。本文主要研究了STM32单片机控制原理、红外模块循迹原理、摄像头检测原理以及无线通信原理,设计出来的六足机器人具有可循迹、避障、检测等功能,经过系统调试,六足机器人可满足关键技术指标,完成巡检任务。
1 系统的总体架构
1.1 性能要求
六足智能巡检机器人采用STM32单片机为主控制器。通过舵机控制板来控制总线舵机转动,从而实现六足巡检机器人移动功能[2]。利用两路循迹模块使六足巡检机器人自动按照指定路线运动,WiFi摄像头用于录制视频并同步上传至手机以达到实时巡检的功能。超声波测距模块检测循迹路线的障碍物,实现自主避障功能[3]。为了更好地实现控制,它还能够与手机和手柄进行无线控制,并通过无线同步模块与计算机进行无线通信[4]。
1.2 系统总体架构
六足巡检机器人具有自动循迹、同步视频、无线控制和自动避障等功能。它可针对各种复杂环境,采用不同的步态,使六足机器人能够更好地完成巡检任务。硬件主要包含主控芯片、舵机控制板、总线舵机、威发(wireless fidelity,WiFi)摄像头、循迹模块、超声波模块、无线传输模块等部分组成,系统的总体框图如图1所示。
图1 系统总体框图
图1中的超声波测距模块检测进路中的障碍物从而实现自主避障;WiFi摄像头对特定区域进行巡视,监控现场环境,将现场视频传输给手机App,进行识物和自动巡检;舵机控制板主要控制18个舵机的运动,六足巡检机器人每足配有3个舵机,可通过不同的控制算法来改变姿态进行控制,从而实现步态变换,适应不同地形;循迹模块利用红外循迹模块检测定线,并进行循迹追踪;蓝牙模块和无线手柄实现了对六足机器人的多种无线控制方式;无线同步模块也解决了六足机器人与计算机之间的通信问题,使系统调试更加便利[6]。
系统启动后,控制器控制系统进行姿态复位,复位后进入自动模式。WiFi摄像头自动开启并将同步视频传输至手机App,循迹模块启动,按照定线开始自动巡检。超声波测距模块通过测距查找障碍物,检测到前方有障碍物时,自动避障。系统设置了计算机控制、手机控制和手柄控制3种控制模式均可以控制六足机器人的高、中、低姿态以及高、中、低速。调试时,可设置为手动控制模式,直接通过串口向单片机发送指令来控制六足机器人的运动。
2 系统硬件设计
2.1 主控模块
六足机器人的主控模块采用了STM32F103C8T6单片机,它是一种嵌入式微控制器的集成电路,集成了256 kb字节的FLASH存储器和高达48 kb字节的动态随机存取存储器(static random access memory,SRAM),既能存储大量用户程序和数据,又能够搭载操作系统。它以ARM为核心的32位微控制器,工作频率最高可达72 MHz,存储器的零等待周期访问时可达1.25 DMIPS/MHz,能很好地满足六足机器人系统的实时性,不仅具有时钟、复位、电源管理及数据备份功能,还具有低功耗模式[8]。同时还具有看门狗功能,可以有效地增强系统的稳定性。自带3个12位模数转换器和2通道12位AD转换器,8个定时器以及13个通信接口。STM32F103C8T6其通用IO口多达51个,应用在六足机器人上,能很好地满足系统高性能和低功耗的需求[9]。
如图2所示是STM32F103C8T6单片机的原理。下面对单片机的相关引脚进行说明。
图2 STM32F103C8T6单片机原理
VDD是+3.3 V电源引脚,VSS接电源负极或者地线。OSC_IN、OSC_OUT是外接晶振引脚,作为单片机的外部时钟。通过分频器和倍频器可使系统时钟达到72 MHz。BOOT0、BOOT1引脚用于设置BOOT模式,支持主闪存存储器、系统存储器和内置SRAM模式,通常设置为主闪存存储器模式即可。PA0-PA15、PB0-PB15、PC0-PC15、PD0-PD2为通用IO口,共51个引脚。这些GPIO均可作为通用端口使用,具有8种模式,通过 7个相关寄存器来控制,并且每个IO都能够进行外部中断,同时还具有复用功能。STM32 单片机提供了相当丰富的外设,如串口、定时器、SPI总线等,性能很稳定[10]。SysTick定时器保证UCOSIII的运行,PA5、PA7控制超声波模块,串口1(PA9,PA10)与WiFi摄像头相连接,串口3(PB10,PB11)与舵机控制板相连接,与蓝牙模块相连接,GPIO可直接与循迹模块相连。
2.2 舵机模块
本系统采用了ZX361D总线舵机来完成六足巡检机器人的运动控制。各舵机模块采用单总线串口通信方式,16个舵机采用串联的方式进行级联,具有多角度回读、多视角工作和模式自动转换等功能。ZX361D总线舵机控制方式简单,内部装有一个主控芯片,可以实现对PWM信号的实时控制,用户可只需输入一个指令即可自动完成对舵机信号的实时控制。ZX361D总线舵机的接线端口如图3所示。由图3可知,ZX361D有3个引脚。其中引脚1接地,引脚2接电源(供电电压为5~8.4 V),引脚3接信号线并与STM32单片机进行通信。ZX361D工作时,需要一个20 ms的时基脉冲,时基脉冲高电平范围为0.5~2.5 ms。
图3 ZX361D总线舵机的引脚图
以180°舵机为例,高电平时间与绝对角度的关系如表1所示。通过使用串口命令调节,ZX361D总线舵机可以自行完成PWM的调节来完成角度调节。它的总质量仅为59 g,在供电电压为6 V的情况下,转动速度可达0.16 s/60°,舵机精度为0.24°。通过ZX361D总线舵机的控制,可满足六足机器人的高精度控制[11]。
表1 高电平时间与绝对角度关系表
2.3 摄像头模块
六足巡检机器人利用摄像头来完成识别和自动巡检工作。WiFi摄像头模块采用720 P高清摄像头,支持Ardroid和IOS双系统,其分辨率可设置为QVGA、VGA和720 P模式,具有本地连接和远程连接2种模式,能清晰地拍摄图像。内嵌P2P云服务器使得远程访问更方便,视频传输更为快速,有效传输距离可达50 m。模块采用ARM926EJ-S作为CPU,搭载Linux-2.6.35.5操作系统,采用UART与单片机通讯,初始波特率为115 200[12]。
2.4 避障模块
六足巡检机器人采用HC-SR04超声波传感器来完成避障,它尺寸小、价格低、寿命长、使用效率高,检测范围为2~450 cm,测量精度可达3 mm,工作时电流为2.2 mA,工作温度为-10~90 ℃。
工作时,测距模块的控制口TRIG发送一个10 μs以上的高电平作为触发信号,超声波发射探头开始循环发射8个40 KHz的脉冲,遇到障碍物时,信号将被返回,形成回响信号被接收探头接收,ECHO端输出高电平。发出的高电平与接收的高电平的时间,与机器人距离障碍物的距离成正比。通过单片机的定时器采集时间,将触发信号时间设为0,测量ECHO端口高电平的时间,利用公式(1)来计算距离:
式中:S表示待测距离;T表示ECHO端口高电平时间;v表示声速。
测距周期应该高于60 ms,以防止超声波发射和接收相互干扰[13]。
2.5 循迹模块
六足巡检机器人采用TCRT5000红外循迹传感器来完成红外线的检测并实现循迹。模块上的红外发射二极管不断发射红外线,当发射出的红外线没有被反射回来或被反射回来但强度不够大时,红外接收管便处在关断状况,U1A电压比较器的输出高电平,指示灯一直处于熄灭状态,被检测物体出现在检测范围内时,红外线被反射回来且强度足够大,红外接收管处于饱和状态,U1A电压比较器的输出低电平,指示灯被点亮。它的检测反射距离为1~25 mm,工作电压为3.3~5 V,其中DO为数字开关量输出,抗干扰能力强,可以通过此功能巡线,AO输出为模拟信号输出(不同距离输出不同的电压),六足巡检机器人可根据此端口的输出,来判断机器人与定线之间的距离。
2.6 蓝牙模块
六足巡检机器人利用DX-BT18无线通信蓝牙模块来完成手机无线控制。它采用串口与单片机之间通信,通信电平为3.3 V,通信距离可达30~40 m。内嵌BT4.2 Dual-Mode协议线,支持BT3.0 SPP标准协议和BT4.2 BLE协议,无线工作频段为2.4 GHz ISM band,调制方式是GFSK。该模块能够与Windows、Linux、Andriod以及IOS系统的设备直接连接,并支持后台程序常驻运行。它外形采用了邮票孔封装,自带LED灯,可通过LED灯的亮灭,直观地判断蓝牙的连接状态。它具备蓝牙2.0高速率透传的优势,并外设专业射频屏蔽罩,可有效屏蔽外界电磁波对内部电路的影响,原理如图4所示。
图4 DX-BT18蓝牙模块原理
3 系统软件设计
六足巡检机器人的软件主流程如图5所示.在主函数中,首先对系统进行初始化,初始化后设置六足巡检机器人的控制模式,主要包含4种控制模式,分别是自动控制模式、手机控制模式、手柄控制模式以及计算机串口控制模式。选择好模式后,为操作系统创建任务,操作系统将通过优先级调度算法和轮转调度算法来对这些任务进行合理的调度。最后开启操作系统,发起一次调度,将当前程序计数器(PC)所保存的地址入栈,将优先级最高的任务的地址传给PC,从而结束主函数,开始执行各个任务。当设置为自动模式时,六足巡检机器人将会沿着地面上黑线行走,摄像头将会拍摄视频并同步上传至手机App。如果操作检测到障碍,系统将控制六足巡检机器人避开障碍物。当设置为其他模式可选择利用手机或手柄以及串口控制,通过按键或固定的指令控制六足机器人做出各种运动姿态。
图5 主程序流程图
3.1 避障程序设计
避障任务在μC/OSIII系统中优先级设置为3,当避障任务进入运行状态时,堆栈弹出避障程序入口地址到PC中。在避障程序中,STM32单片机向超声波测距模块发送一个10 μs高电平的触发信号,超声波模块开始发射探测信号,并接收端检测回响信号。当未检测到回响信号时,则再次发送触发信号;当检测到回响信号,则计算出与障碍物的距离。六足机器人通过距离来绕过障碍物,任务执行后,再重新返回到主路线继续行进。避障子程序的流程如图6所示。
图6 避障子程序流程图
3.2 数据传输程序设计
数据传输任务在μC/OSIII系统中优先级设置为3,与优先级同为3的避障任务之间采用时间片轮转调度算法进行调度,当数据传输任务进入运行状态时,堆栈弹出数据传输程序入口地址到PC中。STM32单片机接收来自手机蓝牙的数据,并通过USART3将数据发送给舵机控制板,从而控制六足巡检机器人的运动。与此同时,单片机将接收来自舵机控制板的返回数据并用USART3打印出该数据。数据传输程序的流程如图7所示。
图7 数据传输程序流程图
3.3 六足机器人步态设计
六足机器人拥有丰富的步态,其中以三角步态最富有标志性。六足机器人6条腿的分别如图8所示,左侧的前、中、后足分别记为1、2、3脚,右侧的前、中、后足分别记为6、5、4脚。六足机器人的1、3、5脚和2、4、6脚分别构成一组。当六足机器人前进时,可选择一组脚作为支撑相,另一组脚作为摆动相。首先摆动相的腿抬起向前摆动,支撑相的腿支撑六足机器人本体,并通过舵机使机器人身体前移,移动完成后摆动相的腿立即落下,然后交换支撑相与摆动相重复上升过程即可实现六足机器人不断向前运动。
图8 六足机器人结构简图
4 系统调试
4.1 手机控制调试六足机器人
首先使用手机蓝牙助手向STM32单片机发送前进运动命令、再由单片机将命令发送给舵机控制板进而控制六足机器人的运动。图9为手机蓝牙助手操作界面,当按下前进按钮时,会向单片机发出$DKT:45,0!命令。该命令包含舵机PWM占空比和动作延迟时间2项数据。舵机动作延迟时间统一设置为500 ms。调试针对不同的地形完成调试,采集数据101次,手机平均最远控制距为46.7 m,巡线、避障、摄像头采集信号功能正常,达到技术指标。
图9 手机蓝牙助手操作
4.2 六足机器人手柄调试
手柄配置中分有两种模式,分别是绿灯模式和红灯模式。绿灯模式主要控制低速和中姿态动作,红灯模式下主要控制高姿态及翻转动作。等待配对成功后绿灯常亮,此时为绿灯模式,按下 MODE键可切换为红灯模式。以调试六足机器人左转为例说明调试过程,当六足机器人上电正常运行后,按下 “LL”键无线手柄会发送$DKT:49,0!命令至无线手柄接收器,由舵机控制器读取接收器中的命令,再输出与命令相对应的动作组数据来控制舵机左转45°角。同理,当按下“RL”键,无线手柄会发送$DKT:48,0!至接收器,将会使六足机器人左转90°角,经过测试,手柄控制有效距离可达53 m,避障、循迹功能正常。图10为无线手柄按键配置图。
图10 无线手柄配置图
配置的各种控制按钮,控制六足机器人的运行,按键及具体功能如下表2所示。
表2 手柄控制功能表
4.3 六足机器人计算机串口调试
以调试六足机器人右移为例说明调试过程,当六足机器人上电正常运行后,在计算机串口助手中发送字符“RL”加上换行回车即可控制六足机器人完成右移运动。并且串口助手会显示用户所发出的动作和动作所对应的命令。图11为六足机器人右移时,串口通信数据,其中波特率为115 200,所用的串口为COM5,串口通信的数据是8位,停止位为1表示数据传输完毕。
图11 串口助手
5 结束语
本文提出了一种基于STM32单片机控制的六足巡检机器人的系统,它通过外加红外循迹、超声波模块、摄像头、蓝牙等模块实现了自动巡迹、避障、监控、无线控制等功能。通过调试结果表明,采用舵机为主要驱动器的六足机器人,每一足精度可达到0.24°,系统避障精度可达3 mm,可利用手机和手柄遥控完成六足巡检机器人的无线控制,有效控制距离可以达到40 m以上。另外,系统可根据单片机发出的脉宽调制(pulse width modulation,PWM)值完成步姿控制及速度切换,从而可以适用于更多的巡检场合。相比于传统的轮式和履带式机器人,它的速度没有轮式和履带的速度快,但是系统的平衡性和稳定性是最强的,可以根据不同的控制方式完成不同的步态,更适合复杂的路面。从控制的复杂程度来说,六足巡检机器人由于需要18个舵机同时控制调整姿态,所以它的控制算法较为复杂。从耗能上来看,轮式机器人的效率最高,更适应于平坦的地面。而六足机器人由于驱动较多,且需要互相配合,能耗相对较高,效率也相对有限,但具备灵活的移动能力,可以攀爬和越障。
六足机器人具备高稳定性、灵活性,机动性,适应于各种复杂地形的巡检,后续将对六足巡检机器人的硬件部分再进行优化,并在控制算法上做进一步的研究,从而提高整个系统的协调性、运行效率及功耗,并将它推广到更多领域,如海洋探索,极端环境下的科学研究,智能运输等。