IoT-For-Beginners 语音识别实战:Wio Terminal 麦克风与扬声器硬件配置指南
【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners
本指南面向 Microsoft Learn「IoT-For-Beginners」课程第 6 项目(Consumer)第 1 课「用 IoT 设备识别语音」中的 Wio Terminal 硬件路线,完整讲解如何为 Wio Terminal 配置麦克风与扬声器:它本身内置了可用于语音采集的麦克风,通过外接 ReSpeaker 2-Mics Pi Hat 扩展板获得扬声器输出能力,并借助 SD 卡存储后续下载的音频。读完本文,你将掌握 Wio Terminal 的音频硬件选型、GPIO 接线方法、SD 卡格式化要求,并能结合仓库内配套的 PlatformIO 工程验证音频采集链路。
硬件概览:Wio Terminal 内置麦克风与 ReSpeaker 扩展
Wio Terminal(Seeed Studio 出品的基于 ATSAMD51 的微控制器开发板)已经内置了一个麦克风,可直接用于采集语音,为后续的语音转文字(Speech to Text)提供音频输入。这是本课程选择 Wio Terminal 作为 Arduino 路线设备的重要原因之一——无需额外焊接或连接麦克风模块。
要加入扬声器(音频输出),课程推荐使用ReSpeaker 2-Mics Pi Hat扩展板。这是一块外部扩展板,板上包含:
- 2 个 MEMS 麦克风(可作为额外麦克风输入);
- 一个扬声器连接端口(JST);
- 一个 3.5mm 耳机插孔(headphone socket)。
ReSpeaker 采用 Raspberry Pi 标准的 40 pin GPIO 排针,而 Wio Terminal 背面提供了与之对应的 GPIO 插槽,因此二者可以通过排线直连。
扬声器选型
除 ReSpeaker 扩展板本身外,你还需要准备以下任意一种音频输出设备:
- 带 3.5mm 插头的耳机(headphones);
- 带 3.5mm 插头的扬声器;
- 带 JST 连接线的扬声器,例如 Mono Enclosed Speaker(2W 6Ω)。
💁 如果你熟悉焊接操作,也可以选用 40 Pin Raspberry Pi Hat Adapter Board For Wio Terminal 这类转接板来连接 ReSpeaker,从而避免手工排线。
连接线材与存储介质
- 40 根 pin-to-pin 跳线(也称公对公跳线),用于将 ReSpeaker 的 40 pin 排针与 Wio Terminal 背面的 GPIO 插槽一一对应连接;
- 一张 SD 卡:课程后续需要下载并回放音频,Wio Terminal 对 SD 卡有明确限制——最大仅支持 16GB 容量,且必须格式化为FAT32 或 exFAT文件系统。
任务一:连接 ReSpeaker Pi Hat 与 Wio Terminal
在开始前请确保Wio Terminal 处于断电状态。然后按照下面的步骤,用跳线将 ReSpeaker 2-Mics Pi Hat 连接到 Wio Terminal 背面的 GPIO 插槽。
参考如下引脚连接示意图,确定左右两侧插槽的对应关系:
将 ReSpeaker 与 Wio Terminal 摆放在同一方向,使两侧的 GPIO 插槽朝上,并位于左手边。
从ReSpeaker GPIO 排针左上角第一个插孔开始,取一根 pin-to-pin 跳线,将其连接到Wio Terminal 左上角对应的插孔。
沿 GPIO 插槽左侧一列逐孔向下重复此操作,确保每个引脚都牢固插入:
💁 如果你的跳线是排线(ribbon)形式,请保持整排跳线不要拆散,这样更容易按顺序确认每根线都正确连接。
用同样的方法连接右侧的 GPIO 插槽。右侧的跳线需要绕开已经接好的左侧跳线走线:
💁 若使用排线,可将排线拆分为两股,分别从已有跳线的两侧绕过,避免相互纠缠。
💁 接线过程中可以用胶带把插孔固定成块,防止个别跳线松脱。
接好跳线后,将扬声器接入 ReSpeaker:
- JST 扬声器:将 JST 连接线插入 ReSpeaker 的 JST 端口;
- 3.5mm 插头扬声器或耳机:直接插入 ReSpeaker 的 3.5mm 耳机插孔。
💡 接线完成后建议再次核对左右两列是否一一对应(左上对左上、左下对左下、右上对右上、右下对右下),错误的错位连接可能损坏 GPIO 引脚。
任务二:设置 SD 卡
ReSpeaker 扩展板负责音频输出,而SD 卡用于存放后续从云端下载的音频文件(例如语音反馈所用的提示音),因此需要提前准备好并正确格式化。
将 SD 卡接入电脑(若电脑没有 SD 卡槽,请使用外置读卡器)。
使用电脑上合适的磁盘工具格式化 SD 卡,文件系统必须选择 FAT32 或 exFAT——这是 Wio Terminal 固件能够识别的要求;容量方面请勿使用超过 16GB 的卡。
将 SD 卡插入 Wio Terminal左侧、电源开关正下方的 SD 卡槽,确保完全推入并听到卡扣到位的声音。必要时可用薄片工具或另一张 SD 卡辅助推入:
💁 取出 SD 卡时,只需轻轻向内按压,卡片会自动弹出;同样需要扁平螺丝刀之类的薄工具辅助。
从硬件到代码:仓库中的配套录音工程
硬件接线完成后,你可以直接使用本仓库中已经写好的工程验证麦克风采集链路,而不必从零编写底层代码。对应工程位于 code-record/wio-terminal/smart-timer:
- platformio.ini:PlatformIO 工程配置,目标板为
seeed_wio_terminal(框架 Arduino),依赖Seeed Arduino FS @ 2.1.1与Seeed Arduino SFUD @ 2.0.2两个库,并通过-DSFUD_USING_QSPI编译宏启用 QSPI 访问板载 Flash; - main.cpp:入口程序。
setup中初始化串口、初始化 SFUD(Flash 驱动)并开启 QSPI 快速读取、以INPUT_PULLUP模式配置 C 键,随后调用mic.init();loop中检测 C 键按下后启动 4 秒录音,录音结束后调用processAudio()(本阶段为空实现,后续课程会在此接入语音转文字),再调用mic.reset()复位; - mic.h:封装麦克风采集的
Mic类,包含音频常量定义(采样率RATE16000、录音时长SAMPLE_LENGTH_SECONDS4 秒、WAV 缓冲BUFFER_SIZE等)、DMAC/ADC 配置函数configureDmaAdc()、WAV 文件头结构wavFileHeader与回调audioCallback(); - flash_writer.h:
FlashWriter类,实现按 Flash 擦除粒度缓冲、写入与flushSfudBuffer()收尾,把音频数据持久化到板载 Flash。
💡 Wio Terminal 仅有 192KB RAM,不足以缓存超过数秒的音频,因此该工程借助板载 4MB Flash 存储录音:DMAC 按固定采样间隔从 ADC 抓取数据写入双缓冲(
_adc_buf_0/_adc_buf_1),缓冲满后由中断处理并转存 Flash,从而在不丢数据的前提下完成长录音。
构建与验证方法:在 VS Code 中打开smart-timer工程,用 PlatformIO 的 Build 与 Upload 烧录到 Wio Terminal,打开串口监视器(波特率 9600)后按下 C 键(左侧、靠近电源开关的那颗按键)并说话,串口将依次打印Ready.→Starting recording...→Finished recording,表示 4 秒音频已成功采集并写入 Flash。
接线与使用的注意事项
- 断电操作:所有 GPIO 跳线必须在 Wio Terminal 断电状态下连接,避免带电插拔损坏引脚。
- SD 卡规格:仅支持 ≤16GB、FAT32/exFAT 格式;格式不匹配可能导致无法读写音频文件。
- 采样率与内存的关系:工程默认以 16KHz、16bit 单声道采集,每秒产生约 32KB 数据;如需更长录音,可增大
SAMPLE_LENGTH_SECONDS,其余常量会自动按公式重算,但要注意 Flash 空间与处理耗时的上限。 - 后续课程衔接:本节完成的是「配置麦克风与扬声器」的硬件步骤,下一步的音频采集实现见 wio-terminal-audio.md,语音转文字实现见 wio-terminal-speech-to-text.md,课程总览与 Raspberry Pi、虚拟设备两条硬件路线见 README.md。
总结
通过本指南,你完成了语音识别「智能厨房计时器」项目的 Wio Terminal 硬件准备:确认了内置麦克风可作语音输入,将 ReSpeaker 2-Mics Pi Hat 通过 40 pin 跳线与 Wio Terminal GPIO 一一对接以提供扬声器输出,并准备好了符合容量与文件系统要求的 SD 卡。配合仓库中code-record工程,即可按下 C 键录制 4 秒语音并写入板载 Flash,为下一步接入云端语音转文字服务奠定基础。
【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考