发帖
2 0 0

【教程】小安派BW21-CBV-Kit——超声波测距

爱笑
管理员

376

主题

2649

回帖

2万

积分

管理员

积分
20224
小安派·BW21-CBV-KIt 163 2 2024-12-31 14:24:24

用料

  • BW21-CBV-Kit x 1
  • HC-SR04 超声波传感器 x 1
  • 降压电阻或者稳压器

示例

HC-SR04 是一种利用超声波测量距离的模块。它的外形酷似一双眼睛,因此经常被安装在机器人车辆或机械虫子上,成为它们的眼睛。它的工作原理是,首先将 TRIG 引脚 "拨高"(即先拉高再拉低)。HC-SR04 会发送 8 个 40kHz 的声波信号,并将 ECHO 引脚拉高。当声波返回时,将 ECHO 引脚拉低。


image.png

假设声速为 340 米/秒,则声音在空气中前进 1 厘米所需的时间为 340*100*10^-6 = 29 秒。

声波传播的距离是 HC-SR04 和物体之间距离的两倍,因此距离可以用 (time/29) / 2 = time / 58 计算。

HC-SR04 的工作电压为 5V。当我们将 ECHO 引脚拉高到 5V 时,该电压可能会损坏 BW21-CBV-Kit 的 GPIO 引脚。为避免出现这种情况,我们需要按如下步骤降低电压:

BW21-CBV-Kit 接线图:


image.png

我们选择阻值为 1:2 的电阻器,任何阻值都可以,但不建议使用过高的阻值。如果手头没有电阻器,可以使用电平转换器代替:

BW21-CBV-Kit 接线图+电阻器:


image.png

然后,在 "文件"->"示例"->"AmebaGPIO"->"HCSR04_Ultrasonic "中打开示例代码。


image.png

编译并上传到 BW21-CBV-Kit,然后按下重置按钮。打开串行监视器,计算结果每 2 秒钟输出到串行监视器。

image.png

请注意,HCSR04 模块使用声波的反射来计算距离,因此计算结果可能会受到物体表面材料的影响(例如,粗糙的表面容易导致声波散射,而柔软的表面则可能导致声波被吸收)。

代码参考

测量开始前,我们需要将 TRIG 引脚拉高 10us 然后拉低。这样做的目的是告诉 HC-SR04 我们即将开始测量:

digitalWrite(trigger_pin, HIGH);
delayMicroseconds(10);
digitalWrite(trigger_pin, LOW);

接下来,使用 pulseIn 测量 ECHO 引脚拉高的时间。

duration = pulseIn (echo_pin, HIGH);

最后,使用公式计算距离。

distance = duration / 58;
──── 0人觉得很赞 ────

使用道具 举报

2025-1-1 09:47:56
arduino果然简洁
2025-1-2 10:54:32
您需要登录后才可以回帖 立即登录
高级模式
返回
统计信息
  • 会员数: 28436 个
  • 话题数: 40513 篇