模拟收音机在这个数字世界中逐渐消失,因为今天从电影到歌曲的所有内容都直接从互联网流式传输。让我们看看如何通过利用一些简单的数字电子设备、编码和有效的互联网连接来制作互联网收音机。
互联网收音机可以创建为通过互联网运行的独立设备,也可以创建为通过与互联网连接的计算机运行的软件。在这里,我们将制作一个独立的设备,它将连接到 Wi-Fi,访问互联网,最后播放音频。为了构建我们的ESP32 网络广播,我们选择了 ESP32 开发板(显然)和 MAX98357A I2S 放大器。如果您正在寻找可以离线工作的简单 FM 收音机,那么您应该查看链接的文章。
构建 ESP32 网络收音机所需的组件
您将需要以下组件来使用 ESP32 构建我们的网络收音机。大多数零件应该很容易获得。
ESP32 开发套件
MAX98357A
8 欧姆扬声器,额定功率为 0.5W 至 1W。
USB电缆
5V 1A充电器
活跃的互联网连接
ESP32 和 I2S 通信
正如我们大多数人所知,ESP32 是一款成本极低、低功耗的片上系统微控制器,集成了 Wi-Fi 和双模蓝牙。我们之前已经构建了很多ESP32 项目,有兴趣的可以去看看。但是,我们不会在这里使用 ESP32 的蓝牙功能,但我们仍然选择了 ESP32,原因如下所列。
它有Wi-Fi模块
成本低
它具有 I2S 外设支持。
现在,为什么 I2S 很重要?
集成 IC间声音总线 (I2S)是一种串行总线接口标准,用于连接数字音频设备。它由飞利浦半导体制造。此接口最常用于音频 ADC 和 DAC 组件。
由于要运行收音机,我们需要使用扬声器并需要产生模拟输出,因此我们需要某种数模转换器。这是该项目有趣的部分。MAX98357A 模块。它提供了一个数字 D 类放大器,该放大器使用数字音频接口或 I 2 S 与微控制器单元进行通信。
MAX98357A I2S模块的优势如下:
效率高达 92%
可在 5V 下向 4 欧姆负载提供 3.2W 输出功率
点击和弹出式降噪
短路和热保护
支持左、右或(左/2 + 右/2)输出
工作电压为 2.5V 至 5.5V。
我们在这个项目中使用的 MAX98357A I2S 模块如下图所示。
MAX98357A I2S模块与 ESP32接口的电路图
原理图很简单。MAX98357 连接如下表所示。
由于增益引脚与 GND 相连,因此增益为 12dB。
ESP32 的网络电台代码
嗯,这个项目使用了GitHub 上提供的ESP32-audioI2S 库。在我们进入代码之前,请确保从以下链接下载库并将其添加到 Arduino IDE。
ESP32 音频 I2S 库
本页底部提供了完整代码,您可以直接复制和使用代码,但如果您需要它的解释,请进一步阅读。
首先,包含项目所需的库,如下图。
#include "Arduino.h" #include "WiFi.h" #include "Audio.h"
然后,指定 MAX98357A 的引脚排列。如果您使用的是与上面显示的完全相同的模块,则可以将其保留为如下所示。
#define MAX98357A_I2S_DOUT 25 #define MAX98357A_I2S_BCLK 27 #define MAX98357A_I2S_LRC 26 音频音频;
输入您的 Wi-Fi SSID 和密码,这允许 ESP32 连接到互联网。
String ssid = "你的用户名"; 字符串密码 = "您的密码";
在设置中,正在设置 WiFi 密码和 SSID,并启动 WiFi。连接 Wi-Fi 后,选择音频引脚,音量也设置为最大。
audio.setPinout(MAX98357A_I2S_BCLK, MAX98357A_I2S_LRC, MAX98357A_I2S_DOUT); 音频.setVolume(100);
在此处设置流媒体 URL,您可以选择任何您选择的流媒体 URL,如果需要,您还可以引入一个电位器在多个流媒体通道之间切换。
audio.connecttohost("http://vis.media-ice.musicradio.com/CapitalMP3"); }
在所有这些之后,使用下面的代码在 void 循环中连续播放音频。
无效循环() { 音频.循环(); }
测试我们的 ESP32 网络广播播放器
电路按照原理图正确连接,并与 Wi-Fi 连接。一旦设置启动,它就会连接到互联网并开始从程序中提到的 URL 流式传输音频。
#include "Arduino.h"
#include "WiFi.h"
#include "Audio.h"
#define I2S_DOUT 25
#define I2S_BCLK 27
#define I2S_LRC 26
音频音频;
字符串 ssid = "Sourav";
字符串密码 = "87654321";
无效设置(){
WiFi.disconnect();
WiFi.mode(WIFI_STA);
WiFi.begin(ssid.c_str(), password.c_str());
而(WiFi.status()!= WL_CONNECTED)
延迟(1500);
audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT);
音频.setVolume(100);
audio.connecttohost(" http://vis.media-ice.musicradio.com/CapitalMP3 ");
}
评论
查看更多