使用 ESP32 的网络电台
0
获取所有零件

我们需要以下部件:
- ESP32 ▶ http://educ8s.tv/part/ESP32
- MP3解码器▶ http://educ8s.tv/part/MP3Decoder
- 隔离变压器 ▶ http://educ8s.tv/part/AudioTransformer
- 放大器 ▶ http://educ8s.tv/part/PAM8403
- 3W扬声器 ▶ http://educ8s.tv/part/3WSpeaker
- 3.5 英寸 Nextion 显示屏 ▶ http://educ8s.tv/part/Nextion35
- 按钮 ▶ http://educ8s.tv/part/Buttons
- 面包板 ▶ http://educ8s.tv/part/LargeBreadboard
- 电线 ▶ http://educ8s.tv/part/Wires
整个项目的成本大约是40美元,但如果不使用显示器,项目成本大约是20美元。太棒了!我们只需20美元就能打造自己的网络电台!
ESP32板





这个项目的核心当然是强大的 ESP32 开发板。如果您不熟悉它,ESP32 芯片是我们过去多次使用的热门 ESP8266 芯片的继任者。ESP32 简直是一头猛兽!它提供两个 32 位处理核心,主频 160MHz,拥有海量内存、WiFi、蓝牙以及许多其他功能,售价仅为 7 美元左右!真是太棒了!
请观看我为这款开发板准备的详细评测。我已将视频上传到 Instructable。这将有助于理解这款芯片为何将彻底改变我们的制造方式!ESP32 最令人兴奋的一点是,尽管它功能强大,但它提供了深度睡眠模式,仅需 10μA 的电流。这使得 ESP32 成为低功耗应用的理想芯片。
在这个项目中,ESP32 板连接到互联网,然后从我们正在收听的广播电台接收 MP3 数据,并向显示器发送一些命令。
MP3解码器




然后,MP3 数据通过 SPI 接口发送到 MP3 解码器模块。该模块使用 VS1053 IC。该 IC 是一款专用的硬件 MP3 解码器。它从 ESP32 获取 MP3 数据,并将其快速转换为音频信号。
此音频插孔输出的音频信号微弱且噪声较大,因此我们需要去除噪声并进行放大。(如果您使用耳机,则无需去除噪声或放大信号。)因此,我使用隔离变压器去除音频中的噪声,并使用 PAM8403 音频放大器放大音频信号,然后将其发送到扬声器。我还在 ESP32 上连接了两个按钮,用于切换数据来源的 MP3 流,以及一个 Nextion 显示屏,用于显示正在收听的电台。
Nextion显示

我选择在这个项目中使用 Nextion 显示器,因为它非常容易使用。我们只需要连接一根电线就可以控制它。
Nextion 显示器是一种新型显示器。它们内置 ARM 处理器,负责驱动显示器并创建图形用户界面。因此,我们可以将它们与任何微控制器配合使用,并获得出色的效果。我准备了一份关于 Nextion 显示器的详细评测,深入讲解了它们的工作原理、使用方法及其缺点。您可以点击此处阅读,或观看附件中的视频。
连接所有部件










现在我们要做的就是按照这个原理图把所有部件连接起来。你可以在这里找到附件中的原理图。连接很简单。
不过有两点需要注意。MP3 解码器模块输出立体声信号,但我在本项目中只使用了一个音频通道。为了获取音频信号,我将一根音频线连接到模块的音频插孔,然后剪断,露出里面的四根线。我连接了两根线。其中一根是地线 (GND),另一根是两个音频通道之一的音频信号。如果您愿意,可以将两个通道都连接到功放模块,并驱动两个扬声器。
每个音频通道在连接到放大器之前都必须经过隔离变压器来清除任何存在的噪音。
要将数据发送到显示器,我们只需将一根线连接到 ESP32 的 TX0 引脚。连接好各个部件后,我们需要将代码加载到 ESP32,并将 GUI 加载到 Nextion 显示器。
要将 GUI 加载到 Nextion 显示屏,请将我接下来要分享的 InternetRadio.tft 文件复制到一张空的 SD 卡上。将 SD 卡插入显示屏背面的 SD 卡插槽。然后打开显示屏电源,GUI 就会加载。之后,取出 SD 卡并重新连接电源。
成功加载代码后,我们启动项目。显示屏上会显示“Connecting…”字样几秒钟。连接到互联网后,项目会连接到一个预设的电台。硬件工作正常,现在我们来看看项目的软件部分。
项目代码




首先,让我给你展示一些东西。这个项目的代码不到140行。想想看,我们用140行代码就能构建一个带3.5英寸显示屏的网络收音机,这太神奇了。当然,我们可以使用包含数千行代码的各种库来实现这一切。这就是Arduino和开源社区的力量。它让创客们的工作变得轻松便捷。
在这个项目中,我使用了 ESP32 板的 VS1053 库。
首先,我们需要定义 Wi-Fi 网络的 SSID 和密码。接下来,我们需要在这里保存一些广播电台。我们需要主机 URL、流所在的路径以及需要使用的端口。我们将所有这些信息保存到这些变量中。
我在这个例子中包含了 4 个广播电台。
在设置功能中,我们将中断附加到按钮,初始化 MP3 解码器模块并连接到 Wi-Fi。
在循环函数中,我们首先检查用户是否选择了与我们正在获取数据的电台不同的电台。如果是,则连接到新的电台,否则从流中获取数据并将其发送到 MP3 解码器模块。
就这样!当用户按下按钮时,就会发生中断,并改变一个变量的值,该变量决定连接到哪个流。
要更新显示,我们只需向串行端口发送一些命令。
现在让我们来看看 Nextion 的显示 GUI。Nextion GUI 由一张背景图片和一张显示电台名称的图片组成。ESP32 开发板会发送命令,从嵌入的图片中更改电台名称。操作非常简单。请观看我之前准备的 Nextion 显示教程,了解更多信息。如果您愿意,可以快速设计自己的 GUI,并在其中显示更多内容。
与往常一样,您可以在此 Instructable 中找到附加的项目代码。
最终想法和改进






这个项目非常简单。我想要一个简单的网络电台项目框架。现在项目的第一个版本已经完成,我们可以添加许多功能来改进它。首先,我需要设计一个外壳来容纳所有电子设备。
在这本关于史上最美收音机的书中,有很多非常酷的收音机可供选择,作为这个项目的外壳。我想围绕这台精美的装饰艺术收音机做一个外壳。你觉得怎么样?你喜欢这台收音机的外观,还是更喜欢现代风格的?你还有其他外壳设计的想法吗?另外,你喜欢这个网络收音机项目吗?你认为我们需要添加哪些功能才能让它更实用?我很想听听你的想法和创意,请在下方评论区留言。
0
0
0
qq空间
微博
复制链接
分享