一、避障小车简介

这是一款基于OpenHarmony系统和小凌派-RK2206开发板的避障小车。同时,小车上搭载了超声波测距模块、舵机模块、红外寻迹模块、直流电机模块。
具体实验成果展示如下:

 

二、避障小车模块介绍

小凌派-RK2206开发板的示意图
小凌派-RK2206开发板的示意图
小凌派配置了一个E53外接拓展口,这是E53接口的原理图:
小凌派配置了一个E53外接拓展口
这是E53模块的原理图:

E53接口的原理图

1. 直流电机模块

直流电机模块由E53模块上的L9110S驱动芯片进行驱动。
L9110S驱动芯片所引出的引脚对应接口的GPIO0_B7、GPIO0_B6,另一块驱动芯片对应GPIO1_D0、GPIO0_A5。我们对相应的GPIO引脚进行初始化并设置为上拉模式。

GPIO引脚进行初始化并设置为上拉模式

 

通过阅读L9110S的芯片手册可以得到以下真值表:
L9110S的芯片手册真值表
通过真值表,我们可以通过对IO口的输出来控制直流电机的正转、反转还有停止:

IO口的输出来控制直流电机的正转、反转还有停止

2. 超声波测距模块

超声波测距模块用来计算出模块到前方障碍物的距离。采用IO口TRIG触发测距,给最少10us的高电平信号。
模块自动发送8个40khz的方波,自动检测是否有信号返回;有信号返回,通过IO口ECHO输出一个高电平,同时开定时器计时,当此口变为低电平时就可以读定时器的值,高电平持续的时间就是超声波从发射到返回的时间。
模块Trig对应引脚GPIO_B0,Echo对应引脚GPIO_B1,对这两个引脚进行初始化

两个引脚进行初始化

触发信号:

触发信号

获取定时器计数器当前值:

获取定时器计数器当前值

上升沿和下降沿的节拍数差计算距离。其中,系统时钟为40MHz,超声波速度为340米/秒,高电平时间宽度为超声波的往返之和。
所以实际距离 = 节拍数差 / 40MHz / 340(米/秒) / 2(往返2次)。具体计算代码如下:

上升沿和下降沿的节拍数差计算距离

 

3. 舵机模块

舵机模块用来控制超声波测距模块测量左右方向的距离,舵机引脚为GPIO0_B4,对GPIO0_B4进行初始化。

GPIO0_B4进行初始化

 

通过模拟PWM波让舵机工作。具体代码如下:

通过模拟PWM波让舵机工作

 

4. 红外寻迹模块

红外寻迹模块,在避障小车中的功能是防止小车意外掉落。红外寻迹模块与小凌派的GPIO0_A2、GPIO0_C4连接,对这两个引脚进行初始化。

红外寻迹模块与小凌派的GPIO0_A2、GPIO0_C4连接,对这两个引脚进行初始化

三、避障小车功能实现

通过小凌派开发板自带的按键启动小车的避障功能

通过小凌派开发板自带的按键启动小车的避障功能

 

通过超声波测距模块测量前方距离来判断小车接下来要运动的方向。若距离大于等于20cm继续前进。
若距离小于20cm,先停止再后退0.5s,再继续进行测距,再进行判断。
通过两个红外寻迹传感器可以防止小车掉落,当红外传感器输出为高电平时,小车就会停止前进,并且重新寻找安全方向。

通过超声波测距模块测量前方距离来判断小车接下来要运动的方向
通过超声波测距模块测量前方距离来判断小车接下来要运动的方向-2
通过超声波测距模块测量前方距离来判断小车接下来要运动的方向-3

通过使用OpenHarmony操作系统 + 小凌派-RK2206开发板来控制小车完成距离检测、前进、后退、左转、右转、判断算法等功能,实现了避障小车的基本功能。
经过这一次实验测试,加强大家对OpenHarmony的理解,实在是一次不错的学习体验,老王建议大家收藏起来!


文章提供:福州市凌睿智捷电子有限公司