ESP32 + INMP441数字麦克风 可以做哪些有趣的应用

news/2025/10/23 1:43:17/文章来源:https://www.cnblogs.com/FBsharl/p/19159399

非常好的问题!这是一个经典的嵌入式音频应用场景。我们来详细分解一下。

1. ESP32通过I2S采集INMP441,得到的是什么数据?

答案是:标准的PCM(脉冲编码调制)数据。

更具体地说:

  • 格式:INMP441 是一个 24位 的MEMS麦克风,它通过I2S总线输出的是24位有符号整数的PCM数据。

  • 内容:这些数据代表了麦克风在每个采样时刻感受到的声压瞬时值。它记录的是声音的完整波形,包含了频率振幅的所有信息。

  • 不是强度信息:您所说的“音频的强度信息”通常指的是经过处理后的结果,比如一段时间内的平均声压级(分贝dB)、RMS值等。原始I2S数据是“原材料”,而强度信息是从这些原材料中计算出来的“成品”。

数据流可以这样理解:
声音波形 -> INMP441 采样和量化 -> I2S总线上的 24-bit PCM 数据流 -> ESP32 接收并存储在缓冲区中。

一个重要提示: 由于ESP32的DMA通常处理的是字节(8-bit)的倍数,而24-bit不是,所以在接收和处理24位PCM数据时,通常会在每个采样值后面补一个0x00字节,使其在内存中存储为 32位(即24位数据在32位容器中,低24位有效,高8位为0)。你在编程时需要特别注意这一点。


2. 可以做哪些有趣的测试?

基于ESP32和INMP441,你可以做很多从简单到复杂的音频应用:

  1. 声级计

    • 计算实时分贝值,通过OLED屏幕显示,做一个噪音监测仪。

    • 关键技术:从PCM数据块计算RMS(均方根)值,然后转换为分贝。

  2. 声控开关

    • 拍手、跺脚等声音触发继电器或LED灯。可以设置阈值和触发延时。

  3. 音频频谱分析(音乐可视化)

    • 这是非常酷的应用!通过对PCM数据进行FFT(快速傅里叶变换),将时域信号转换为频域信号,得到各个频率成分的强度。

    • 然后可以用LED灯带、屏幕等设备,根据音乐节奏和频率来显示动态的光效。

  4. 关键词识别

    • 使用TensorFlow Lite Micro,在ESP32上运行一个简单的语音识别模型,识别“开灯”、“关灯”等预设指令。虽然资源有限,但做2-3个词的识别是可行的。

  5. 音频录制与存储

    • 将PCM数据编码成WAV格式(最简单,只需加个文件头),然后存储到SD卡中,制作一个简单的录音笔。

  6. 声源定位

    • 使用两个或多个INMP441麦克风,通过计算声音到达不同麦克风的时间差,来估算声源的方向。

  7. 和声/频率检测

    • 例如,做一个“吉他调音器”,通过分析基频来判断琴弦的音高是否准确。


3. 有哪些开源的库可以利用?

以下是一些在Arduino框架或ESP-IDF下非常流行的库:

核心I2S和音频驱动

  • ESP32-A2DP (https://github.com/pschatzmann/ESP32-A2DP)

    • 虽然主要用于A2DP蓝牙音频,但其内部的I2S配置和音频处理流程是极佳的学习资源,也支持麦克风输入。

  • ESP-IDF 内置的 I2S 驱动

    • 如果你使用ESP-IDF(而非Arduino),官方提供了强大且灵活的I2S驱动程序,可以最直接地配置和接收数据。

音频处理和编解码

  • ArduinoFFT (https://github.com/kosme/arduinoFFT)

    • 轻量级的FFT库,非常适合在ESP32上进行音频频谱分析,是实现音乐可视化的核心。

  • AudioTools (https://github.com/pschatzmann/arduino-audio-tools)

    • 一个功能极其丰富的音频库,作者是Phil Schatzmann。它提供了音频流的抽象、各种编解码器(包括WAV)、网络音频传输、FFT、滤波等功能,几乎涵盖了上面提到的所有应用场景。强烈推荐!

  • ESP32-audioI2S (https://github.com/schreibfaul1/ESP32-audioI2S)

    • 主要用于音频播放,但其I2S部分的代码也值得参考。

机器学习/关键词识别

  • TensorFlow Lite Micro

    • 官方提供了ESP32的移植和示例,特别是“Micro Speech”示例,就是为关键词识别设计的。你需要先训练模型,然后部署到ESP32上。

信号处理基础

对于计算分贝等基础操作,你可能不需要额外的库,但需要了解算法:

cpp
 
 
// 伪代码示例:计算一段PCM数据的分贝值
int32_t calculateRMS(int32_t *pcmData, int numSamples) {int64_t sum = 0;for (int i = 0; i < numSamples; i++) {// 注意:先将24位数据(存储在32位容器中)转换为有符号的32位值int32_t sample = pcmData[i] / 256; // 假设原始数据是左对齐的24位 in 32bitsum += (int64_t)sample * (int64_t)sample;}return (int32_t)sqrt(sum / numSamples);
}float calculateDB(int32_t rmsValue) {// 参考电压对应最大值(例如,对于24位有符号,最大值约为 2^23)float reference = 8388607.0;float db = 20.0 * log10((float)rmsValue / reference);return db;
}

总结

你的ESP32 + INMP441组合是一个功能强大的数字音频采集平台。你得到的是原始的PCM波形数据,这是进行所有高级音频处理的基础。

入门建议:

  1. 第一步:先确保能正确读取I2S数据,并将其通过串口打印出来,观察有声音和安静时的数值变化。

  2. 第二步:实现一个简单的声控灯,通过计算RMS和设置阈值来触发。

  3. 第三步:引入ArduinoFFT库,尝试做频谱分析,在串口绘图器里观察频谱。

  4. 第四步:挑战更复杂的应用,如音乐可视化或关键词识别。

祝你玩得开心!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/943864.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Solon v3.4.7, v3.5.6, v3.6.1 发布(国产优秀应用开发框架)

Solon 是新一代,Java 企业级应用开发框架。从零开始构建(No Java-EE),有灵活的接口规范与开放生态。采用商用友好的 Apache 2.0 开源协议,是“杭州无耳科技有限公司”开源的根级项目,是 Java 应用开发的生态基座…

tryhackme-预安全-windows基础-windows 基础知识3-18

tryhackme-Pre Security-Windows Fundamentals -Windows Fundamentals 3 房间地址:https://tryhackme.com/room/windowsfundamentals3xzx 这是网络安全入门的基础模块的计算机科学基础知识:Windows Fundamentals 3(…

从生产到出库:医疗器械行业SAP B1MES质量追溯闭环方案

医疗器械行业通过SAP B1与MES系统集成实现全流程质量追溯闭环,应对法规合规性、供应链复杂性及生产效率挑战,提供端到端的批次追溯、实时质量监控与成本优化解决方案,助力企业提升质量管理水平医疗器械产品十分特殊…

CF1430C Numbers on Whiteboard

CF1430C Numbers on Whiteboard思路 也是简单模拟一下,就会发现无论你怎么选择a和b,结果都是2; 既然如此,我就选择方便点的,我就从后往前选a和b。 带大家模拟一下: n=10,为偶数: 1 2 3 4 5 6 7 8 9 10 找规…

SAP实施专家指南:SAP B1 如何优化成本与缩短项目周期?

SAP Business One实施过程中的关键挑战,提供精准规划、团队配置、用户培训与持续优化的实用策略。帮助企业控制成本、缩短周期,快速实现数字化转型价值。SAP Business One(SAP B1)凭借“轻量+可扩展”的特性成为热…

excel-2

import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import java.io.*;import java.util.*;import java.time.LocalDate;i…

excel -1

import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import org.apache.poi.hssf.usermodel.HSSFWorkbook; import java.io.*;import java.util.*;import java.time.LocalDate;…

tryhackme-预安全-windows基础-windows 基础知识2-17

tryhackme-Pre Security-Windows Fundamentals -Windows Fundamentals 2 房间地址:https://tryhackme.com/room/windowsfundamentals2x0x 这是网络安全入门的基础模块的计算机科学基础知识:Windows Fundamentals 2(…

CF1248A Integer Points

CF1248A Integer Points思路 画图模拟一下可以发现就是奇数和奇数的会整点相交,偶数的和偶数的会整点相交。AC代码 #include <bits/stdc++.h> using namespace std; #define int long longsigned main() {ios::…

MIT6.824-MapReduce

Lab1: MapReduce(个人纪录版) (烂完了,深刻感觉到自己有多菜,各个方面) 最初的版本是全部自己写的,测试的时候会出现时而成功,时而失败的情况,重写两遍的我已经不想再看两遍代码了,后面让AI帮忙分析,然后一…

直流电机编码器测速

直流电机编码器测速 1:编码器简介 编码器是一种能将直线位移、角位移数据转换为脉冲信号、二进制编码的设备。它本质上就是一个传感器,可以把角位移或直线位移转换成电信号,并反馈给控制器,使控制器知道当前机械运…

搜索百科(5):Easysearch — 自主可控的国产分布式搜索引擎

《搜索百科》专栏系列,本文主要介绍 Easysearch,它是一个由极限科技(INFINI Labs)开发的轻量级、高性能搜索引擎,基于 Apache 2.0 协议的 Elasticsearch 7.10.2 版本衍生而来。Easysearch 在兼容性、性能和易用性…

从0到1自定义文字排版引擎:原理篇

从0到1自定义文字排版引擎:原理篇这篇文章是从0到1自定义富文本渲染的原理篇之一,此外你还可能感兴趣: 更多内容欢迎关注公众号:非专业程序员Ping一文读懂字符与编码 一文读懂字符、字形、字体 一文读懂字体文件 从…

Why doesnt the United States have a female president

Peaceful time we can not see the WW3. A narrow land. Can be accompanyed with a narrow soul. But how narrow could be defined? The greater the ability, the greater the responsibility. The president in U…

20251022 之所思 - 人生如梦

20251022 之所思1. 今天早会,在给老板和其他team的leader汇报问题时,逻辑不够严谨,受到别人的挑战后会很慌张。==> 根本原因是自己将一些概念混淆表达,没有表达严谨,容易被人误解,其次,自己表达还是语速偏快…

迎面走来的是邪恶构造题

记录一些构造题,也许不会太频繁更新(谁没事做这种神秘题) #8233. Operator Precedence 题目让你构造一个类似和的积等于积的和,然后和不能为 \(0\),\(a_i\) 也不能为 \(0\)。 考虑和的积肯定不能太大,也就是相差…

2025 CRP129 HD Elite 24V Truck Scanner – Heavy Duty OBD2 Diagnostics for Commercial Vehicles

**Unlock the Power of Heavy-Duty Diagnostics with the 2025 X431 CRP129 HD Elite Scanner** **The Problem: Diagnosing Heavy-Duty Trucks Shouldn’t Be a Headache** For mechanics and fleet owners working w…

AI 赋能 + 场景破界 低代码平台的未来发展趋势

如果说过去十年是低代码平台的 “萌芽期”,那么未来十年,它将在 AI 技术的加持下,迎来 “爆发式增长期”。从最初的可视化拖拽开发,到如今与 AI、数字孪生等前沿技术深度融合,低代码平台正不断突破技术边界与应用…

中小企业数字化转型难?低代码的轻量化破局方案

在数字化浪潮中,中小企业始终处于 “想转不敢转、想做不会做” 的尴尬境地。中国信通院《中小企业数字化转型指数报告》显示,仅 30% 的中小企业完成了基础数字化建设,60% 的企业因成本过高、技术人才短缺等问题停滞…

低代码引发组织协同革命 重塑数字化转型新逻辑

提到低代码,很多人首先想到的是 “开发效率提升”,但这只是其价值的冰山一角。在数字化转型的深层逻辑中,低代码正在引发一场深刻的 “组织协同革命”。它打破了传统 IT 开发模式下业务部门与技术部门的壁垒,重构了…