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左/右聲道選擇引腳。當該引腳設置為低電平時,麥克風在I2S幀中輸出其信號到左聲道;當該引腳設置為高電平時,麥克風在I2S幀中輸出其信號到右聲道

這些引腳通過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("]");}
}

代碼說明

  1. I2S配置

    • 使用I2S接口讀取INMP441的音頻數據。
    • 配置采樣率為48000Hz,16位深度,單聲道。
  2. 音頻數據讀取

    • 使用i2s_read函數從I2S接口讀取音頻數據。
    • 將數據通過UDP發送到接收端。

注意事項

  • 如果需要本地處理音頻數據,可以將數據存儲到文件或進行實時分析。

通過上述代碼,你可以成功讀取INMP441麥克風的數據信號,并通過ESP32S3進行處理或傳輸。

實驗結果

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/71732.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/71732.shtml
英文地址,請注明出處:http://en.pswp.cn/web/71732.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DeepSeek大模型 —— 全維度技術解析

DeepSeek大模型 —— 全維度技術解析 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;可以分享一下給大家。點擊跳轉到網站。 https://www.captainbed.cn/ccc 文章目錄 DeepSeek大模型 —— 全維度技術解析一、模型架構全景解析1…

[Kubernetes] 7控制平面組件

1. 調度 kube- scheduler what 負責分配調度pod到集群節點監聽kube-apiserver,查詢未分配node的pod根據調度策略分配這些pod&#xff08;更新pod的nodename&#xff09;需要考慮的因素&#xff1a; 公平調度&#xff0c;資源有效利用&#xff0c;QoS&#xff0c;affinity, an…

PyTorch系列教程:編寫高效模型訓練流程

當使用PyTorch開發機器學習模型時&#xff0c;建立一個有效的訓練循環是至關重要的。這個過程包括組織和執行對數據、參數和計算資源的操作序列。讓我們深入了解關鍵組件&#xff0c;并演示如何構建一個精細的訓練循環流程&#xff0c;有效地處理數據處理&#xff0c;向前和向后…

LeetCode Hot100刷題——反轉鏈表(迭代+遞歸)

206.反轉鏈表 給你單鏈表的頭節點 head &#xff0c;請你反轉鏈表&#xff0c;并返回反轉后的鏈表。 示例 1&#xff1a; 輸入&#xff1a;head [1,2,3,4,5] 輸出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 輸入&#xff1a;head [1,2] 輸出&#xff1a;[2,1]示例 3&#…

機器學習的發展史

機器學習&#xff08;Machine Learning, ML&#xff09;作為人工智能&#xff08;AI&#xff09;的一個分支&#xff0c;其發展經歷了多個階段。以下是機器學習的發展史概述&#xff1a; 1. 早期探索&#xff08;20世紀50年代 - 70年代&#xff09; 1950年&#xff1a;艾倫圖…

Springboot redis bitMap實現用戶簽到以及統計,保姆級教程

項目架構&#xff0c;這是作為demo展示使用&#xff1a; Redis config&#xff1a; package com.zy.config;import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.Ob…

Ardupilot開源無人機之Geek SDK進展2025Q1

Ardupilot開源無人機之Geek SDK進展2025Q1 1. 源由2. 內容匯總2.1 【jetson-fpv】YOLO INT8 coco8 dataset 精度降級2.2 【OpenIPC-Configurator】OpenIPC Configurator 固件升級失敗2.3 【OpenIPC-Adaptive-link】OpenIPC RF信號質量相關顯示2.4 【OpenIPC-msposd】.srt/.osd…

《云原生監控體系構建實錄:從Prometheus到Grafana的觀測革命》

PrometheusGrafana部署配置 Prometheus安裝 下載Prometheus服務端 Download | PrometheusAn open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.https://prometheus.io/…

SpringMvc與Struts2

一、Spring MVC 1.1 概述 Spring MVC 是 Spring 框架的一部分&#xff0c;是一個基于 MVC 設計模式的輕量級 Web 框架。它提供了靈活的配置和強大的擴展能力&#xff0c;適合構建復雜的 Web 應用程序。 1.2 特點 輕量級&#xff1a;與 Spring 框架無縫集成&#xff0c;依賴…

數據類設計_圖片類設計之1_矩陣類設計(前端架構基礎)

前言 學的東西多了,要想辦法用出來.C和C是偏向底層的語言,直接與數據打交道.嘗試做一些和數據方面相關的內容 引入 圖形在底層是怎么表示的,用C來表示 認識圖片 圖片是個風景,動物,還是其他內容,人是可以看出來的.那么計算機是怎么看懂的呢?在有自主意識的人工智能被設計出來…

開發者社區測試報告(功能測試+性能測試)

功能測試 測試相關用例 開發者社區功能背景 在當今數字化時代&#xff0c;編程已經成為一項核心技能&#xff0c;越來越多的人開始學習編程&#xff0c;以適應快速變化的科技 環境。基于這一需求&#xff0c;我設計開發了一個類似博客的論壇系統&#xff0c;專注于方便程序員…

EasyRTC嵌入式音視頻通話SDK:基于ICE與STUN/TURN的實時音視頻通信解決方案

在當今數字化時代&#xff0c;實時音視頻通信技術已成為人們生活和工作中不可或缺的一部分。無論是家庭中的遠程看護、辦公場景中的遠程協作&#xff0c;還是工業領域的遠程巡檢和智能設備的互聯互通&#xff0c;高效、穩定的通信技術都是實現這些功能的核心。 EasyRTC嵌入式音…

【OneAPI】網頁截圖API-V2

API簡介 生成指定URL的網頁截圖或縮略圖。 舊版本請參考&#xff1a;網頁截圖 V2版本新增全屏截圖、帶殼截圖等功能&#xff0c;并修復了一些已知問題。 全屏截圖&#xff1a; 支持全屏截圖&#xff0c;通過設置fullscreentrue來支持全屏截圖。全屏模式下&#xff0c;系統…

簡單的 Python 示例,用于生成電影解說視頻的第一人稱獨白解說文案

以下是一個簡單的 Python 示例&#xff0c;用于生成電影解說視頻的第一人稱獨白解說文案。這個示例使用了 OpenAI 的 GPT 模型&#xff0c;因為它在自然語言生成方面表現出色。 實現思路 安裝必要的庫&#xff1a;使用 openai 庫與 OpenAI API 進行交互。設置 API 密鑰&#…

記錄小白使用 Cursor 開發第一個微信小程序(一):注冊賬號及下載工具(250308)

文章目錄 記錄小白使用 Cursor 開發第一個微信小程序&#xff08;一&#xff09;&#xff1a;注冊賬號及下載工具&#xff08;250308&#xff09;一、微信小程序注冊摘要1.1 注冊流程要點 二、小程序發布流程三、下載工具 記錄小白使用 Cursor 開發第一個微信小程序&#xff08…

六軸傳感器ICM-20608

ICM-20608-G是一個6軸傳感器芯片&#xff0c;由3軸陀螺儀和3軸加速度計組成。陀螺儀可編程的滿量程有&#xff1a;250&#xff0c;500&#xff0c;1000和2000度/秒。加速度計可編程的滿量程有&#xff1a;2g&#xff0c;4g&#xff0c;8g和16g。學習Linux之SPI之前&#xff0c;…

python可應用在金融分析的那一個方面,如何部署在linux server上面。

Python 在金融分析中應用廣泛&#xff0c;以下是幾個主要方面&#xff1a; ### 1. **數據處理與分析** - 使用 **Pandas** 和 **NumPy** 等庫來處理和分析大規模數據集&#xff0c;進行清理、轉換和統計運算。 - 舉例&#xff1a;處理歷史市場數據&#xff0c;分析價格趨…

Git與GitHub:理解兩者差異及其關系

目錄 Git與GitHub&#xff1a;理解兩者差異及其關系Git&#xff1a;分布式版本控制系統概述主要特點 GitHub&#xff1a;基于Web的托管服務概述主要特點 Git和GitHub如何互補關系現代開發工作流 結論 Git與GitHub&#xff1a;理解兩者差異及其關系 Git&#xff1a;分布式版本控…

STM32全系大閱兵(1)

本文內容參考: STM32家族系列的區別_stm32各個系列區別-CSDN博客 STM32--STM32 微控制器詳解-CSDN博客

clickhouse刪除一條數據

在當今數據驅動的世界中&#xff0c;ClickHouse作為一種高性能的列式數據庫管理系統&#xff0c;廣泛應用于需要快速分析大量數據的場景。也許對于初學者來說&#xff0c;掌握如何有效地管理數據&#xff0c;包括添加、更新和刪除數據&#xff0c;是使用ClickHouse進行數據分析…