模块熟悉

第 13 课·视频:声音模块

麦克风只能告诉你"多响",不能告诉你"什么声"

先说一件容易误会的事:这个模块不能录音,也不能识别你说的话。

它只会告诉你一件事:现在有多响。

视频教程声音模块:接线、读声音大小、用阈值做反应下载 ↗

看的时候注意三件事

第一,它是四根线,但只用一根。

模块上有 AODO 两个输出:

针脚 含义 我们用它吗
AO 模拟量,声音越大数值越大 ✅ 用这个
DO 数字量,超过某个响度才翻转 ❌ 本课不用
GND
VCC 电源

DO 不是没用,只是它那个"门槛"要靠板上的蓝色小电位器拧,不太精确。我们直接用 AO 读数,在代码里判断,更灵活。

第二,注意安静的时候那个数。

它不是 0。安静的时候也有个底数,可能是 100 多,也可能是 300 多。这个数跟环境有关,也跟你的模块有关。

这一点特别重要:判断"吵不吵"的时候,不能拿 0 当基准,要拿"安静时的读数"当基准。

第三,注意我说话的时候数字怎么动。

不是慢慢涨上去的,是猛地跳一下、又掉回来。声音就是这样——它变化得非常快。

声音是"波形",你读到的是"高度"

声音是快速起伏的波形,读到的值反映的是当前响度,峰值保持能抓住一瞬间的响声

声音在物理上是一条上下起伏的波。这个模块做的事,就是把这条波变成一个数字——大致相当于"现在的波有多高"。

所以你读到的数,反映的是这一刻的响度,不是"这段话有多吵"。

这就带来一个实际问题:你打个响指,数字只跳一下。 如果程序刚好在它跳动那一刻检查,就抓到了;刚好错开,就漏了。

对策有两个,视频里用的是第一个:

  • 多读几次,取最大的那个(叫"峰值保持")——不容易漏
  • 多读几次,取平均——更稳,但会漏掉突然的响声

两种都行,看你想要什么。

自测

单选题这个麦克风模块能做什么?
单选题判断"现在是不是很吵",应该拿什么当基准来比较?
问答题为什么"响指一下"经常检测不到?怎么改进?
拓展为什么有的麦克风模块还有 DO 引脚?它和 AO 有什么本质区别?

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

提示:搜"麦克风模块 AO DO 区别"、"比较器 输出"。想一想:DO 那个"门槛"是谁定的?定在电路里和定在代码里,各有什么好处?

拓展板子的 ADC 读一次要多久?这会不会成为限制?

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

提示:搜"ESP32 ADC 采样率"、"analogRead 速度"。算一算:如果一秒钟只能读几千次,能不能完整捕捉声音的波形?

本节你要动手做的事

  • [ ] 接好线:VCC3.3VGNDGNDAO→ 一个模拟引脚
  • [ ] 先安静地跑一遍,记下安静时的读数是多少
  • [ ] 然后拍手、说话,看数字怎么跳
  • [ ] 试着在代码里设一个阈值,让它"听到响声就做点什么"
  • [ ] 做完自测题