2026年4月1日水曜日

ESP32 - PCM5102 Webラジオ

ESP32-audioI2S-masterライブラリを使って PCM5102A I2S DAC によるWebラジオを再生しましたが音が途切れます。 下記サイト参考にスケッチしました。 
接続
ESP32   PCM5102
GP25 ー DIN
GP26 ー LCK
GP27 ー BCK
3.3V      ー    VIN
GND      ー      GND


参考サイト
●ESP32-S3-DevKitC-1とPCM5102もインターネットラジオになりました
●ESP32 でインターネットラジオ(Web Radio)を作る(ハマったこと)
●ESP32-audioI2S-masterを使う


PCM5102A - 32ビットDAC
アマゾン購入
【SCK】ブリッジ(内部クロック)










【H1L】(FLT)      L側 ブリッジ
【H2L】(DEMP) L側 ブリッジ
【H3L】(XSMT) H側 ブリッジ
【H4L】(FMT)    L側 ブリッジ







ESP-32S 開発ボード
●ESP32 NodeMCU開発ボード2.4GHz WiFi + Bluetoothデュアルモード(技適製品)
アマゾン購入








ボードマネージャ














追加ボードマネージャーURLを変更【https://raw.githubusercontent.com/espressif/arduino-esp32/ghpages/package_esp32_dev_index.json】
【esp 32】
【バージョン3.2.0】インストール


ライブラリマネージャー








●ESP32-audioI2S-master 
 所定のlibrariesに貼付

【i2s】
【バージョン3.2.1】インストール


WIFI識別番号 
WIFI装置のSSID・パスワードを入力する。

const char* ssid =     "********";
const char* password = "********";




ボードマネージャ
【ESP32S3 Dev Module】をボードにする。
パーテーション変更
メモリ不足のエラーが出るのでPartition Scheme【Huge APP(3MB OTA/1MB SPIFFS)】を選択してプログラム書込み






プログラム Arduino IDE【ボード:ESP32 Dev Module
# include "Arduino.h"
# include "WiFi.h"
// Librarry zip install from: https://github.com/schreibfaul1/ESP32-audioI2S
# include "Audio.h"

// Digital I/O used
# define I2S_DOUT      25  // DIN connection
# define I2S_BCLK      27  // Bit clock
# define I2S_LRC       26  // Left Right Clock

//Wi-Fi network identifier
const char* ssid =     "*********";
const char* password = "***************";

Audio audio;

//Internet Radio List
String stations[] ={
        "https://ice1.somafm.com/illstreet-128-mp3",      // SomaFM / Illinois Street Lounge
        "https://ais-sa2.cdnstream1.com/b22139_128mp3",   // 101 SMOOTH JAZZ
        "https://relax.stream.publicradio.org/relax.mp3", // Your Classical - Relax
        "https://16963.live.streamtheworld.com/SAM03AAC226_SC",    // #1980s Zoom
        "https://ice1.somafm.com/secretagent-128-mp3",    // SomaFM / Secret Agent
        "https://ice1.somafm.com/seventies-128-mp3",      // SomaFM / Left Coast 70s
        "https://ice1.somafm.com/bootliquor-128-mp3",     // SomaFM / Boot Liquor
        "https://musicbird.leanstream.co/JCB032-MP3",     // 84.3 FM Edogawa (FMえどがわ, JOZZ3AS-FM, Edogawa City,...
        "https://musicbird.leanstream.co/JCB093-MP3",     // Dreams FM (ドリームスエフエム, JOZZ0AI-FM, 76.5 MHz, Kurume...
        "https://musicbird.leanstream.co/JCB104-MP3",     // Kyoto Living FM (京都リビング FM/きょうと りびんぐ FM)
        "https://musicbird.leanstream.co/JCB015-MP3",     // FM Blue Shonan (FM・ブルー湘南 , JOZZ3AD-FM, 78.5 MHz, Y...
};

uint8_t cur_station  = 0;         // current station No.

void setup() {
    Serial.begin(115200);
    WiFi.disconnect();
    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid , password );
    while (WiFi.status() != WL_CONNECTED) delay(500);
    Serial.println("WiFi start");
    audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT);
    audio.setVolume(15); // 0...21    
//    audio.connecttospeech("Wenn die Hunde schlafen, kann der Wolf gut Schafe stehlen.", "de");
//    audio.connecttospeech("When the dogs sleep, the wolf is good at stealing sheep.", "en");

    audio.connecttohost(stations[cur_station].c_str());
}
 
void loop()
{
    audio.loop();
}
 
// 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_showstreaminfo(const char *info){
    Serial.print("streaminfo  ");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);
}
void audio_eof_speech(const char *info){
    Serial.print("eof_speech  ");Serial.println(info);
}

0 件のコメント:

コメントを投稿

ESP32 - Bluepad32 ロボカー PS4コントローラー操作

  Bluetooth (Classic / BLE)対応の Bluepad32ライブラリー使用して、 無印E SP32制御ロボットカーを純正PS4コントローラーで操作しました。 (Xboxコントローラーに入替て操作出来ます) 同ブログ【 ESP32 - Bluepad32 PS...