APP下载

基于STM32 的智能交互式平衡小车

2021-07-30黄志芳陈泽锐何梓杰宋世杰

电子设计工程 2021年14期
关键词:红光舵机小车

黄志芳,陈泽锐,何梓杰,宋世杰

(嘉应学院电子信息工程学院,广东梅州 514015)

随着人工智能、物联网技术的不断发展,各行各业对于机器人使用的要求和智能化也越来越高,机器人如何更好地结合人工智能和物联网技术来满足各行各业的需求已成为当今研究的热点[1-2]。智能小车作为小型智能机器人,其机动灵活、操作方便,车上可集成各种精密传感器,其避障功能确保了小车在行驶中能够避免发生碰撞、碰擦,是智能小车的重要组成部分。智能小车是人工智能、自动控制、计算机等学科交叉融合的产物,并在无人驾驶汽车和智能扫地机器人中起着重要作用[3-6]。控制系统是智能小车的关键部分,可以根据预定的轨迹在复杂的环境中行驶,实现小车的速度和位置控制,完成指定的任务,并在智能小车系统中占有举足轻重的地位[7-9]。传统的智能小车是一种四轮驱动机器人,四轮驱动导致了智能小车体积较大,在比较狭窄空间中的转弯性、行动性会受到较大限制,遇到石块、坑洼障碍物时会导致传统智能小车脱困能力较差[10]。为此,文中设计了两轮独立的智能交互式平衡小车,以MPU6050 陀螺仪感知小车的平衡状态,以TB6612 电机来控制两轮差速值,从而达到小车自平衡,可应用于消防、无人巡查、娱乐等领域。

1 整体方案设计

基于STM32 的智能交互式平衡小车是由硬件部分、软件部分和各个模块构成的。硬件电路中SMT32F103 与STM32F429 系列芯片作为主控芯片,分为上下两层,STM32F429 为上层主控芯片,SMT32F103 为下层主控芯片。上层主要用于图像处理以及处理超声波、语音模块、WIFI,作为平衡车的“大脑”;下层为控制小车的主控板,作为平衡车的行动支架。两块芯片采用串口方式进行通信,通过上层控制下层小车的运行,硬件连接如图1 所示。

图1 硬件连接图

使用者通过语音控制模块识别查询天气指令,将WIFI 模块连接到服务器,通过服务器得到所处位置的相关气象信息,并且将获取的信息进行解码和编译,发送到语音模块进行播放。

使用者还可以通过语音模块控制平衡车的平衡和动作状态,通过语音控制平衡车处于休息或跟踪追寻状态。当进入休息状态时,使用者可以随时唤醒平衡车进入跟随状态。当进入跟随状态时,通过图像识别和处理,可以实现平衡车实时跟踪使用者所佩戴的具有红外功能的手套,实现跟踪追寻使用者的功能。

上层主控芯片通过语音识别模块SYN7318 识别使用者的语音控制指令,摄像头OV5640 用于采集图像,通过识别算法计算出红光的运动轨迹,进而判断小车的运行轨迹,实现自动跟随、巡查功能。WIFI模块通过连接手机热点,即可连接上服务器,并且可以查询到当天某个地区的天气情况。

2 硬件设计

硬件系统以STM32F429 与STM32F103 两块单片机作为核心控制芯片,两个芯片之间的协调通信采用串口通信。STM32F429 连接OV5640 摄像头、SYN7318 语音模块、WIFI 模块、超声波模块,作为平衡小车的核心“大脑”,摄像头采集具有红外功能的手套信息,并锁定图像信息,作为跟随的指示信息。语音模块随时接收使用者的语音指令,对语音指令进行解析,并把解析结果传输到平衡小车的核心控制芯片。WIFI 模块主要负责实现与网络的连接,用于查询相关天气信息和语音信息。超声波模块用于探测平衡小车周边障碍物的信息,根据探测的信息来控制下层芯片,下层芯片根据小车反馈的周边障碍物的距离信息来调整陀螺仪、电机的操作。STM32F103 连接MPU6050 陀螺仪,TB6612 电机驱动模块控制整辆小车行驶的速度[11-12]。平衡小车通过5 000 mA,12 V 电池进行供电,经过稳压电路来保证其供电稳定,平衡小车的实物图如图2 所示。

图2 平衡小车实物图

2.1 STM32F429与STM32F103主控芯片

STM32F429 是一款目前市场上主流的核心控制芯片,具有速度快、稳定性高、存储容量大等强大的功能[13]。该项目采用该芯片进行图像存储以及处理,能够更好地提高整体小车跟踪的灵敏度和准确性,其最小系统原理图如图3 所示。

图3 STM32F429最小系统原理图

STM32F系列是32位的ARM微控制器,内核采用Cortex-M3,内部集成了定时器、CAN、ADC、SPI 等多种外设功能,能够满足一些项目的需求。

2.2 OV5640摄像头

OV5640 是一款500W 像素的高清摄像头,采用一颗2 592*1 944 分辨率的传感器,该模块内部集成了具有自动对焦功能的两个功率为1 W 的高亮LED闪光灯,能够实现在暗光下拍摄的需求,具有较高的性价比[14]。设计时在摄像头前装置了一个滤光片,从而使摄像头只拍摄到红外光。经过对图片的处理,实现了对特征点的追寻,原理图如图4 所示。

图4 OV5640摄像头原理图

2.3 SYN7318语音模块

SYN7318 语音模块集成了语音识别、唤醒、播放等功能,通过串口通讯方式接受命令,拥有广阔的应用领域和使用场景,可内置客户应用程序,广泛应用于车载GPS 调度终端、插卡音箱、点读机、智能仪表等领域。模块的TXD、RXD 分别与STM32 主控芯片串口1 的RXD、TXD 相连,从而进行通信和传输数据。

2.4 MG90S舵机

MG90S 是一款通过PWM 进行控制的舵机,通过调整占空比的大小,可以实现对其旋转角度的改变,采用5 V 电压进行供电。设计所采用的舵机是金属型舵机,能够增加其稳定性,相比于塑料舵机使用时间更长。平衡小车主要通过云台搭载两个舵机,从而实现对摄像头拍摄角度的控制,使得小车在无光源的情况下顺利找到光源。

2.5 MPU6050芯片

MPU6050 是一款同时带有陀螺仪和加速度传感器的芯片[15],平衡小车使用一个MPU6050 芯片的模块进行设计,该模块主要通过IIC 总线进行通信,其内部自带了16 位的A/D 转换器,能够实现对角度的高精度转换,以满足用户需求;并且,由于该模块可以快速准确追踪角速度以及其工作电压范围广的特点,因此可应用于不同的工作环境。平衡小车通过该模块来获取小车当前的倾斜角度以及加速度,对这两个信息进行分析,再通过PID 算法来实现控制小车的平衡以及运动。

2.6 TB6612电机驱动

TB6612 电机驱动模块是一款用于驱动电机转动的模块,其具有两个通道输出,可同时控制两个电机,每个电机可输出1.2 A 的电机驱动电流,启动的峰值电流可达2 A/3.2 A,能够满足大部分电机的需求,并且可以实现正反转以及制动的功能,具有低压检测电路和热停机保护电路,能够有效保护电源和电路[15]。电机驱动原理图如图5 所示。

图5 TB6612电机驱动原理图

2.7 减速直流电机

减速直流电机主要是在普通直流电机的基础上再配备了齿轮减速箱,其主要作用是提供较大的力矩和较低的转速。该减速直流电机通过齿轮箱不同的减速比获得不同的转速和力矩,显著扩大了直流电机的使用范围[16]。文中选用减速直流电机控制整个小车的行走以及平衡,通过控制PWM 占空比实现对减速电机的控制,从而实现对小车的控制。

3 系统软件设计

3.1 主程序流程

主程序流程图包括上层板和下层板主程序流程图,上层板主要为图像识别,下层板主要接收上层板的指令,控制小车的平衡和行走。上层板主程序流程图首先通过对各个模块以及内部资源进行初始化,控制云台平躺,并且发送指令控制小车停止,接着进入主循环,获取光源。若有光源,则进入对准光源模式;若无,则进入寻光模式。上层板的主程序流程图如图6 所示。

图6 上层板主程序流程图

下层板首先对各个外设以及内部资源进行初始化,控制小车保持直立的状态,接着进入主循环,当接收到控制小车的指令后,小车将做出相应的动作。摄像头捕捉到红光后,还需将红光校准至中心点,因此将此任务分为一个子函数。当确定捕捉到红光后,先判断红光是否处于X、Y轴上,若是,则判断处于X、Y轴的正负半轴,然后发送指令给下层小车控制板;若否,则获取该红光与中心轴的角度及所属象限,再获取超声波距离,当前景条件满足且需要前行时则发送指令给下层小车控制板。

3.2 跟随红光流程

由于小车开始可能与红光的距离很远,因此若要靠近红光,则需要在运动的过程中同时考虑红光的距离与小车的运行轨迹。首先按照程序设定采集两次图片,判断是否有红光,如果没有,则控制云台平躺,重新进入寻光函数;如果有,则判断其位于Y轴的正负方向,若为正方向则发送指令给小车继续前行,再循环采集图片;若为负方向,则控制云台下躺5°~10°,并且记录躺下度数,以方便判断云台是否处于平躺的位置,进而判断是否处于红光正下方,且成功对准。

3.3 寻光函数

小车运行开始时无法判断和锁定红光位置,通过控制小车转弯及云台的上仰和平躺操作实现对红光位置的判断和锁定。进入寻光函数后,先采集两次图片,若首次采集图片中有红光,则采集结束并进入锁定红光阶段,反之控制云台摄像头在20°~80°范围内进行上仰操作,以寻找红光,直至锁定红光。若云台上仰至80°后还没有找到光源,则不再执行摄像头上仰操作,结束寻光操作。寻光流程图如图7 所示。

图7 寻光流程图

4 调试结果

在完成了硬件、软件各个模块的设计制作后,对硬件电路各模块进行测试,结果表明,硬件电路各个模块功能正常;将软件程序下载到芯片中,使得程序正常无误,软硬件适配。摄像头模块可以准确地采集到具有红外功能的手套,并且在较为复杂的使用环境中识别出红外手套,识别距离达到了最远为5 m,最优识别距离为1.4~2.6 m,识别率达到了99.4%。识别出平衡小车在唤醒模式下能实现自助跟随功能。语音识别模块可以识别出使用者的相关指令,根据指令完成平衡小车的唤醒、休眠、播报、交流等功能,各个模块功能正常。小车自平衡状态通过陀螺仪和电机共同完成,通过前后左右的推放测试,平衡小车都可以实现自平衡,自主修正状态,保持平衡。小车的平衡算法可靠稳定,陀螺仪和电机驱动正常工作。舵机是保持摄像头转动寻找目标和锁定目标的机构,舵机能根据下层芯片指令准确完成摄像头和云台的转动,确保了摄像头能及时采集和锁定目标。由于手套具有红外功能,因此为了避免造成程序冲突和混乱,避障模块选用超声波模块来获取平衡小车与周边障碍物的距离信息,实现平衡小车的避障功能。WIFI 模块能正常联网查询各种信息。测试中以查询天气为例,语音识别查询天气指令后,WIFI 模块能准确查询相关地域的天气信息。

5 结论

通过对基于STM32 的智能交互式平衡小车的应用研究,文中从设计的目标、思路、方法、硬件架构、软件设计以及PID 算法等方面验证了智能交互式平衡小车达到设计的参数要求。该设计采用了两轮式的结构,与传统的四轮结构式小车相比,具有体积小、转向灵活、自主平衡调整、自动避障等功能,语音交互功能可使用户更方便快捷地操作使用。平衡小车未来在消防勘察、无人巡查、自动跟随购物车和行李箱领域具有较为广泛的应用前景。

猜你喜欢

红光舵机小车
发红光的蔬菜
先锋引领致富路
——记嘉荫县红光乡燎原村党支部
大车拉小车
自制小车来比赛
移风易俗的路径探索——基于涴市镇红光村乡村振兴促进会的分析
含齿隙弹载舵机的全局反步模糊自适应控制
刘老师想开小车
两轮自平衡小车的设计与实现
基于dsPIC单片机的飞艇舵机控制实现
基于高速同步485总线通信的多通道舵机控制器设计