ESP32S3读取数字麦克风INMP441的音频数据
ESP32S3 与 INMP441 麦克风模块的集成通常涉及使用 I2S 接口进行数字音频数据的传输。INMP441 是一款高性能的数字麦克风,它通过 I2S 接口输出音频数据。在 Arduino 环境中,ESP32S3 的开发通常使用 ESP-IDF(Espressif IoT Development Framework)或兼容的 Arduino Core for ESP32,后者允许你使用类似于 Arduino 的编程模型。
由于 Arduino Core for ESP32 对 I2S 的直接支持可能不如 ESP-IDF 那么全面,但你可以使用已有的库或编写自己的代码来与 INMP441 通信。以下是一个简化的步骤指南和示例代码,用于在 Arduino 环境中使用 ESP32S3 读取 INMP441 的数据信号。
软件编程(Arduino 语言风格)
在 Arduino Core for ESP32 中,I2S 的支持可能不如 ESP-IDF 那么直接,但你可以使用现有的库或自己编写代码来配置和使用 I2S 接口。以下是一个简化的示例代码框架,用于初始化 I2S 接口并尝试读取 INMP441 的数据。请注意,这个示例可能需要根据你的具体硬件连接进行调整。
硬件连接
1、电源和地线连接
- INMP441 VCC → ESP32的3.3V:为麦克风模块提供工作电压,确保其正常运行。
- INMP441 GND → ESP32的GND:完成电路的接地连接,确保电路的稳定性和可靠性。
2、I2S 信号线连接
- INMP441 SCK(时钟)→ ESP32的GPIO 17:SCK是I2S通信的时钟信号,用于同步数据传输。ESP32的GPIO 17被配置为I2S的时钟引脚,以接收来自麦克风的时钟信号。
- INMP441 WS(帧选择)→ ESP32的GPIO 18:WS用于选择左声道或右声道的数据帧。ESP32的GPIO 18被配置为I2S的帧选择引脚,以识别当前数据帧的声道信息。
- INMP441 SD(数据)→ ESP32的GPIO 16:SD是传输数字音频数据的信号线。ESP32的GPIO 16被配置为I2S的数据引脚,以接收麦克风采集到的数字音频信号。
连线依据总结
这种连线方式是基于I2S协议的标准连接方法,确保了ESP32S3能够正确地与INMP441麦克风进行通信,实现音频数据的采集和处理。通过将麦克风的I2S信号引脚连接到ESP32的相应GPIO引脚,并配置ESP32的I2S接口,可以实现高质量的音频数据传输。
引脚名称 | 功能描述 |
---|---|
VDD | 电源引脚,连接1.8V至3.3V的电源 |
GND | 地引脚,连接电源地 |
SD | 串行数据输出引脚,通过I2S接口传输数字音频数据 |
SCK | 串行时钟输入引脚,用于I2S接口的时钟信号 |
WS | 字选择输入引脚,用于I2S接口的帧同步信号(也称为LRCK) |
L/R | 左/右声道选择引脚。当该引脚设置为低电平时,麦克风在I²S帧中输出其信号到左声道;当该引脚设置为高电平时,麦克风在I²S帧中输出其信号到右声道 |
这些引脚通过I2S协议实现音频数据的传输,其中SCK、WS和SD是I2S通信的关键引脚,L/R引脚用于选择声道。
Arduino代码
#include <Arduino.h>
#include <driver/i2s.h>// 定义I2S引脚
#define I2S_WS 18
#define I2S_SD 16
#define I2S_SCK 17
#define I2S_PORT I2S_NUM_0
#define bufferLen 1024 // 缓冲区大小int16_t sBuffer[bufferLen]; // 存储音频数据的缓冲区void setup() {Serial.begin(115200);Serial.println("Setup I2S...");// 初始化I2Si2s_config_t i2s_config = {.mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_RX),.sample_rate = 48000, // 采样率.bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT,.channel_format = I2S_CHANNEL_FMT_ONLY_LEFT,.communication_format = (i2s_comm_format_t)(I2S_COMM_FORMAT_STAND_I2S),.intr_alloc_flags = 0,.dma_buf_count = 16,.dma_buf_len = bufferLen,.use_apll = false};i2s_driver_install(I2S_PORT, &i2s_config, 0, NULL);i2s_pin_config_t pin_config = {.bck_io_num = I2S_SCK,.ws_io_num = I2S_WS,.data_out_num = I2S_PIN_NO_CHANGE,.data_in_num = I2S_SD};i2s_set_pin(I2S_PORT, &pin_config);i2s_start(I2S_PORT);
}void loop() {// 从INMP441读取数据size_t bytesIn = 0;esp_err_t result = i2s_read(I2S_PORT, &sBuffer, bufferLen * sizeof(int16_t), &bytesIn, portMAX_DELAY);if (result == ESP_OK && bytesIn > 0) {// 通过串口输出数据Serial.print("[");for (int i = 0; i < bufferLen; i++) {Serial.print(sBuffer[i]);if (i < bufferLen - 1) {Serial.print(", ");}}Serial.println("]");}
}
代码说明
-
I2S配置:
- 使用I2S接口读取INMP441的音频数据。
- 配置采样率为48000Hz,16位深度,单声道。
-
音频数据读取:
- 使用
i2s_read
函数从I2S接口读取音频数据。 - 将数据通过UDP发送到接收端。
- 使用
注意事项
- 如果需要本地处理音频数据,可以将数据存储到文件或进行实时分析。
通过上述代码,你可以成功读取INMP441麦克风的数据信号,并通过ESP32S3进行处理或传输。
实验结果
相关文章:

ESP32S3读取数字麦克风INMP441的音频数据
ESP32S3 与 INMP441 麦克风模块的集成通常涉及使用 I2S 接口进行数字音频数据的传输。INMP441 是一款高性能的数字麦克风,它通过 I2S 接口输出音频数据。在 Arduino 环境中,ESP32S3 的开发通常使用 ESP-IDF(Espressif IoT Development Framew…...

利用后缀表达式构造表达式二叉树的方法
后缀表达式(逆波兰表达式)是一种将运算符放在操作数之后的表达式表示法。利用后缀表达式构造表达式二叉树的方法主要依赖于栈结构。 转换步骤 初始化 创建一个空栈。 遍历后缀表达式 对后缀表达式的每个符号依次处理: 遇到操作数 如果当前符…...

使用express创建服务器保存数据到mysql
创建数据库和表结构 CREATE DATABASE collect;USE collect;CREATE TABLE info (id int(11) NOT NULL AUTO_INCREMENT,create_date bigint(20) DEFAULT NULL COMMENT 时间,type varchar(20) DEFAULT NULL COMMENT 数据分类,text_value text COMMENT 内容,PRIMARY KEY (id) ) EN…...

YOLOv12本地部署教程——42%速度提升,让高效目标检测触手可及
YOLOv12 是“你只看一次”(You Only Look Once, YOLO)系列的最新版本,于 2025 年 2 月发布。它引入了注意力机制,提升了检测精度,同时保持了高效的实时性能。在保持速度的同时,显著提升了检测精度。例如&am…...

SQLAlchemy系列教程:如何防止SQL注入
SQL注入是一种常见的安全漏洞,它允许攻击者通过应用程序的SQL查询操纵数据库。使用ORM工具(如SQLAlchemy)提供的内置功能可以帮助减轻这些风险。本教程将指导您完成保护SQLAlchemy查询的实践。 了解SQL注入 当攻击者能够通过用户输入插入或操…...

1. 树莓派上配置机器人环境(具身智能机器人套件)
1. 安装树莓派系统 镜像下载地址(windows/Mac/Ubuntu),安装Pi5. 2. 环境配置(登录Pi系统) 2.1 启用 SSH From the Preferences menu, launch Raspberry Pi Configuration. Navigate to the Interfaces tab. Select Enable…...

基于SpringBoot的智慧停车场小程序(源码+论文+部署教程)
运行环境 • 前端:小程序 Vue • 后端:Java • IDE工具:IDEA(可自行选择) HBuilderX 微信开发者工具 • 技术栈:小程序 SpringBoot Vue MySQL 主要功能 智慧停车场微信小程序主要包含小程序端和…...

【从零开始学习计算机科学】数字逻辑(九)有限状态机
【从零开始学习计算机科学】数字逻辑(九)有限状态机 有限状态机状态机的表示方法有限状态机的Verilog描述有限状态机 有限状态机(简称状态机)相当于一个控制器,它将一项功能的完成分解为若干步,每一步对应于二进制的一个状态,通过预先设计的顺序在各状态之间进行转换,状…...

HarmonyOS Next~鸿蒙系统ArkCompiler跨平台编译技术的革新实践
HarmonyOS Next~鸿蒙系统ArkCompiler跨平台编译技术的革新实践 引言 在万物互联时代,操作系统对编译技术的需求已从单纯的代码转换演变为跨设备协同、高效资源调度与极致性能优化的综合挑战。华为鸿蒙系统(HarmonyOS)自主研发的ArkCompiler…...

AI大模型概念知多少
什么是大模型?什么是模型参数 1)现在的大模型要解决的问题,就是一个序列数据转换的问题: 输入序列 X X[x1 ,x2 ,...,xm ], 输出序列Y[y1 ,y2 ,…,yn ],X和Y之间的关系是:YWX。 “大模型”这个词…...

powermock,mock使用笔记
介于日本的形式主义junit4单体测试,特记笔记,以下纯用手机打出来,因为电脑禁止复制粘贴。 pom文件 powermock-module-junit1.7.4 powermock-api-mokcito 1.7.4 spring-test 8 1,测试类头部打注解 RunWith(PowerMockRunner.class…...

基于置换对称性的模型融合:实现凸盆地单盆地理论
【摘要】 一种合并神经网络模型的新方法,通过置换对称性来合并模型。即使在大规模的非凸优化问题中,神经网络损失景观似乎通常只有一个(几乎)封闭的盆地,这在很大程度上归因于隐藏层单元置换对称性。作者介绍了三种算法,用于将一个模型的单元置换为与参考模型对齐,从而…...

把握好自己的节奏, 别让世界成为你的发条匠
我见过凌晨两点还在回复工作群消息的职场妈妈,也见过凌晨三点抱着手机刷短视频的年轻人。 地铁站台的上班族永远在狂奔,连刚会走路的小孩都被早教班塞满了日程表。 现如今生活节奏快,像一只巨大的发条,每个人都被拧得紧紧的&#…...

linux awk命令和awk语言
linux awk和awk语言 通常大家说的awk几乎都是在linux/unix中使用的awk命令,见下, https://www.geeksforgeeks.org/awk-command-unixlinux-examples/ 作为命令使用的话,存在下内容 Awk 是一个工具,使程序员能够编写小巧但有效的…...

电脑网络出现问题!简单的几种方法解除电脑飞行模式
在某些情况下,您可能需要关闭电脑上的飞行模式以便重新连接到 Wi-Fi、蓝牙或其他无线网络。本教程中简鹿办公将指导您如何在 Windows 和 macO S操作系统上解除飞行模式。 一、Windows 系统下解除飞行模式 通过快捷操作中心 步骤一:点击屏幕右下角的通知…...

ASP.NET Core 6 MVC 文件上传
概述 应用程序中的文件上传是一项功能,用户可以使用该功能将用户本地系统或网络上的文件上传到 Web 应用程序。Web 应用程序将处理该文件,然后根据需要对文件进行一些验证,最后根据要求将该文件存储在系统中配置的用于保存文件的存储中&#…...

【VBA】WPS/PPT设置标题字体
通过VBA,配合左上角的快速访问工具栏,实现自动化调整 选中文本框的 字体位置、大小、颜色。 配合quicker更加便捷 Sub DisableAutoWrapAndFormat()Dim shp As Shape 检查是否选中了一个形状(文本框)If ActiveWindow.Selection.Typ…...

白盒测试(4):电源瞬态电流测试
电源瞬态电流测试至关重要,主要用于评估电源在负载突变时的响应能力。通过测试,可以确保电源在短时间内提供足够的电流并快速恢复稳定,避免电压波动或系统故障。这对于保证电子设备的可靠性和稳定性尤为关键,尤其是在高动态负载应…...

三维建模与视频融合(3D-Video Integration)技术初探。
三维建模与视频融合(3D-Video Integration)是一种将虚拟三维模型无缝嵌入实拍视频场景的技术,广泛应用于影视特效、增强现实(AR)、游戏开发、广告制作 、视频监控 等领域。 一、技术核心流程 三维建模与动画 使用工具…...

DeepSeek提问术:解锁AI交互新姿势-20 个精准提问框架
一、引言 在人工智能的浩瀚星空中,DeepSeek 无疑是一颗耀眼的新星,以其独特的光芒照亮了 AI 发展的新路径。自问世以来,DeepSeek 凭借先进的技术架构、强大的自然语言处理能力和出色的性能表现,迅速在竞争激烈的 AI 领域崭露头角,成为众多开发者、研究人员以及各行业从业者…...

避免魔法值和多层if的关键:编程范式和设计模式
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、案例分析二、技术手段函数式接口在枚举中 三、优化后完整代码总结 前言 提示:避免魔法值和多层if的关键:编程范式和设计模式&#…...

第六课:数据存储三剑客:CSV/JSON/MySQL
在Python的数据存储与处理领域,CSV、JSON和MySQL被广大开发者誉为“数据存储三剑客”。它们各自在不同的场景下发挥着重要作用,无论是简单的数据交换、轻量级的数据存储,还是复杂的关系型数据库管理,都能找到它们的身影。本文将详…...

Qt常用控件之表格QTableWidget
表格QTableWidget QTableWidget 是一个表格控件,行和列交汇形成的每个单元格,是一个 QTableWidgetItem 对象。 1. QTableWidget属性 QTableWidget 的属性只有两个: 属性说明rowCount当前行的个数。columnCount当前列的个数。 2. QTableW…...

基于websocket的多用户网页五子棋 --- 测试报告
目录 功能测试自动化测试性能测试 功能测试 1.登录注册页面 2.游戏大厅页面 3.游戏房间页面 自动化测试 1.使用脑图编写web自动化测试用例 2.创建自动化项目,根据用例通过selenium来实现脚本 根据脑图进行测试用例的编写: 每个页面一个测试类&am…...

TypeError: Cannot assign to read only property ‘xxx‘ of object ‘#<Object>‘
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…...

SyntaxError: Unexpected token ‘xxx‘
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…...

简记_开关电源基础知识(二)
一、控制器与稳压器 假设开关损耗、导通损耗、驱动损耗的变化远小于输出功率的变化(可忽略),则占空比越大,Po越大,效率越高。 二、同步与非同步 同步是采用通态电阻极低的MOSFET来取代整流二极管,以降低整…...

grum-与gam-词源故事
“grum”词根的含义主要与“咕隆、发哼声、咕咕叫、发隆隆声”等相关。在16世纪90年代后,这个词开始被用来表示发出低沉持续的咆哮声或隆隆声,类似于饥饿的胃或某些动物发出的声音。 早期的富贵家族经常雇佣人去干活,体力活很容易因为劳工过…...

联合索引关于In和范围查询影响索引使用的情况分析
索引类型 1、unique ,唯一索引 2、normal,普通索引 3、fulltext, 全文索引 4、spatial,空间索引 样例 三个字段的联合索引,走一个字段是key_len是5,三个是15. 联合索引关于 使用in是不影响后续列 范围查询大于或小于…...

【目标检测】【NeuralPS 2023】Gold-YOLO:通过收集与分发机制实现的高效目标检测器
Gold-YOLO: Efficient Object Detector via Gather-and-Distribute Mechanism Gold-YOLO:通过收集与分发机制实现的高效目标检测器 0.论文摘要 在过去的几年中,YOLO系列模型已成为实时目标检测领域的领先方法。许多研究通过修改架构、增强数…...