模块熟悉

第 15 课·视频:超声波模块

四根线、两个触发脚,测出"前面有多远"

超声波是套件里唯一能测距离的模块。它长着两只"眼睛"——一个是喇叭,一个是耳朵。

视频教程超声波:四线接法、Trig/Echo 手感、读距离下载 ↗

看的时候注意三件事

第一,它是四根线,不是三根。

VCCTrigEchoGND。比别的模块多一根,因为它要发信号,也要收信号——一个引脚负责"喊",一个引脚负责"听"。

第二,注意 TrigEcho 分别接在哪个脚。

这两个引脚在代码里是分开填的。接反了不会烧坏,但读数一定是错的(通常是 0 或者一个巨大的数)。

第三,注意手掌离得远近,数字怎么变。

把手慢慢移远,看数字一点点变大。你会看到它不是完全平滑的——偶尔跳一下,这是正常的,后面讲。

它到底怎么测距离

原理其实特别朴素,就是回声

你对着山谷喊一声,听到回声。你从喊出去到听见回声,中间隔了多久?隔得越久,山谷越远。

超声波测距原理:Trig 发出触发脉冲,Echo 输出高电平,高电平时长就是声音往返的时间

超声波模块干的就是这件事:

  1. Trig 脚给它一个触发脉冲——"喊一声"
  2. 它在 Echo 脚上输出一个高电平——高电平持续的时间,就是"喊出去到听到回声"的时间
  3. 程序量出这个时间,乘上声速,除以 2

为什么要除以 2? 因为声音是跑过去又跑回来,走的距离是你到物体的两倍。

为什么读数会跳

三个原因,都会让你的数字不稳:

物体表面。 声音遇到软的东西(比如衣服、窗帘)会被吸收,几乎不反射。 角度。 超声波是喇叭形发射的,物体歪着,回波就弱。 斜面和尖角。 声音会弹到别处去,不往回来。

所以超声波的读数天然就有波动。你后面写代码的时候,别拿单个读数做判断——多读几次取中间值,或者取平均,会稳很多。

自测

单选题超声波模块比别的模块多一根线,多的那根是干什么的?
单选题程序算出"声音来回走的时间"是 2000 微秒,那么物体离你大约多远?(声速按 340 m/s 算)
问答题超声波测出来一直是 0,可能是什么原因?列出你的排查顺序。
拓展为什么超声波测距的最小距离有下限?

这个问题课上不讲,留给你自己找答案——**问 AI 是最好的办法**。

提示:搜"超声波 最小测距 盲区 原因"。想一想:如果物体太近,回声是不是和"还在喊"的声音混在一起了?

拓展同样测距离,红外、激光、超声波各有什么优劣?

这个问题课上不讲,留给你自己找答案——**问 AI 是最好的办法**。

提示:搜"超声波 激光 红外 测距 对比"。想一想扫地机器人和电梯里的测距用的是哪种、为什么。

本节你要动手做的事

  • [ ] 接好四根线:VCC3.3VGNDGNDTrig/Echo→ 两个 GPIO
  • [ ] 跑程序,把手放在不同距离,看数字变化
  • [ ] 拿尺子量一下实际距离,看看读数准不准
  • [ ] 试试用不同材料挡(手、书本、衣服),看读数有什么不同
  • [ ] 做完自测题