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

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

通过真值表,我们可以通过对IO口的输出来控制直流电机的正转、反转还有停止

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

模块Trig对应引脚GPIO_B0,Echo对应引脚GPIO_B1,对这两个引脚进行初始化

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

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

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

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

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

Leave a comment

您的电子邮箱地址不会被公开。