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…...
docker环境下部署face-search开源人脸识别模型
由于我们是直接将face-search部署在docker容器中的,所以,在部署之前一定要检查一下自己的docker环境,要不然部署过程中会出现各种各样的问题 我这里的docker环境是 一、安装docker环境 如果docker版本比较低或者docker-compose的版本比较低的情况下,部署的时候docker的yml…...
301.华为交换机堆叠技术基础
华为交换机堆叠技术基础 一、概念及原理部分1.堆叠简介1.1 什么是堆叠1.2 可靠性网络架构1.3 华为堆叠设备1.4 其他厂商的堆叠2.堆叠的示意图3.堆叠的应用3.1 中小企业3.2 园区网4.堆叠的原理4.1基本的概念4.2 堆叠建立4.3 角色选举4.4 版本同步4.5 配置同步4.6 堆叠系统的登录…...
【数据库创建】用ij工具部署Derby数据库并验证
Java有一个内置的Derby数据库,是一个完全用Java语言编写的、功能强大的微型数据库,其基础引擎和内嵌的JDBC驱动总共大约2MB大小。Derby为用户提供了轻量的标准数据库引擎,它可以紧密地嵌入到任何基于Java的解决方案中。 Derby的特性令人惊奇&…...
飞牛fnOS安装了Airplay没有声音找不到声卡的问题
主要问题描述:我在飞牛的Docker里安装了 Airplay, 这样把NAS接一个外接音箱,就可以当成无线音箱来用,直接把手机的音乐播放投到上面来播放。 (文章底部有写我是怎么安装Airplay的) 我的报错如下࿱…...
netcore openTelemetry+prometheus+grafana
一、netcore项目 二、openTelemetry 三、prometheus 四、grafana添加Dashborad aspire/src/Grafana/dashboards at main dotnet/aspire GitHub 导入:aspnetcore.json和aspnetcore-endpoint.json 效果:...
全程Kali linux---CTFshow misc入门(38-50)
第三十八题: ctfshow{48b722b570c603ef58cc0b83bbf7680d} 第三十九题: 37换成1,36换成0,就得到长度为287的二进制字符串,因为不能被8整除所以,考虑每7位转换一个字符,得到flag。 ctfshow{5281…...
DeepSeek与人工智能的结合:探索搜索技术的未来
云边有个稻草人-CSDN博客 目录 引言 一、DeepSeek的技术背景 1.1 传统搜索引擎的局限性 1.2 深度学习在搜索中的优势 二、DeepSeek与人工智能的结合 2.1 自然语言处理(NLP) 示例代码:基于BERT的语义搜索 2.2 多模态搜索 示例代码&…...
用 DeepSeek + Kimi 自动做 PPT,效率起飞
以下是使用 DeepSeek Kimi 自动做 PPT 的详细操作步骤: 利用 DeepSeek 生成 PPT 内容: 访问 DeepSeek 官网,完成注册/登录后进入对话界面。输入指令,例如“请用 Markdown 格式生成一份关于[具体主题]的 PPT 大纲,需包…...
LeetCode 每日一题 2025/2/3-2025/2/9
记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 2/3 680. 验证回文串 II2/4 922. 按奇偶排序数组 II2/5 90. 子集 II2/6 47. 全排列 II2/7 59. 螺旋矩阵 II2/8 63. 不同路径 II2/9 80. 删除有序数组中的重复项 II 2/3 680…...
自动驾驶数据集三剑客:nuScenes、nuImages 与 nuPlan 的技术矩阵与生态协同
目录 1、引言 2、主要内容 2.1、定位对比:感知与规划的全维覆盖 2.2、数据与技术特性对比 2.3、技术协同:构建全栈研发生态 2.4、应用场景与评估体系 2.5、总结与展望 3、参考文献 1、引言 随着自动驾驶技术向全栈化迈进,Motional 团…...
设计模式 ->模板方法模式(Template Method Pattern)
模板方法模式 模板方法模式是一种行为设计模式,它在一个方法中定义一个操作的算法骨架,而将一些步骤延迟到子类中实现。它允许子类在不改变算法结构的情况下重新定义算法中的某些步骤 特点 算法骨架: 在基类中定义算法的框架延迟实现&…...
DeepSeekMoE 论文解读:混合专家架构的效能革新者
论文链接:DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models 目录 一、引言二、背景知识(一)MoE架构概述(二)现有MoE架构的问题 三、DeepSeekMoE架构详解(一&a…...
机器学习之心的创作纪念日
机缘 今天,是我成为创作者的第1460天。 在这段时间里,获得了很大的成长。 虽然日常忙碌但还在坚持创作、初心还在。 日常 创作已经成为我生活的一部分,尤其是在我的工作中,创作是不可或缺的,创作都是核心能力之一。…...
【python】简单的flask做页面。一组字母组成的所有单词。这里的输入是一组字母,而输出是所有可能得字母组成的单词列表
目录结构如下: https://github.com/kaede316/Pythons_pj.git 效果: 后续可扩展为工具网站: 更新 2025.02.09 1、增加等间距制作人 时间信息 2、增加判断润年的功能...
[权限提升] Linux 提权 维持 — 系统错误配置提权 - Sudo 滥用提权
关注这个专栏的其他相关笔记:[内网安全] 内网渗透 - 学习手册-CSDN博客 0x01:Sudo 滥用提权原理 Sudo 是一个 Linux 系统管理命令,它允许系统管理员授予普通用户以指定身份执行指定命令的权限。该命令不仅减少了 Root 用户的登录时间和管理时…...
【算法】快速排序算法的实现:C 和 C++ 版本
1. 算法简介 快速排序(Quick Sort)是由英国计算机科学家霍尔(C.A.R. Hoare)在1960年提出的一种高效的排序算法。它采用了分治法(Divide and Conquer)策略,通常具有很好的性能。在平均情况下,快速排序的时间复杂度为 O(n log n),但在最坏情况下可能退化为 O(n^2),不过…...
如何修改IDEA的maven远程仓库地址
IDEA自动的maven的远程仓库地址为国外地址,导致下载依赖时很慢,通过如下方法可以将其修改为国内地址 选中模块,右击,创建setting.xml文件 添加阿里仓库地址 <mirrors><mirror><id>nexus-aliyun</id><…...
LLMs之DeepSeek r1:TinyZero(复现 DeepSeek R1 Zero 的核心功能)的简介、安装和使用方法、案例应用之详细攻略
LLMs之DeepSeek r1:TinyZero(复现 DeepSeek R1 Zero 的核心功能)的简介、安装和使用方法、案例应用之详细攻略 目录 TinyZero的简介 1、TinyZero的特点 TinyZero的安装和使用方法 1、安装 创建 conda 环境 数据准备 (倒计时任务) 训练执行 单GPU (适用于模型…...
亚博microros小车-原生ubuntu支持系列:23 人脸识别追踪
背景知识: 本节跟上一篇的物体识别追踪类似,换了opencv的函数来做人脸识别 函数定义如下: detectMultiScale(image, scaleFactor, minNeighbors, flags, minSize, maxSize)scaleFactor参数控制每个图像序列的缩放比例。该参数决定了在每个…...
[7] 游戏机项目说明
[7] 游戏机项目说明 在这节课中,我们将学习如何基于FreeRTOS开发一个简单的游戏项目。我们会使用一个开源项目nwatch,它是一个基于STM32的开源手表,包含了三个游戏。我们的目标是将这个游戏移植到我们的开发板上,并逐步使用FreeR…...
Kubernetes之kube-proxy运行机制分析
一、基础知识 1.Kubernetes再创建服务时会为服务分配一个虚拟IP地址,客户端通过这个虚拟Ip地址来访问服务,而服务则负责将请求转发到后端pod上。 2.上述阐述的过程为一个反向代理的过程,但是这个反向代理和普通的反向代理的区别是它的IP地址是…...
微信小程序调用企业微信客户服务插件联通企业微信客服
需求背景:用户在小程序页面点击按钮添加企业微信的客服 相关技术:基于uniapp开发的微信小程序 插件名称:企业微信客户服务插件「联系我」插件 - 文档 - 企业微信开发者中心 仔细阅读文档「联系我」插件 - 文档 - 企业微信开发者中心 以下是我的实例代码 1.首先先小程序管…...
如何解决 javax.xml.crypto.dsig.TransformException: 转换异常问题?亲测有效的解决方法!
1. 问题分析 1.1 异常描述 javax.xml.crypto.dsig.TransformException 是在使用 Java XML 加密和签名 API 时,发生的一个常见异常。它通常出现在 XML 数字签名的转换过程中,可能是由于签名、加密或验证过程中发生了错误。 1.2 异常场景 该异常通常发…...
【AI实践】deepseek支持升级git
当前Windows 11 WSL的git是2.17,Android Studio提示需要升级到2.19版本 网上找到指导文章 安装git 2.19.2 cd /usr/src wget https://www.kernel.org/pub/software/scm/git/git-2.19.2.tar.gz tar xzf git-2.19.2.tar.gz cd git-2.19.2 make prefix/usr/l…...
git 子模块管理(一个仓库中有多个子仓库)
使用 Git 子模块管理 B 和 C 仓库 在A仓库中维护B和C仓库 进入 A 仓库: 添加 B 和 C 作为子模块: git submodule add https://your-repo-url/B.git B-repo git submodule add https://your-repo-url/C.git C-repo git commit -m "Add B and C a…...
Maven 安装配置(完整教程)
文章目录 一、Maven 简介二、下载 Maven三、配置 Maven3.1 配置环境变量3.2 Maven 配置3.3 IDEA 配置 四、结语 一、Maven 简介 Maven 是一个基于项目对象模型(POM)的项目管理和自动化构建工具。它主要服务于 Java 平台,但也支持其他编程语言…...
w196Spring Boot高校教师科研管理系统设计与实现
🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…...
Flutter初相识
资料 1、中文官网:安装和环境配置 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 2、线上编写网站:DartPad 构建第一个Flutter应用 class MyApp extends StatelessWidget {const MyApp({Key? key}) : super(key: key);overrideWidget bui…...
(1/100)每日小游戏平台系列
每日小游戏平台 项目简介以及地址 准备开发一个一百天小游戏平台,使用Flask构建的简单游戏导航网站,无需登录,让大家在返工的同时也可以愉快的摸鱼玩耍。 每天更新一个小游戏上传,看看能不能坚持一百天。 这些小游戏主要使用前端…...
