首先使用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连接,即可在线播放。
I2S(Inter—IC Sound)总线, 又称集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准。
本文学习如何使用ESP32开发板来进行多线程的开发。
ESP8266有三种工作模式,分别为:AP,STA,AP混合STA
ESP32有四个SPI外设,分别为SPI0、SPI1、HSPI和VSPI。
ESP32有2个硬件I2C总线接口,接口可以配置为主机或从机模式。
lv_port_esp32将LVGL与ESP32的显示和触摸驱动程序结合起来,为ESP32开发者提供了一个强大的图形界面开发工具。