要使用ESP32控制INMP441采集并用MAX98357播放音频实现对讲机

这篇具有很好参考价值的文章主要介绍了要使用ESP32控制INMP441采集并用MAX98357播放音频实现对讲机。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

要使用ESP32控制INMP441采集并用MAX98357播放音频,您需要遵循以下步骤:

1.准备所需的硬件和软件

ESP32开发板

INMP441麦克风模块

MAX98357音频放大器模块

Arduino IDE

2.将ESP32与INMP441连接

将ESP32和INMP441连接如下:

ESP32 3.3V引脚 -> INMP441 VCC引脚

ESP32 GND 引脚 -> INMP441 GND 引脚

ESP32 GPIO22引脚 -> INMP441 LRCL引脚

ESP32 GPIO21引脚 -> INMP441 BCLK引脚

ESP32 GPIO32引脚 -> INMP441 DAT引脚

3.将ESP32与MAX98357连接

将ESP32和MAX98357连接如下:

ESP32 GND 引脚 -> MAX98357 GND 引脚

ESP32 GPIO25引脚 -> MAX98357 LRCL引脚

ESP32 GPIO26引脚 -> MAX98357 BCLK引脚

ESP32 GPIO27引脚 -> MAX98357 DIN引脚

ESP32 3.3V引脚 -> MAX98357 VIN引脚

4.编写Arduino代码

您需要在Arduino IDE中编写代码来控制ESP32、INMP441和MAX98357来采集、播放和处理音频数据。以下是一个简单的代码示例:


#include "Arduino.h"
#include <driver/i2s.h>

#define INMP441_LRCL 22
#define INMP441_BCLK 21
#define INMP441_DOUT 32

#define MAX98357_LRCL 25
#define MAX98357_BCLK 26
#define MAX98357_DIN 27

#define SAMPLE_RATE 16000

i2s_config_t i2sIn_config = {
  .mode = i2s_mode_t(I2S_MODE_MASTER | I2S_MODE_RX),
  .sample_rate = SAMPLE_RATE,
  .bits_per_sample = i2s_bits_per_sample_t(32),
  .channel_format = I2S_CHANNEL_FMT_ONLY_LEFT,
  .communication_format = I2S_COMM_FORMAT_I2S_MSB,
  .intr_alloc_flags = ESP_INTR_FLAG_LEVEL1,
  .dma_buf_count = 4,
  .dma_buf_len = 512
};

i2s_config_t i2sOut_config = {
  .mode = i2s_mode_t(I2S_MODE_MASTER | I2S_MODE_TX),
  .sample_rate = SAMPLE_RATE,
  .bits_per_sample = i2s_bits_per_sample_t(16),
  .channel_format = I2S_CHANNEL_FMT_ONLY_LEFT,
  .communication_format = I2S_COMM_FORMAT_I2S_MSB,
  .intr_alloc_flags = ESP_INTR_FLAG_LEVEL1,
  .dma_buf_count = 4,
  .dma_buf_len = 512
};

void setup() {
  Serial.begin(115200);
  
  i2s_driver_install(I2S_NUM_0, &i2sIn_config, 0, NULL);
  i2s_set_pin(I2S_NUM_0, NULL);
  
  i2s_driver_install(I2S_NUM_1, &i2sOut_config, 0, NULL);
  i2s_set_pin(I2S_NUM_1, NULL);

  pinMode(MAX98357_LRCL, OUTPUT);
  pinMode(MAX98357_BCLK, OUTPUT);
  pinMode(MAX98357_DIN, OUTPUT);
  
  // MAX98357 setup
  digitalWrite(MAX98357_LRCL, LOW);
  digitalWrite(MAX98357_BCLK, LOW);
  digitalWrite(MAX98357_DIN, LOW);
  delay(10);
  writeRegister(0x08, 0x08);
}

void loop() {
  size_t bytes_read;
  int16_t data[256];
  
  i2s_read(I2S_NUM_0, &data, sizeof(data), &bytes_read, portMAX_DELAY);
  i2s_write(I2S_NUM_1, &data, sizeof(data), &bytes_read, portMAX_DELAY);
}

void writeRegister(uint8_t reg, uint8_t val) {
  pinMode(MAX98357_LRCL, OUTPUT);
  pinMode(MAX98357_BCLK, OUTPUT);
  pinMode(MAX98357_DIN, OUTPUT);
  
  int i;
  for(i = 7; i >= 0; i--) {
    digitalWrite(MAX98357_LRCL, LOW);
    digitalWrite(MAX98357_BCLK, LOW);
    digitalWrite(MAX98357_DIN, (reg >> i) & 1);
    digitalWrite(MAX98357_BCLK, HIGH);
  }
  
  for(i = 7; i >= 0; i--) {
    digitalWrite(MAX98357_LRCL, LOW);
    digitalWrite(MAX98357_BCLK, LOW);
    digitalWrite(MAX98357_DIN, (val >> i) & 1);
    digitalWrite(MAX98357_BCLK, HIGH);
  }
}

在以上代码中,我们使用了I2S库来控制INMP441收集音频数据和MAX98357播放音频数据。在setup()函数中,我们初始化I2S库和MAX98357芯片的配置。

在loop()函数中,我们使用i2s_read()函数读取I2S缓冲区中的音频数据,并使用i2s_write()函数将数据写入MAX98357中进行播放。

此外,我们还提供了一个函数writeRegister用于向MAX98357芯片写入寄存器数据,使其能够正确配置MAX98357芯片。

5.上传和运行代码

将代码上传到您的ESP32开发板,并在串行监视器中查看输出以确保一切正常。您应该能够从INMP441收集音频数据,并从MAX98357扬声器中听到声音。文章来源地址https://www.toymoban.com/news/detail-426381.html

到了这里,关于要使用ESP32控制INMP441采集并用MAX98357播放音频实现对讲机的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 使用STM32的I2S协议读取麦克风INMP441

    使用STM32的I2S协议读取麦克风INMP441

    本文将详细介绍使用STM32的硬件I2S协议,从麦克风模块INMP441读取音频信号的步骤和避坑指南。 点这里,从Github下载工程文件 百度网盘: 链接:https://pan.baidu.com/s/1cglAGirn6bTQhIEpWDb7Ig?pwd=k9gh 提取码:k9gh INMP441模块: 主控芯片:我用的是STM32F103ZET6,可以在STM的选型手册上看到哪

    2024年02月02日
    浏览(8)
  • STM32使用MAX7219控制点阵屏和点阵屏级联

    STM32使用MAX7219控制点阵屏和点阵屏级联

    本文仅仅针对如何使用STM32通过使用MAX7219对点阵屏的控制和级联,提供相应的程序说明和简单的芯片说明,具体的芯片说明请查找数据手册(找淘宝商家要最简单) 目录 一、芯片简单介绍 1.芯片管脚配置 1.1管脚描述  2.时序图 2.1数据格式 二、 如何使用  1.单字节写入函数

    2024年02月04日
    浏览(58)
  • 使用ESP8266/ESP32 实现智能语音控制电脑开关机

    使用ESP8266/ESP32 实现智能语音控制电脑开关机

    最近买了个台机放客厅里接电视玩游戏,另外还有跑程序计算的需求所以通过笔记本电脑使用RDP或Parsec来远程控制,当然瘾犯了也能云游戏。路由器在另一个房间所以是无线网卡链接,用的最好的AX210+10db天线。   后来折腾来折腾去发现个痛点:每次都得跑到客厅去开机,麻

    2024年02月16日
    浏览(13)
  • ESP32作为服务器,使用网页控制LED小灯

    ESP32作为服务器,使用网页控制LED小灯

    项目描述 ESP32-S开发板加入局域网,使用platformIO编写好ESP32的代码后,编译下载到ESP32中,访问ESP32的IP地址,使用网页控制连接着的LED小灯 项目准备: ESP32-S开发板 一根数据线 电脑 LED小灯 开发环境:vscode + PlatformIO 原理剖析 这个ESP32作为服务器,浏览器作为客户端,这是一个简

    2023年04月26日
    浏览(12)
  • ESP32控制器使用SX1278 LoRa模块的方法

    ESP32控制器使用SX1278 LoRa模块的方法

    LoRa是由Semtech公司引入的一种无线射频技术,旨在用于在不消耗大量功率的情况下将双向信息传输到长距离。如果您不熟悉LoRa,请先查看LoRa模块与Arduino开发板的连接方法。 在本篇文章中,我们将学习如何将LoRa模块SX1278与ESP32结合使用。在这里,我们将使用两个LoRa模块-一个

    2023年04月08日
    浏览(10)
  • 使用ego1的xadc采集心电模块的输出并用vga显示

    使用ego1的xadc采集心电模块的输出并用vga显示

    最近刚做完学校的实验,记录一下自己的实验过程,也可以给需要的朋友一个参考,不对之处欢迎指正。 XADC:fpga内部IP核 XADC可以将0-1V的模拟电压信号转化为12位的数字电压信号,存储在DO[15:0]口的高12位上,转化速率为1MSPS的ADC(模数转换器)。 XADC中文全称应该是“Xilinx模

    2024年02月06日
    浏览(21)
  • 物联网开发笔记(56)- 使用Micropython开发ESP32开发板之手机蓝牙控制舵机

    物联网开发笔记(56)- 使用Micropython开发ESP32开发板之手机蓝牙控制舵机

    一、目的         这一节我们学习如何使用我们的ESP32开发板来实现通过蓝牙控制接在ESP32开发板上的舵机。 二、环境         ESP32 + MG90S舵机 + Thonny IDE + 几根杜邦线 + 手机         舵机的链接方法见第54节:物联网开发笔记(54)- 使用Micropython开发ESP32开发板之控制

    2024年02月09日
    浏览(20)
  • ESP32设备驱动-MAX30102脉搏血氧饱和度和心率监测传感器驱动

    ESP32设备驱动-MAX30102脉搏血氧饱和度和心率监测传感器驱动

    MAX30102是一款集成脉搏血氧饱和度和心率监测生物传感器模块。 它包括内部 LED、光电探测器、光学元件和具有环境光抑制功能的低噪声电子设备。 MAX30102提供完整的系统解决方案,简化移动和可穿戴设备的设计流程。 MAX30102具有如下特性: LED 反射式解决方案中的心率监测器

    2023年04月18日
    浏览(30)
  • 物联网开发笔记(41)- 使用Micropython开发ESP32开发板之控制4*4矩阵键盘

    物联网开发笔记(41)- 使用Micropython开发ESP32开发板之控制4*4矩阵键盘

    一、目的         这一节我们学习如何使用我们的ESP32开发板来操作4*4矩阵键盘。 二、环境         ESP32 + PS2摇杆 + 4*4矩阵键盘 + Thonny IDE + 十几根杜邦线 接线方法:   矩阵键盘原理:   三、代码 四、演示效果 五、矩阵键盘购买         同样,我们大家在某宝上搜

    2024年02月12日
    浏览(27)
  • 基于 STM32 的语音识别智能家居控制系统的设计(LD3320语音识别芯片+ESP8266 WIFI模块+DHT11温湿度采集+MQ系列 烟雾及可燃气体+蜂鸣器+步进电机模拟窗帘+OLED液晶显示+

    基于 STM32 的语音识别智能家居控制系统的设计(LD3320语音识别芯片+ESP8266 WIFI模块+DHT11温湿度采集+MQ系列 烟雾及可燃气体+蜂鸣器+步进电机模拟窗帘+OLED液晶显示+

    ## **基于 STM32 的语音识别智能家居控制系统的设计(LD3320语音识别芯片+ESP8266 WIFI模块(阿里云 或ONENET或局域网)+DHT11温湿度采集+MQ系列 烟雾及可燃气体+蜂鸣器+步进电机模拟窗帘+OLED液晶显示+手机APP)** 本文采用LD3320语音识别芯片+ESP8266 WIFI模块+DHT11温湿度采集+MQ系列 烟雾及可

    2024年02月04日
    浏览(116)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包