声音在程序里通常是一串采样数据,在硬件实验里却可以变成一组实时跳动的频谱柱。这个实验的价值不只是让 LCD 屏幕显示动画,而是把“声音采集、频域分析、图像绘制、屏幕刷新”串成一条完整的数据处理链路。对于 Python 和 AI 硬件入门学习来说,这类实验非常适合理解传感器数据如何从真实环境进入程序,再经过算法处理后变成可视化结果。本实验使用 CanMV K210 开发板读取 I2S 麦克风采集到的音频数据,通过 FFT 将声音信号从时域转换到频域,再把频谱幅度绘制成 48 根动态柱状图显示在 LCD 屏幕上。程序还加入了噪声门限、频谱放大、平滑处理、峰值保持和声音强度状态显示,让画面不只是简单抖动,而是更接近常见音乐频谱显示器的视觉效果。学习目标说明理解声音采集链路认识 I2S 麦克风如何把环境声音转换成数字音频数据掌握 FFT 基础应用使用 FFT 将音频采样数据转换成频谱幅度数据学会 LCD 可视化使用image绘制文字、网格线、频谱柱和峰值线,再通过 LCD 显示理解频谱显示优化使用噪声门限、幅度放大、平滑处理和峰值保持改善显示效果建立音频项目思路为后续声音检测、音频交互、声音分类和 AI 音频识别打基础这类实验连接了硬件采集、信号处理和图形显示三个方向。I2S 麦克风负责把声音送入程序,FFT 负责把采样数据转换成频域特征,LCD 负责把计算结果变成可观察的频谱画面。理解这条链路后,后续扩展声音强度检测、噪声提醒、音乐互动装置和 AI 声音识别都会更加自然。文章目录理论基础硬件设施软件代码扩展应用总结理论基础声音是一种随时间变化的信号。麦克风采集到声音后,程序拿到的是一段一段音频采样数据,这些数据可以理解成声音在时间轴上的变化记录。直接观察原始采样数据并不直观,因为它只表示某一时刻的幅度变化,很难看出低频、中频和高频成分分别有多少。FFT 的作用就是把声音从时域转换到频域。时域关注“声音随时间如何变化”,频域关注“声音由哪些频率成分组成”。在本实验中,rx.record(SAMPLE_POINTS)负责采集一段音频数据,FFT.run()负责进行频谱计算,FFT.amplitude()负责得到频谱幅度。程序再把这些幅度数据映射成屏幕上的频谱柱,高度越高,表示对应频段的能量越强。I2S 是常见的数字音频通信方式,通常包含数据线、帧同步线和时钟线。本实验使用物理引脚 34、33、32 连接 I2S 麦克风,分别对应数据输入、帧同步和串行时钟。I2S 麦克风输出的是数字音频数据,不是普通高低电平信号,因此不能像按键或 LED 那样用普通 GPIO 直接读取,而是需要通过maix.I2S创建音频输入对象进行采样。
