ESP32-S3-DevKitC-1とPCM5102もインターネットラジオになりました

　一週間程前に以下の記事を見つけました。私の部屋の片隅で暫く眠ったままの"TTGO‐LoRa"があるので、それを活用できないかやってみようと思いました。

https://qiita.com/ynomura/items/e0cab352c90ff4025e59

これを参考にさせて頂いたら、〇マ〇ン購入の"PCM5102"と組み合わせてインターネットラジオがあっさり作れました。それに気を良くして、さらに何かできることはないかと模索していたところ、秋〇電〇で見つけてしまいました。ESP32シリーズの新バージョン
「ESP32-S3-DevKitC-1」
を！〇マ〇ンのほぼ半額だったので買うしかないと早速購入。翌日に届くという速さにこちらの心の準備がまだ、状態でした。さて、それからが大変。まだ情報もこちらの記事ぐらいで

https://lang-ship.com/blog/work/esp32-series/

他には数える程しか無く、どうしたものやら。いつものように「ArduinoIDE2.0.4」上の作業です。Examplesはたくさんあるものの使えそうなものが、うーん？"DAC"が失くなったというし、まあ"I2S"があるからMP3再生は"PCM5102"に信号を出せばできるのかな？と疑問符だらけ。
どうしようもないのでLチカぐらいと思いやってみたら、LED_BUILTINがメーカーサイトのPinLayoutと違う、図ではGPIO38になってるのに？色々試してGPIO48に繋がっていると判明。こんな状況でしたが"TTGO"で動いていたinoを書き込んでみたらラジオ局にはアクセスしているみたい。後は"PCM5102"に繋ぐ3Pinを見つければいいのかと。
　何となく"FSPID""FSPICLK""FSPIQ"辺りかなと。GPIO35、36、37の３本つまり３の階乗＝６通りを試してみようと考えやってみました。🎯でした💛！それがこれ
![ESPS3_PCM5102.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3189926/f7ab09cd-0573-9889-461b-9eeb97fdad34.jpeg)
といっても音はお見せ出来ず残念です。とても良い音で、それを聞きながらこの記事を書いています。以下、ソースコードです。
```c:
//**********************************************************************************************************
//*    audioI2S-- I2S audiodecoder for ESP32,                                                              *
//**********************************************************************************************************
//
// first release on 11/2018
// Version 3  , Jul.02/2020
//
//
// THE SOFTWARE IS PROVIDED "AS IS" FOR PRIVATE USE ONLY, IT IS NOT FOR COMMERCIAL USE IN WHOLE OR PART OR CONCEPT.
// FOR PERSONAL USE IT IS SUPPLIED WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
// WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR
// OR COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
//

#include "Arduino.h"
#include "WiFi.h"
#include "Audio.h"
#include "SPI.h"
#include "SD.h"
#include "FS.h"

#define I2S_DOUT      35 // DIN
#define I2S_BCLK      36 // BCK
#define I2S_LRC       37 // LCK

Audio audio;

String ssid =     "****"; // Your ssid
String password = "*****";// Your password

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

uint8_t cur_station  = 1;         // current station No.

void setup() {
    Serial.begin(115200);
    WiFi.disconnect();
    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid.c_str(), password.c_str());
    while (WiFi.status() != WL_CONNECTED) delay(1500);
    Serial.println("WiFi start");
    audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT);
    audio.setVolume(12); // 0...21

    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_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);
}

```
　たまたまうまく行っただけで、疑問がまだ残っています。結局"I2S"を本当に使っているのか、ただ単に
```c:
#define I2S_DOUT      35 // DIN
#define I2S_BCLK      36 // BCK
#define I2S_LRC       37 // LCK
```
と定義し割り振っただけなのか、どうなんでしょうね。:thinking:
　この後GPIO11、12、13でもできるか試してみます。