Prvé webrádio som si postavil na ESP32-CAM a DAC I2S module MAX98357, keďže ESP32-CAM bolo v podstate jediné široko dostupné ESP32 s integrovanom pamäťou PSRAM (externá pamäť RAM, ktorá sa vyžaduje pre dekódovanie mp3, .aac - LC, HE, HEv2, alebo .ogg - Vorbis streamov). Nahrávanie firmvéru ale bola nočná mora, keďže som mikrokontróler v testovacom zapojení napájal cez regulátor (zdroj) ZK-4KX, zároveň som k nemu musel pripojiť FTDI 232FL prevodník a taktiež som mal k nemu pripojený aj DAC modul MAX98357. Ten som musel odpájať, aby som dostal chýbajúce GND ešte k GPIO0 (Boot signálu) pre prepnutie ESP32-CAM do download módu. Tento proces bolo potrebné opakovať zakaždým a bolo to časovo náročné. OTA update skrz network COM port padol vhod, kedy sa aplikácia dala flashovať priamo v LAN sieti (ESPOTA) a dramaticky to znížilo potrebný čas nahrávania FW.
Hľadal som možnú alternatívu, ktorá by už ponúkla aj stereo zvuk s ľavým a pravým kanálom a aby mala všetko na jednej PCB. Stereo zvuk samozrejme vyžaduje dvojicu DAC prevodníkov MAX98357 (alebo podobných) na DPS. Priamo v knižnici Audio (ESP32-audioI2S), na ktorej som si postavil prvé Webradio sa spomínal devkit YB-ESP32-S3-AMP ako odporúčaný hardvér pre audio aplikácie, avšak ten je dostupný iba skrz Ebay, či švajčiarsky e-shop Ricardo. Najdostupnejšie sú verzie V2 alebo V3.

YB-ESP32-S3-AMP V3
Druhým zaujímavým hardvérom bol devkit Loud ESP32 na platforme Tindie, ktorá združuje vývojárov, nadšencov mikrokontrolérov. Poľský autor Sonocotta má ešte niekoľko iných verzií, ktoré sú určené aj pre výkonové reproduktory s elektrickým výkonom až 40W na kanál (Amped ESP32 a Louder ESP32), ale o tých sa dnes baviť nebudeme. Pre moju potrebu je úplne dostačujúca aj základná verzia, ktoré je určená pre 5W alebo 3W reproduktory. Aj táto verzia disponuje dvojicou DAC zosilňovačov MAX98357 a až 8 MB PSRAM pamäťou a 16 MB flash pamäťou. Doska je väčšia (určite by sa na nej dalo ušetriť priestoru) a má 86 x 56 mm. Je osadená jednostranne a má mnohé možnosti rozšírenia, ktoré si priblížime.

Loud ESP32 od Sonocotta
Štandardne s čistou DPS bez akýchkoľvek rozšírení si môžete urobiť webraádio s WiFi konektivitou. Ak by ste však zatúžili po Ethernete, je tu možnosť, ale nie pre PHY Ethernet. ESP32-S3 nemá podporu RMII rozhrania, teda ani PHY Ethernetu a tak u neho nemôžete použiť napríklad LAN8720 ako u štandardného ESP32-WROOM-32. V tomto prípade má doska predpripravené pinholes na SPI modul Wiznet W5500 (USR-ES1). Rovnako tak má DPS možnosť nasprájkovania aj RGB diódy, ale aj IR prijímača.
To vám umožní ovládať konkrétnu aplikáciu skrz diaľkový ovládač. Použitý pinout pre IR prijímač (dekóder) je zhodný napríklad s TSOP1738, alebo TSOP1838, ktorý poznáme z populárneho modulu KY-022. Samotná modul by ste ale použiť nemohli, lebo má iný pinout ako na ňom použitý TSOP1838. Z hľadiska softvéru, ak sa vám podarí dekódovanie, tak ste schopný použiť akýkoľvek ovládač. Kľudne aj ten, ktorý používate k TV. Na zadnej strane DPS sú pripravené aj piny pre pripojenie OLED displeja skrz flex kábel.


ESP32-WROVER (Loud-ESP32) s Wiznet W5500
Samotný vývojár DPS Sonocotta na Tindie odporúča integráciu Loud ESP32 do Home Assistanta (ESPHOME). Odporúča napríklad aj Squeezelite, čo je multimediálny softvér, skôr známy ako LMS (Logitech Media Server). Skrz SpotifyConnect. Vďaka tomu môžete použiť viacero zariadení na streamovanie hudby v rôznych miestnostiach synchronizovane. Rovnako tak je možné streamovať aj cez Bluetooth (AirPlay v1). Loud ESP32 je dostupné aj s ESP32-WROVER, ale keďže tento modul až tak nepoznám, šiel som do ESP32-S3. Z pohľadu programovnej implementácie by to bolo cca identické.
Portovanie programu z ESP32-S na ESP32-S3
Očakával som rôzne scenáre, ktoré môžu nastať pri kompilácii programu, ktorý fungoval pod ESP32-S (ESP32-WROOM-32 v licencii AI-Thinker) na ESP32-S3. V programe som zmenil čísla GPIO vývodov pre signály CLK, DATA, WS. V popise na Tindie pre Loud ESP32 sa nachádzal aj signál DAC EN. Ten som definoval ako samostatný výstup a nastavil som ho pri štarte MCU na signál HIGH.

Kupodivu nahratie firmvéru prebehlo bez problému a webrádio začalo hrať. Webserver fungoval, rovnako tak aj OTA s network COM portom. Fungovalo prepínanie staníc, aj dynamické ovládanie hlasitosti sliderom. Nefunguje ale mDNS záznam a nie je možné k mikrokontroléru pristúpiť skrz doménové medno audio.local. To sa mi zatiaľ nepodarilo vyriešiť, ale chápem, je to iná architektúra, i keď sa v mnohom na WROOM-32 podobá. Doska v základnej verzii vyšla na 17,54 €. Doručenie z Poľska poštou. Otestoval som mono, aj stereo zvuk. Funguje bez problémov, oba kanály hrajú synchronne. Skúšal som 2W (8 ohm) a 3W (4 ohm) reproduktor, ktorý som mal poruke. Doska sa napája skrz USB-C na 5V, nie je tu prítomný USB-UART prevodník, nakoľko ESP32-S3 má priamo signály USB D+ a USB D-, teda sa programuje napriamo z USB konektora bez potreby prevodníka.

Pred nahrávaním firmvéru sa uistite, že používate správne nastavenia veľkosti flash pamäte, tabuľky partícii a podobne, nakoľko sa môže stať, že doska nebude používať PSRAM, lebo ju bude mapovať do nesprávneho ofsetu, kde sa prekrýva s internou flash pamäťou mikrokontroléra. Rovnako tak nezabudnite vybrať spôsob pripojenia PSRAM, ide o QSPI zbernicu. Ešte zaujímavosť, ESP32-S3 modul použitý na Loud ESP32 devkite nie je priamo od Espressifu, ale od Siinst, konkrétne Shenzen Siinst Technology Co. Ltd. Ešte som od nich žiadny ESP32 modul nevidel, ale funguje bez problému. Tento devkit má predpoklady z hľadiska dostupnej flashky, PSRAM na vytvorenie ozaj zložitých a náročných audio aplikácii. Pre moje potreby je viac než dostačujúci. Dostal som poslednú revíziu F.
Zaujímavosťou diszajnu Loud ESP32, HiFi-ESP32, Louder-ESP32 (iba pre verzie s ESP32-S3) je, že PCB je plne kompatibilná s akrylickými krabičkami pre Raspberry Pi 3/4 a to aj vrátane SPI Ethernetu Wiznet W5500. To vysvetľuje aj celkovú veľkosť DPS.
