首先使用ESP32板和MAX98357芯片进行了简单的接线,下载了ArduinoI2S的库,然后用Arduino IDE并编写了一些简单的代码来实现音乐播放。
当我们启动程序并播放这首歌时,我们听到了一个令人惊叹的立体声效果,仿佛我们身临其境,整个音乐环绕着我们。这归功于MAX98357芯片的高品质音频放大和ESP32的先进处理能力。
总之,使用ESP32和MAX98357芯片播放音乐的实验效果令人惊叹。这不仅是科技和音乐的完美结合,也是一个有趣而充满创意的实验。无论您是音乐爱好者还是科技迷,都一定要尝试一下!

MAX98357是一款高品质、低功耗的立体声音频放大器芯片,由Maxim Integrated生产。该芯片具有内置的数字音频接口(I2S),可与各种数字音频设备配合使用。MAX98357能够提供高达3.2W的输出功率,并具有优秀的失真和噪声性能。此外,该芯片还支持多种电源电压,包括3.3V、5V和+/-5V等。该芯片适用于便携式音频设备、智能音箱、车载音频系统和其他需要高品质音频放大器的应用。其小尺寸和低功耗使其非常适合在空间受限或需要长时间使用的应用中。如果您正在寻找一款高性能、低功耗的立体声音频放大器芯片,那么MAX98357将是您的不二之选。
ESP32和MAX98357这两款芯片可以结合起来实现很多有趣的应用,下面是一些例子举例:
这些只是ESP32和MAX98357可以实现的一些应用,您也可以发挥自己的创意和想象力,开发出更多有趣的应用。
MAX98357A的引脚图:

| MAX98357A模块引脚 | 引脚说明 |
|---|---|
| VIN | 电源正(2.5V-5.5V) |
| GND | 电源地 |
| SD | 关机和频道选择。SD MODE拉低以将器件处于关断状态。 |
| GAIN | 增益和频道选择。在TDM模式系啊,增益固定为12dB |
| DIN | 数字信号输入 |
| BCLK | 位时钟输入 |
| LRC | I2S与LJ模式的左/右时钟。同步时钟用于TDM模式 |
| 名称 | 数量 |
|---|---|
| ESP32 开发板 | x1 |
| MAX98357A I2S 音频放大器模块 | x1 |
| 喇叭 | x1 |
| 跳线(杜邦线) | 若干 |
ESP32与MAX98357的接线图:

仓库地址:https://github.com/schreibfaul1/ESP32-audioI2S/
#include "Arduino.h"
#include "WiFiMulti.h" // Wifi库
#include "Audio.h" // I2S的音乐库
// Digital I/O used
#define I2S_DOUT 25
#define I2S_BCLK 27
#define I2S_LRC 26
Audio audio; // 创建 播放音乐的 Audio 实例
WiFiMulti wifiMulti; // ESP32 的 WIFI 实例
audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT); // 初始化,配置所用引脚
audio.setVolume(12); // 设置音量大小 0...21
可以播放网络上的mp3文件
audio.connecttohost("http://mp3.ffh.de/radioffh/hqlivestream.mp3"); // 128k mp3
需要在loop()中放置audio.loop();
void loop() {
...
audio.loop();
...
}
if (Serial.available()){ // put streamURL in serial monitor
audio.stopSong();
String r=Serial.readString(); r.trim();
if (r.length()>5) audio.connecttohost(r.c_str());
log_i("free heap=%i", ESP.getFreeHeap());
}
// Welcome to www.LingShunLAB.com
#include "Arduino.h"
#include "WiFiMulti.h"
#include "Audio.h"
// Digital I/O used
#define I2S_DOUT 25
#define I2S_BCLK 27
#define I2S_LRC 26
Audio audio;
WiFiMulti wifiMulti;
// config your wifi
String ssid = "xxxxx";
String password = "xxxxx";
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
wifiMulti.addAP(ssid.c_str(), password.c_str());
wifiMulti.run();
if(WiFi.status() != WL_CONNECTED){
WiFi.disconnect(true);
wifiMulti.run();
}
audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT);
audio.setVolume(12); // 0...21
audio.connecttohost("http://mp3.ffh.de/radioffh/hqlivestream.mp3"); // 128k mp3
}
void loop()
{
audio.loop();
if(Serial.available()){ // put streamURL in serial monitor
audio.stopSong();
String r=Serial.readString(); r.trim();
if(r.length()>5) audio.connecttohost(r.c_str());
log_i("free heap=%i", ESP.getFreeHeap());
}
}
// optional
void audio_info(const char *info){
Serial.print("info "); Serial.println(info);
}
void audio_id3data(const char *info){ //id3 metadata
Serial.print("id3data ");Serial.println(info);
}
void audio_eof_mp3(const char *info){ //end of file
Serial.print("eof_mp3 ");Serial.println(info);
}
void audio_showstation(const char *info){
Serial.print("station ");Serial.println(info);
}
void audio_showstreamtitle(const char *info){
Serial.print("streamtitle ");Serial.println(info);
}
void audio_bitrate(const char *info){
Serial.print("bitrate ");Serial.println(info);
}
void audio_commercial(const char *info){ //duration in sec
Serial.print("commercial ");Serial.println(info);
}
void audio_icyurl(const char *info){ //homepage
Serial.print("icyurl ");Serial.println(info);
}
void audio_lasthost(const char *info){ //stream URL played
Serial.print("lasthost ");Serial.println(info);
}
上传代码后,程序会自动播放一首歌曲,然后可以在串口中发送MP3连接,即可在线播放。
新型冠状病毒肺炎(Corona Virus Disease 2019,COVID-19),简称“新冠肺炎”,世界卫生组织命名为“2019冠状病毒病” [1-2] ,是指2019新型冠状病毒感染导致的肺炎。
本文本介绍配置飞书机器人为MimiClaw的一个输入/输出端,和添加一个控制WS2812与LED的控制技能。
一块 30 块钱的开发板 + 一个大模型 API,就能做出可以听懂人话的智能硬件。 本文记录完整安装过程和踩坑经验,确保你跟着做就能跑通。
本文将从手绘架构图入手,逐层拆解 MimiClaw 的分层设计、核心模块、数据流转与底层实现,带你解剖这只“智能虾”的技术骨架,看懂在 C 语言加持下,AI 智能体如何以可穿戴设备的形态,在你身边稳稳运行、离线服务、主动响应。
本文介绍如何在不脱离 ArduinoIDE 可视化开发的前提下,通过一个名为 platform.local.txt 的小文件,实现对 ESP32 编译流程的精准控制。
本文将系统分析程序体积增长的五大根源,并提供经过验证的优化方案,帮助减小固件大小。
本文所DIY的语音助手设备端使用的是MicroPython、服务端是Python,对于很多开发者来说MicroPython入门没难度。
本小节使用音频开发框架实现一个音频录制到文件的示例。
I2S协议通过BCLK、LRCLK和DATA三线精准传输音频数据,但时序边沿、帧格式、时钟源等细节常引发噪声或断连。本文详解ESP32的I2S实现,从协议原理到ESP-IDF v5.x代码配置,助你避开常见陷阱,确保音频稳定传输。
本小节介绍音频的基础知识、音频开发框架和AudioCodec的简介,用一个音频播放示例来说明音频管道的使用。
MimiClaw是基于ESP32-S3芯片的超轻量级AI助手,通过Telegram或WebSocket提供Claude/GPT智能服务。