搜索代码

ESP32 教程 20/55 - 循迹模块 | SunFounder 的 ESP32 物联网学习套件

ESP32 教程 20/55 - 循迹模块 | SunFounder 的 ESP32 物联网学习套件

在本教程中,我们将学习如何使用ESP32模块配合循迹模块来检测白色表面上的黑色线条。这一功能对于需要沿指定路径行驶的机器人小车等应用至关重要。此外,我们还将集成一个蜂鸣器,当循迹模块检测到黑色线条时蜂鸣器会激活,从而增强我们项目的反馈机制。如需进一步说明,请参考视频(视频中0:00处)。

line_track

硬件说明

本项目的主要组件包括ESP32模块、循迹模块和蜂鸣器。ESP32模块是一款功能强大的微控制器,内置Wi-Fi和蓝牙功能,可实现广泛的物联网应用。循迹模块利用红外发射器和光敏电阻,根据反射红外光的强度来检测表面颜色的差异。

循迹模块的工作原理是发射红外光,红外光从其下方的表面反射回来。较暗的表面(如黑色)会吸收更多光线,导致反射强度较低,而较亮的表面(如白色)会反射更多光线,产生较高的强度。这种差异通过运算放大器进行处理,以确定表面的状态(黑色或白色)并输出相应的信号。

数据手册详情

制造商 SunFounder
零件编号 TCRT5000
逻辑/IO电压 3.3 V 至 5 V
输出电流(每通道) 20 mA
峰值电流(每通道) 50 mA
响应时间 < 10 ms
检测范围 1 cm 至 5 cm
封装 带排针的模块
备注/变体 常用于循迹机器人

 

  • 确保电源供应正确(3.3 V 或 5 V)。
  • 保持传感器清洁以获得准确读数。
  • 使用板载电位器调节灵敏度。
  • 检查连接以避免悬空输入。
  • 如有必要,使用上拉电阻以确保读数稳定。
  • 尽量减少环境红外光源的干扰。

接线说明

ESP32-20_line-tracking-wiring

要将循迹模块连接到ESP32,首先将模块的接地引脚连接到ESP32上的接地引脚。然后,将循迹模块的V+引脚连接到合适的电源,即ESP32上的3.3 V或5 V。信号引脚(标记为S)应连接到ESP32上的GPIO 14。在继续之前,请确保这些连接牢固。

如果使用蜂鸣器,请将其负极端子连接到地线,正极端子连接到ESP32上的GPIO 27。此设置允许蜂鸣器在循迹模块检测到黑色线条时激活。请务必仔细检查所有连接,确保它们与代码中指定的引脚匹配。

ESP32-20_line-tracking-schemtaic

代码示例与讲解

以下是设置循迹模块的代码关键摘录。变量linePin被定义用于表示连接到循迹模块的引脚。

const int linePin = 14;  // 循迹模块引脚编号

此行将linePin初始化为引脚14,该引脚将用于读取线路状态。lineState变量将保存传感器的结果。

setup()函数中,我们将linePin的引脚模式配置为输入。

void setup() {
  Serial.begin(115200);  
  pinMode(linePin, INPUT);
}

这确保了ESP32能够读取循迹模块的状态。串行通信以115200的波特率启动,用于监控输出。

最后,在loop()函数中,我们持续读取循迹模块的状态并打印检测到的颜色。

void loop() {
  lineState = digitalRead(linePin);
  if (lineState == HIGH) {
    Serial.println("Black");
    delay(100);
  } else {
    Serial.println("White");
    delay(100);
  }
}

此循环检查lineState是否为HIGH(表示黑色)或LOW(表示白色),并将结果打印到串行监视器。完整代码加载在文章下方供您参考。

演示/预期效果

接线完成并上传代码后,您应该会观察到当循迹模块位于黑色表面上时,ESP32打印“Black”,当位于白色表面上时打印“White”。此外,当模块检测到黑色线条时,蜂鸣器会响起,提供声音警报。请注意电位器的设置,因为过于灵敏的设置可能导致行为异常(视频中10:00处)。

视频时间戳

  • 00:00 开始
  • 2:22 循迹模块介绍
  • 5:10 文档页面
  • 9:20 接线说明
  • 10:49 Arduino代码说明
  • 13:36 在Arduino IDE中选择ESP32开发板和COM端口
  • 15:18 演示
  • 18:15 项目:带蜂鸣器的循迹
  • 19:52 循迹和蜂鸣器的Arduino代码
  • 20:52 演示

图像

ESP32-20_line-tracking-schemtaic
ESP32-20_line-tracking-schemtaic
ESP32-20_line-tracking-wiring
ESP32-20_line-tracking-wiring
line_track
line_track
819-ESP32 Tutorial 20/55- Arduino code line tracking
语言: C++
/*
 * 设置引脚编号
 */
const int linePin = 14; // 线路轨道模块引脚的数量

 // 用于存储线路状态的变量
int lineState = 0;

void setup() {
  Serial.begin(115200);
 // 将线路跟踪模块引脚初始化为输入模式。
  pinMode(linePin, INPUT);
}

void loop() {
 // 读取线路轨道模块的状态
  lineState = digitalRead(linePin);

  if (lineState == HIGH) {
    Serial.println("Black");
    delay(100);
  }
  else {
    Serial.println("White");
    delay(100);
  }
}

资源与参考

文件📁

没有可用的文件。