搜索代码

ESP32 教程 19/55 - 使用红外传感器检测障碍物 | SunFounder 的 ESP32 物联网学习套件

ESP32 教程 19/55 - 使用红外传感器检测障碍物 | SunFounder 的 ESP32 物联网学习套件

在本教程中,我们将学习如何使用ESP32模块配合红外避障传感器来检测障碍物。本项目将演示传感器在检测到障碍物时如何触发蜂鸣器。该设置还将在串口监视器上显示检测状态,提供一种清晰且互动的方式来观察传感器的功能。

我们将使用SunFounder ESP32物联网学习套件,其中包含具备Wi-Fi和蓝牙功能的ESP32微控制器。红外传感器的工作原理是发射红外光,红外光会被附近的障碍物反射。当光线被反射回来时,传感器将触发一个输出信号,我们将在代码中读取该信号。我们还将加入一个蜂鸣器,在检测到障碍物时激活,提供声音警报。

硬件说明

本项目的主要组件包括ESP32模块、红外避障传感器和蜂鸣器。ESP32模块作为中央处理单元,负责处理传感器输入并控制输出。它可以使用锂电池供电,使其便携且适用于各种应用场景。

红外避障传感器由一个发射器和一个接收器组成。发射器发出红外光,而接收器检测附近物体反射回来的光。当存在障碍物时,传感器的输出引脚变为低电平,向ESP32发出信号以采取行动,例如打开蜂鸣器。

数据手册详情

制造商SunFounder
零件编号红外避障传感器
工作电压3.3 V - 5 V
输出类型数字(检测到障碍物时为低电平)
检测范围最远20厘米
响应时间小于10毫秒
封装模块

  • 电源:工作电压为3.3 V至5 V。
  • 检测到障碍物时输出信号变为低电平。
  • 可通过电位器调节灵敏度。
  • 典型检测范围最远为20厘米。
  • 响应时间快,低于10毫秒。

接线说明

ESP32-19-obstacle_voide-wiring

要将红外避障传感器连接到ESP32,首先将传感器的VCC引脚连接到ESP32上的5V引脚。接下来,将传感器的GND引脚连接到ESP32上的任意一个GND引脚。最后,将传感器的OUT引脚连接到ESP32上的GPIO 14引脚。

对于蜂鸣器,将负极端子连接到GND,正极端子连接到GPIO 27引脚。确保所有连接牢固,且传感器正确供电。接线应该很简单,因为传感器和蜂鸣器只需要简单的电源和信号连接。

代码示例与讲解

在代码中,我们首先定义连接到避障传感器的引脚。这通过将标识符avoidPin设置为14来实现。我们还声明一个变量avoidState来保存传感器的输出状态。

const int avoidPin = 14;  // 避障模块引脚编号

int avoidState = 0;

在setup函数中,我们初始化串口通信并将avoidPin设置为输入模式。这允许ESP32读取传感器的输出状态。

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

在loop函数中,我们使用digitalRead(avoidPin)持续读取传感器的输出,并将结果存储在avoidState中。然后将该值打印到串口监视器,使我们能够看到何时检测到障碍物(输出为0)或未检测到障碍物(输出为1)。

void loop() {
  avoidState = digitalRead(avoidPin);
  Serial.println(avoidState);
}

完整代码请参考文章下方的加载部分。

演示/预期效果

当设置完成并上传代码后,您应该会在串口监视器上看到显示0或1,具体取决于是否检测到障碍物。当障碍物在检测范围内时,输出将读取为0,蜂鸣器将响起。如果移除障碍物,输出将读取为1,蜂鸣器将停止。该功能在视频中进行了演示(视频12:30处)。

常见问题可能包括接线错误,这可能导致传感器无法正常工作,或者串口监视器中的波特率不匹配,导致数据无法准确显示。如果遇到问题,请务必检查这些方面。

视频时间戳

  • 00:00 开始
  • 1:57 项目介绍
  • 4:33 避障传感器接线
  • 5:55 避障功能的Arduino代码
  • 7:36 在Arduino IDE中选择ESP32开发板和COM端口
  • 9:18 项目演示
  • 10:42 调节灵敏度以增加检测范围
  • 12:39 检测到障碍物时采取行动
  • 14:24 检测到障碍物时使用蜂鸣器

图像

ESP32-19-obstacle_voide-schematic
ESP32-19-obstacle_voide-schematic
ESP32-19-obstacle_voide-wiring
ESP32-19-obstacle_voide-wiring
818-ESP32 Tutorial 19/55- Arduino code for obstacle avoidance module
语言: C++
/*
 * 设置密码
 */
const int avoidPin = 14; // 避免模块引脚的数量

 // 用于存储避免状态的变量
int avoidState = 0;

void setup() {
  Serial.begin(115200);
 // 将避免引脚初始化为输入模式
  pinMode(avoidPin, INPUT);
}

void loop() {
 // 读取避免值的状态
  avoidState = digitalRead(avoidPin);
  Serial.println(avoidState);
}

资源与参考

文件📁

没有可用的文件。