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

[复制链接]
查看36 | 回复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 引脚拉低。

假设声速为 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 接线图:

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

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

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

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

请注意,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;
用心做好保姆工作
回复

使用道具 举报

arduino果然简洁
回复 支持 反对

使用道具 举报

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则