一起玩儿物联网人工智能小车(ESP32)——46. 利用循迹模块实现循迹小车(一)

摘要:本文介绍循迹模块的基本知识及使用方法

从本篇文章开始,将介绍循迹小车的实现方法。循迹小车就是可以按照实现划好的路线,沿着路线可以自动行驶的小车。这是最简单的循迹小车了。而复杂的循迹小车还可以识别路线旁边设置的一些标识,完成相应的规定动作。这可能要借助视觉识别系统了。我们在这里先实现最简单的可以沿着指定的路径行驶的循迹小车。

循迹小车的行驶路线通常是画在白纸上的有一定宽度的黑色轨迹线,由于对比强烈,这应该是比较容易识别的一种。我们使用的循迹模块与前边所使用的避障模块类似,也是利用障碍物对红外线的反射来进行检测的,只不过这次检测是利用了不同颜色的障碍物对红外光的反射率不同来检测循迹轨迹的。循迹模块如下图所示:

这个循迹模块的原理和之前的避障模块一样,核心部件也是一对红外发射二极管和红外接收二极管组成。当模块接通电源后,红外发射二极管会不断的向外发射红外线,当发射的红外线没有被反射回来,或者反射回来的强度不够大时,红外接收二极管一直处于关闭状态,此时模块的输出端一直为高电平,指示二极管处于熄灭状态。当被检测物体出现在检测范围内,红外线被反射回来且反射回来的强度足够强时,模块的输出端变成低电压,输出指示二极管点亮。

循迹模块还有一个模拟输出端,它连接的是接收二极管的一端,在这里可以得到接收二极管两端的电压。接收二极管的电阻会随着接收反射回来的红外光的强弱而变化,通过采集模拟端的输出电压,可以判断出接收到反射红外线的强弱。接收二极管电阻的变化取决于它所接收到的红外光的强弱,影响反射红外光强度的因素有反射面的颜色(反射率)、形状和反射面与接收二极管之间的距离等因素。

避障模块主要反映的是距离对红外线反射的影响,那么循迹模块,则是主要检测不同反射面颜色对于红外光反射的影响。通常情况下,黑色物体对红外光的吸收能力最强,因此黑色物体的反射率最低,而白色物体对红外光的吸收能力最弱,所以白色物体的反射率最高。所以,只要通过调节避障模块上面的电位器,让避障模块的指示灯在黑色轨迹上时处于熄灭状态,在白色地面处于点亮状态就可以区分出该行走的轨迹在哪里了。这个调试工作要在把模块安装到小车上之后再进行,并且不同的环境和不同的地面材质,都需要重新调节。

所以,在这里就有个提醒,如果想使用开关量作为判断轨迹的依据,选择循迹模块的时候,一定要选择带有调节电位器的模块,因为不同的安装位置、不同的地面材质、不同的轨迹颜色等等,都需要进行开关阈值的调节,不能调节的模块,不可能满足所有情况的需求。如果使用模拟量来作为判断轨迹的依据,那么就需要开发一个测试程序,记录轨迹和地面的不同输出电压来进行区分。

下面来看一下循迹模块的基本组成。如下图所示:

通过上图可以看到,在接通电源后循迹模块的电源指示LED会亮起,红外发射二极管会向外发出红外光,当接收二极管接收的红外光达到实现设定的阈值后,开关指示灯会亮起,DO输出低电平。这个DO电平切换的阈值可以通过调节电位器来进行调节。

循迹模块的引脚说明如下:

序号

标识

名称

说明

1

VCC

电源正极

3.3V~5V

2

GND

电源负极

3

DO

开关信号输出

表示接收红外反射光是否大于事先设定值

4

AO

模拟信号输出

接收二极管两端的电压输出

下面就先来测试一下循迹模块,将其与ESP32模块连接,这次测试一下同时读取AO和DO两个引脚的输出,因为根据不同的策略和环境,模拟输出和数字输出都有用到的可能。具体接线如下:

循迹模块

ESP32扩展板

VCC

+3.3V(注意这里别接错了)

GND

GND

AO

P34

DO

P26

接下来就写个简单的程序,分别读取ESP32的26和34引脚,然后通过输出在串口调试器里。程序代码如下所示:

void setup() {

  // put your setup code here, to run once:

  Serial.begin(115200);

  pinMode(26, INPUT);

}

void loop() {

  // put your main code here, to run repeatedly:

  Serial.print(digitalRead(26));

  Serial.print("\t");

  Serial.println(analogRead(34));

  delay(1000);

}

这个程序不需要过多的解释了,26引脚连接的是循迹模块的DO引脚,因此是读取数字量输入。34引脚连接的是循迹模块的AO引脚,所以读取的是模拟量输入。编译、上传程序,运行结果如下:

这时可以看一下在相同距离的情况下,不同颜色的反射物产生的不同结果吧。

  • 26
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
舵机和超声波测距模块是STM32蓝牙控制循迹避障小车中常用的两个重要组件。 首先,舵机用于控制小车的转向。舵机通过PWM信号控制电机的转动角度,通过改变PWM信号的占空比,可以实现不同的转向角度。通常情况下,舵机的控制信号需要与STM32的定时器模块相连,通过调整定时器的周期和占空比,可以控制舵机的转向角度。在源代码中,通常会包括一些函数用于控制舵机的转向,如设置舵机转动角度等。 其次,超声波测距模块用于检测小车前方的障碍物距离。超声波测距模块通过发射超声波脉冲,然后检测超声波脉冲的回波时间,从而计算出前方障碍物的距离。在源代码中,通常会包括一些函数用于控制超声波测距模块的工作方式,如初始化超声波模块、发送超声波脉冲、接收回波信号等。 舵机和超声波测距模块实现循迹避障功能的关键组件之一。在源代码中,我们需要同时处理舵机和超声波测距模块的数据,并根据测距结果调整舵机的转向角度。通过不断的测距和调整转向角度,小车可以根据前方障碍物的距离来做出合适的转向动作,从而实现循迹和避障的功能。 在实际应用中,舵机和超声波测距模块的代码通常需要与其他组件的代码进行协调和集成,以实现整个小车的控制逻辑。通过合理的编程和调试,我们可以使得小车根据测距结果和算法判断,实现自动避障和循迹控制的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一起玩儿科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值