ESP32_MP3_Decoder, 一个用于 Espressif ESP32的因特网广播和蓝牙扬声器

分享于 

7分钟阅读

GitHub

  繁體 雙語
A webradio project for the Espressif ESP32
  • 源代码名称:ESP32_MP3_Decoder
  • 源代码网址:http://www.github.com/MrBuddyCasino/ESP32_MP3_Decoder
  • ESP32_MP3_Decoder源代码文档
  • ESP32_MP3_Decoder源代码下载
  • Git URL:
    git://www.github.com/MrBuddyCasino/ESP32_MP3_Decoder.git
    Git Clone代码到本地:
    git clone http://www.github.com/MrBuddyCasino/ESP32_MP3_Decoder
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/MrBuddyCasino/ESP32_MP3_Decoder
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    ESP32网络广播

    这是一个简单的网络收音机。 它通过wifi连接到一台网站,解码流并通过ccr编解码器或者直接连接到DAC引脚的声音。

    功能:

    • 解码MP3和 AAC ( 测试版)
    • 蓝牙扬声器模式

    原点

    这个项目是基于sprite_tm的MP3网络广播项目的ESP8266: https://github.com/espressif/ESP8266_MP3_DECODER

    需要的软件

    获取 SDK:

    
    git clone https://github.com/espressif/esp-idf.git
    
    
    cd esp-idf
    
    
    git submodule update --init
    
    
    
    

    设置IDF_PATH环境变量,并将它的指向这里目录。

    
    export IDF_PATH=/path/to/esp-idf
    
    
    
    

    下载工具链:https://github.com/espressif/esp-idf#setting-up-esp-idf 你需要版本 5.2.0. 将/path/to/xtensa-esp32-elf/bin 添加到路径:

    
    export PATH=/path/to/xtensa-esp32-elf/bin:$PATH
    
    
    
    

    克隆这里存储库:

    
    git clone https://github.com/MrBuddyCasino/ESP32_MP3_Decoder.git
    
    
    cd ESP32_MP3_Decoder/
    
    
    git submodule init && git submodule update
    
    
    
    

    配置

    串行端口和wifi凭据使用 make。 类型 make menuconfig

    • Serial flasher config 子菜单中配置串行端口
    • 选择 Web Radio/Bluetooth Speaker 子菜单
      • 配置wifi凭据
      • 选择音频输出模式
      • 激活/禁用bt扬声器模式
    • ,保存,然后退出

    你可以编辑 /main/playlist.pls 播放列表文件中的电台列表。

    建筑

    如果这是第一次,初始化子模块: git submodule init && git submodule update 然后,输入 make

    闪存

    连接串行电缆并运行'使 Flash'。 查看串行控制台输出运行'使监视器'。

    控制

    你可以使用大多数开发板( GPIO0 )的"引导"按钮在播放列表中进入下一个轨迹。

    用户界面

    你可以连接 NeoPixel 导致引脚 32. 它目前没有做很多,只是在无线局域网连接时闪烁。

    蓝牙扬声器模式

    启用 Classic BluetoothComponent config> Bluetooth> Bluedroid Bluetooth stack enabled> Classic Bluetooth ,启用 A2DP> A2DP ROLE config (SINK) ,然后通过 make menuconfig 启用 Bluetooth Speaker Mode。 闪烁后,你应该看到一个叫"esp_speaker"的蓝牙设备。 如果你不喜欢那个 NAME,你可以通过menuconfig改变它。

    连接I2S编解码器

    如果不知道I2S标准,它是一种特殊协议,用于在芯片之间传输数字音频数据,类似于 I2C。 你可以选择许多I2S芯片,最重要的区别是:

    • 放大:有些芯片只把音频解码到低模拟电平,所以你需要一个单独的放大器,但有些也有内置放大器。 这 2个-in-1芯片是为智能手机制作的,所以它们的能量输出在 2 -4W的范围内。
    • 这是一个独立的时钟信号,有时候需要在1MHz范围内精确的数字,有时它可以是单个常量值,不依赖于当前采样速率,有时是不需要的,有时根本不需要。 ESP32不输出MCLK信号,所以不需要MCLK的芯片是最方便的。 如果你已经有一个异步的( 比如 )。 在ES9023中,你需要一个石英振荡器,通常在 20 -50MHz范围内。

    我测试了几个编码器,并且对MAX98357A非常乐幸,因为它不需要 MCLCK,也可以放大音频。 它似乎更受信号完整性问题的影响,它在breadboards上发生。 Adafruit有一个方便的断路器: 请注意,它只是单声道的。对于立体声,你需要这个: https://www.adafruit.com/product/3346 但是,任何I2S编解码器都应该能工作。

    通用布线:

    
    ESP pin - I2S signal
    
    
    ----------------------
    
    
    GPIO25/DAC1 - LRCK
    
    
    GPIO26/DAC2 - BCLK
    
    
    GPIO22 - DATA
    
    
    
    

    如果使用 MAX98357A,将GND连接地面,将Vin连接到 +5 V ( 如果 +5 V 不可用,则为 +3.3 V )。 如果你想使它更大或者更低,SD可以保持不连接和增益。 我还建议使用电位计来调节音量。

    没有 I2S DAC运行

    如果你手头没有I2S编解码器,有两种选择:

    • 内置 DAC ( 低质量)
    • PDM ( 高质量)

    运行 make menuconfig 并在 Audio Output Mode 菜单中选择其中之一,然后单击 flash。 现在可以将扬声器连接到地面,而左侧和右侧通道的引脚为 25和 26.

    已知问题

    • 某些AAC流可能无法播放

    更多信息

    在ESP32论坛上有一个线程: https://esp32.com/viewtopic.php?f=17&t=1026

    相关硬件

    如果你寻找构建的电路板,请从Microwavemont中查看"。esp32音频开发板": https://www.tindie.com/products/microwavemont/esp32-audio-developing-board-esp32-adb/

    板示例

    我使用了 Watterott ESP-WROOM-32-Breakout,它是引脚兼容Espressif核心板( DevKitC )。 请注意,在这里图片中,JTAG header 也连接,但你可以放心地忽略。


    INT  proj  Intern  RAD  蓝牙  单选  
    相关文章