第 1 步:购买硬件
先把三样基础硬件准备好,后面的接线和测试会顺很多。
iot101 / ESP32-S3 + INMP441
面向新手小白的零基础指南,跟着步骤一步步做,就能轻松完成搭建,顺利点亮项目,点燃孩子对科技探索的兴趣。
先把三样基础硬件准备好,后面的接线和测试会顺很多。
先知道 ESP32-S3、INMP441 和面包板各自负责什么。
ESP32-S3 可以理解成一台很小的电脑。它能读传感器、连 WiFi、开网页,还能把数据发给浏览器。
在这个项目里,ESP32-S3 负责三件事:
官方文档:https://docs.waveshare.net/ESP32-S3-DEV-KIT-N8R8/
INMP441 是 I2S 数字麦克风。它和很多普通“声音传感器模块”不一样:
| 引脚 | 作用 | 接哪里 |
|---|---|---|
| VDD | 电源 | ESP32 的 3V3 |
| GND | 地 | ESP32 的 GND |
| SCK | I2S 时钟 | 一个普通 GPIO |
| WS | 左右声道时钟 | 一个普通 GPIO |
| SD | 音频数据输出 | 一个普通 GPIO |
| L/R | 左右声道选择 | 先接 GND |
面包板是一块不用焊接的实验板。你可以把 ESP32-S3、INMP441 和杜邦线插在上面,方便反复调整接线。
使用时注意同一排小孔通常是连在一起的,但中间凹槽两边默认不连通。接线前先看清楚行列方向,能少很多排查时间。
接线前先断电,默认使用 GPIO5、GPIO6、GPIO4。
| INMP441 | ESP32-S3 |
|---|---|
| VDD | 3V3 |
| GND | GND |
| SCK | GPIO5 |
| WS | GPIO6 |
| SD | GPIO4 |
| L/R | GND |
选择 ESP32-S3 开发板,并打开串口监视器。
在 Arduino IDE 里选择:
ESP32S3 Dev Module如果你的 Arduino IDE 里有更准确的 Waveshare ESP32-S3 选项,也可以选对应选项。拿不准时,先用 ESP32S3 Dev Module。
| 选项 | 推荐值 |
|---|---|
| USB CDC On Boot | Enabled |
| Flash Size | 8MB |
| PSRAM | OPI PSRAM 或 Enabled |
| Upload Speed | 460800 或 921600 |
| Port | 选择插入 ESP32 后出现的端口 |
如果上传不稳定,把 Upload Speed 降到 460800。
打开串口监视器,波特率选择:
115200
你会看到 ESP32 打印出来的启动信息、WiFi 地址、WebSocket 连接状态。
确认声音数据会变化,再进入网页步骤。
串口测试通过后,上传网页仪表盘程序。
串口测试通过后,打开:
arduino/02_sound_visualizer/02_sound_visualizer.ino
上传后打开串口监视器。
| 项目 | 值 |
|---|---|
| WiFi 名称 | ESP32-AudioLab |
| 密码 | 12345678 |
| 浏览器地址 | http://192.168.4.1 |
Mac 连接这个 WiFi 后,浏览器打开 http://192.168.4.1。
如果想让 ESP32 加入你家里的 WiFi,修改 02_sound_visualizer.ino 顶部:
const char *WIFI_SSID = "你的WiFi名";
const char *WIFI_PASSWORD = "你的WiFi密码";
这时 ESP32 不会显示 ESP32-AudioLab 热点。它会在串口监视器里打印自己的 IP,比如:
WiFi connected: http://192.168.1.23
Mac 和 ESP32 必须在同一个 WiFi 下。
| 指标 | 含义 |
|---|---|
| 估算声级 | 用 dBFS 加校准偏移得到的估算 dB SPL |
| 数字满幅 | dBFS,数字音频相对满幅的强度 |
| RMS | 一帧声音的平均能量 |
| 主峰 | 当前频谱里最明显的频率 |
如果 WiFi、上传、波形或分贝不符合预期,从这里开始查。
先判断 ESP32 程序有没有真的跑起来。
115200。RST 或 EN。AP mode: connect to ESP32-AudioLab then open http://192.168.4.1
如果没有这行,Mac 看不到热点是正常的,因为热点根本还没有启动。
| 常见原因 | 处理 |
|---|---|
| 代码没有成功上传 | 重新点 Arduino IDE 的上传按钮 |
| 你填了家里 WiFi 名 | ESP32 会连家里 WiFi,不会开 ESP32-AudioLab |
| 板子没正常启动 | 拔插 USB,按 RST/EN |
| 选错端口或板型 | 选 ESP32S3 Dev Module 和正确端口 |
| USB 线只能充电 | 换一根能传数据的 USB 线 |
这是开发板引脚暴露方式的问题。ESP32-S3 芯片通常有 GPIO5,但你的开发板排针不一定引出它,或者丝印不叫 GPIO5。
先回到 01_mic_serial_test。如果串口测试也没变化,就是麦克风/I2S/接线问题,不是网页问题。
如果串口测试有变化,但网页没波形:
先调网页里的 显示增益。如果仍然很小,改代码:
constexpr uint8_t PCM_GAIN_SHIFT = 13;
数字越小,波形越大。
这说明放大太多了。改成:
constexpr uint8_t PCM_GAIN_SHIFT = 15;
数字越大,波形越小。
这是正常的。INMP441 不是校准过的专业声级计。
校准方法:
dB 校准偏移。例如参考值是 60 dB,网页显示 55 dB,就把偏移加 5。
跑通以后,可以继续挑战这些小任务。
每 10 秒记录一次估算分贝,第二天看一张曲线。可以记录时间、平均 dB、最大 dB、主峰频率。
如果连续 5 秒超过 65 dB,就标记一次事件,并显示开始时间、持续时间、最大分贝。
鸟叫通常有比较明显的高频成分。可以先观察 2 kHz 到 8 kHz 的频谱能量。
让低频控制红色,中频控制黄色,高频控制蓝绿色。也可以加 LED 灯带,但要先学习供电安全。