Internetové Wi-Fi rádio ESP 32

Internetové Wi-Fi rádio ESP 32
ESP 32, VS 1053B, I2C LCD DISPLEJ, TLAČÍTKA ( volitelné ).
Toto Internetové rádio je postaveno z výkonného modulu ESP 32, zvukové karty VS 1053B a libovolného I2C LCD displeje. Velkou předností této verze je to, že naše rádio již není potřeba připojovat k Internetu pomocí Ethernetového kabelu, tím odpadá nutnost síťové kabeláže a dále tím, že každá aktualizace projektu v našem zařízení se provádí pomocí naší domácí WiFi sítě a nemusíme projekt přehrávat pomocí USB kabelu.
Tento projekt je určen těm, kteří již se s ESP 32 seznámili a znají jeho základní funkce. Rádio je ovládané tlačítky, ( není podmínka – osobně jsem je nepoužil ). Nicméně v kódu projektu je vloženo 6 tlačítek. 2 pro hlasitost, 2 pro stanice 1+ a 1-, a pro stanice 10+ a 10-. Klidně můžete rádio ovládat DO ( příklady zde http://dakohran.cz/2020/02/15/internetove-radio-ovladane-dalkovym-ovladacem/ a zde : http://dakohran.cz/2020/02/23/internetove-radio-arduino-mega-150-stanic-dalkove-ovladani-posuv-textu-na-lcd/.
NĚKTERÉ KNIHOVNY POUŽITÉ V ARDUINO UNO ( MEGA ) NEBUDOU FUNGOVAT V ESP 32 !!! JE NUTNO POUŽÍT DANOU KNIHOVNU PRO ESP. ( NA KONCI ČLÁNKU KE STAŽENÍ )

Zapojení hardware :
---------------------------------------------
| VS1053 | ESP 8266 | ESP 32 | PŘIŘAZENÍ |
---------------------------------------------
| 13 SCK D5 GPIO 18 SCK |
| |
| 12 MISO D6 GPIO 19 MISO |
| |
| 11 MOSI D7 GPIO 23 MOSI |
| |
| 8 XRST RST EN RESET |
| |
| 6 XCS D1 GPIO05 XCS |
| |
| 7 DCS D0 GPIO16 DCS |
| |
| 2 DREQ D3 GPIO04 DREQ |
| |
| GPIO13 Tlač.+ |
| |
| GPIO12 Tlač.- |
| |
| GPIO21 I2C SDA |
| |
| GPIO22 I2C SCL |
| |
| 5 V 5V 5 V Napájení|
| |
| GND GND GND Napájení|
| |
| TLAČÍTKA SPÍNAJÍ GND !!! |
| |
---------------------------------------------

Schéma zapojení je v této tabulce, použil jsem vodiče samice – samice, pomocí kterých jsem propojil žádané piny mezi ESP 32 a VS 1053B. Kontakt spojů je vyhovující, nicméně po úspěšném vyzkoušení je vhodné vodiče napájet na piny a použít smršťovací bužírku, tím bude zajištěna maximální spolehlivost.
Jak jsem již napsal, ESP 32 je výkoný modul obsahující 2 CPU jádra, která se dají jednotlivě ovládat a nastavit jejich pracovní frekvence v rozsahu 80 až 240 MHz pracující s Flash pamětí 4 MB. Program zde nebudu celý zobrazovat, podívame se na část s funkcí OTA která nám umožňuje WiFi přenos projektu do ESP 32.
PRVNÍ NAHRÁTÍ PROJEKTU DO ESP 32 MUSÍ BÝT PROVEDENO POMOCÍ USB, ABY OTA BYLO AKTIVNÍ !!!
.
.
.
// Na konci SETUP : //
ArduinoOTA
.onStart([]() {
String type;
if (ArduinoOTA.getCommand() == U_FLASH)
type = "sketch";
else // U_SPIFFS
type = "filesystem";
// NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end()
Serial.println("Start updating " + type);
})
.onEnd([]() {
Serial.println("\nEnd");
})
.onProgress([](unsigned int progress, unsigned int total) {
Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
})
.onError([](ota_error_t error) {
Serial.printf("Error[%u]: ", error);
if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");
else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");
else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");
else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");
else if (error == OTA_END_ERROR) Serial.println("End Failed");
});
ArduinoOTA.begin();
Serial.println("Připraven");
Serial.print("IP addresa: ");
Serial.println(WiFi.localIP());
char serinfo[64];
// Nastavení sériového portu pro ladění
Serial.begin(115200);
// Serial.print(appname);
Serial.println(" Startuji...");
sprintf(serinfo, "Bezim na CPU %d at %dMHz, s %d volne pameti.",
xPortGetCoreID(), ESP.getCpuFreqMHz(), ESP.getFreeHeap());
Serial.println(serinfo);
// Hotovo, dále budeme pracovat ve smyčce...
}
Tento kód na konci SETUP nám umožňuje bezdrátový přenos souborů ( projektu ) do ESP 32. Pokud ho nepoužijeme, budeme muset později „přehrávat“ ESP 32 pomocí microUSB.

Okno pro nastavení portu pomocí OTA bude vypadat nějat takto…
Zkouška funkčnosti
Samotný program je kromě OTA téměř identický s předchozími verzemi pro Arduino Uno ( MEGA ). U ESP 32 již nejme limitováni velikostí pamětí, tak si zde už můžeme vyhrát 🙂 Pokud si například setřídíte stanice podle žánrů ( 1 – 20 Rock, 21 – 40 Metal … ), můžete si předefinovanými tlačitky přepínat podle žánru a ne jednotlivě po stanicích…
Osobně jsem s tímto ESP modulem velmi spokojen, snad jedinou nevýhodou u této aplikace je potřeba dostatečně silného Wi-Fi signálu Vašeho routeru. V panelovém bytě mám odzkoušené, že tam kde je dostatečný signál pro mobil nebo notebook již není ideální pro toto rádio. Nesmíme zapomenout, že tyto rádia nemají téměř žádný vyrovnávací buffer a přehrávají nám vždy po 32 bajtech.
NEZAPOMEŇTE SI DO PROJEKTU ZADAT PŘÍSTUPOVÉ ÚDAJE K VAŠÍ WI-FI SÍTI ! 🙂
LiquidCrystal_I2C lcd(0x27, 16, 2); // LCD na adrese 0x27, 16 znaků, 2 řádky
VS1053 MP3player(5,16,4); // X_CS 6 pin, X_DCS 7 pin, DREQ 2 pin, X_RESET 8 pin
// Zde zadat přístupové údaje k WiFi
char ssid[] = "XXXXXXXXXXXXX"; // ZDE ZADAT JMÉNO VAŠÍ WIFI SÍTĚ
char pass[] = "YYYYYYYYYYYYY"; // ZDE ZADAT HESLO VAŠÍ WIFI SÍTĚ
Soubory ke stažení :
29 Odpovědi
zdravím,
nefunguje to, mam to tež to co je v ukázce a nic , bez zvuku , nelze přepinat ….atd.
v čem je problém?
L.
Dobrý den, z dotazu nemohu určit kde může být problém.
1. Připojí se ESP 32 k Vaší domácí síti ? – zkontrolujte jméno a heslo k Vaší Wi-Fi
char ssid[] = „XXXXXXXXXXXXX“; // MÍSTO XXX… ZADAT JMÉNO VAŠÍ WIFI SÍTĚ
char pass[] = „YYYYYYYYYYYYY“; // MÍSTO YYY… ZADAT HESLO VAŠÍ WIFI SÍTĚ
Pozor na uvozovky “ „, v přiloženém souboru jsem jednu nechtěně umazal v názvu sítě, brzo opravím…
2. Pokud je nastavení sítě OK, co vypíše serial monitor ?
Dobrý den,
při nahrávání nebo ověření programu mi hlásí chybu kompilace.
Dobrý den, nenapsal jste, s jakou chybou je kompilace přerušena.
Možné příčiny :
1. Špatně zvolena vývojová deska, má být ESP 32 Dev Module
2. Konflikt knihoven pro VS1053B : máte-li v katalogu i knihovnu pro VS1053B Arduino UNO,
smažte ji a nechte pouze knihovnu VS1053B pro ESP 32.
Dobrý den, jako vždy máte pravdu, konflikt knihoven,
nicméně deska mi při nahrávání programu zřejmě neodpovídá.
Arduino: 1.8.10 Hourly Build 2019/05/21 09:33 (Windows 10), Vývojová deska: „ESP32 Dev Module, Disabled, Default 4MB with spiffs
(1.2MB APP/1.5MB SPIFFS),
240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None“
Projekt zabírá 764462 bytů (58%) úložného místa pro program. Maximum je 1310720 bytů.
Globální proměnné zabírají 44380 bytů (13%) dynamické paměti,
283300 bytů zůstává pro lokální proměnné. Maximum je 327680 bytů.
esptool.py v2.6
Serial port COM4
Connecting…….._____….._____….Nastala chyba při nahrávaní projektu.
A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header
Děkuji
Při prvním nahrávání projektu ( pomocí mikro USB ) musíte stisknout obě tlačítka na vývojové desce těsně před downloadem současně. Je to docela opruz, u některých desek je musíte držet aspoň 5 vteřin, u některých stačí tak na 1 sec. stisknout a uvolnit, u některých střídavě stisknout a
uvolnit. Je to o nervy, nicméně jakmile se Vám podaří projekt poprvé nahrát, další downloady je možné provádět pomocí WiFi 🙂
.
.
// Důležité !!!!! Zde zadat přístupové údaje k WiFi
char ssid[] = „Jméno Vaší sítě“; // ZDE ZADAT JMÉNO VAŠÍ WIFI SÍTĚ
char pass[] = „Heslo Vaší sítě“; // ZDE ZADAT HESLO VAŠÍ WIFI SÍTĚ
Potom si v Arduino IDE přepněte port na Ethernet…
Dobrý den,
v zapojení vidím i ESP8266. To je také potřeba nebo je to alternativa pro UNO místo ESP32?
Děkuji za vysvětlení Vlasta
Dobrý den, tento projekt je určen pro ESP 32 nebo ESP 8266 ( starší model proti ESP 32 ). Pro Arduino UNO tento projekt není určen.
Dobrý den,
mám problém vše se nahraje, ale nehraje zvuk a ani informace na displeji se nezobrazí.
Když se podívám do zařízení k routeru tak vidím, že se esp32 připojí, ale neodebírá žádné data. Už nevím co by mohlo být špatně. Můžete mi prosím poradit? Děkuji.
seriový monitor mě vypíše:
18:11:30.700 -> ets Jun 8 2016 00:22:57
18:11:30.700 ->
18:11:30.700 -> rst:0x1 (POWERON_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
18:11:30.700 -> configsip: 0, SPIWP:0xee
18:11:30.700 -> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
18:11:30.700 -> mode:DIO, clock div:1
18:11:30.700 -> load:0x3fff0018,len:4
18:11:30.700 -> load:0x3fff001c,len:1216
18:11:30.746 -> ho 0 tail 12 room 4
18:11:30.746 -> load:0x40078000,len:10944
18:11:30.746 -> load:0x40080400,len:6388
18:11:30.746 -> entry 0x400806b4
18:11:33.184 -> Startuji
18:11:35.528 -> P⸮
Dobrý den, těžko tak od pasu říct kde může být problém…
Já bych zkusil nahrát znovu projekt do ESP pomocí USB kabelu, kabel nechat připojený a po naběhnutí
ESP bych klikl na ikonu lupy v Arduino IDE ( vpravo nahoře ). Otevře se další okno kde by jste měl dostávat
nějaké data od ESP při jeho náběhu a při připojovaní k routeru a serveru se streamem. V projektu jsou
„pastičky“ – např. Serial.println(“ Startuji…“); – to by se Vám mělo zobrazit v tomto okně. Těch pastiček je tam více, takže zjistíte, kde se Vám to „kouslo“. Já bych to ale spíše viděl na špatné zapojení nebo na jinou
verzi ESP. Pokud máte jiné než je na fotografii tohoto příkladu tak Vám nesedí piny a budete muset na Internetu pohledat pinout Vašeho ESP. Dejte vědět co jste zjistil. Ještě mě napadlo – zkuste změnit předvolbu stanice po spuštění z 27 například na 1, Star Sat dělal kejkle s linky, aktuálně je živý tento :
http://starsat-ais-edge-3002-fra-eco-cdn.cast.addradio.de/starsat/live/mp3/high/stream.mp3
To by ale zásadně nemělo vadit, pokud cesta ke stanici již neexistuje, na LCD by mělo aspoň svítit Předvolba :
Ahoj, měl jsem stejný problém.
1) Stačilo upravit kontrast na displaji (trimr na zadní straně) a text se objevil.
2) Ve sketchi je v „int ID_stanice=xxx;“ nastavena „starovací“ stanice (xxx byla tuším 27=Star*Sat Radio), která shodou náhod nehraje.
Ano, Star*Sat Radio opět dělá kejkle, aktuálně hraje na : http://starsat–di–nacs-ais-lgc–01–cdn.cast.addradio.de/starsat/live/mp3/high/stream.mp3
Podařilo se najít chybu? Mám podobný problém.
Jaký problém ? To je široký pojem 🙂
zdravim tak sem se rozhodl ze si udelam taky internetove radio – koupil sem VS1053B shield
a WeMos D1 R32 UNO ESP32 krasne to do sebe pasuje – ale nehraje – samozrejme sem piny prepsal aby to do sebe sedlo (reset pin teda neni propojeny ale to asi nevadi)
skusil sem nahrat kod jen do Wemos a zapnout
krome toho ze seriovy port ukaze ze jen startuje – zadne info o WI-FI atd.
na LCD hodne pomalu bezi predvolena stanice ale bez napisu PREDVOLBA:
jakmile se snazim prepnout tlacitkem tak se posun stanice na display zastavil – predpokladam ze se cely modul zaseknul
Dobrý den, shield je kompaktibilní s Arduino UNO nebo MEGA. Do WeMos D1 R32 UNO ESP32 Vám
sice mechanicky pasuje, ale Wemos má jinak rozmístěné piny než Arduino. Přepsání v SW nepomůže.
Dále tento Wemos pracuje na všech pinech pouze s napětím 3,3 V, případné přivedení 5V může ESP zničit.
Jelikož VS1053B pracuje pouze s 5V tak s největší pravděpodobností už budou nějaké piny na ESP odpálené. 🙁
Specifikace v češtině : https://www.laskarduino.cz/wemos-d1-r32-uno-esp32/?gclid=Cj0KCQjwwNWKBhDAARIsAJ8HkheYIMgnAWrWizvcBJ-VpBlsrLfIkwv6fcrlP1qpeIpsU3iD0l-IkqsaAt-lEALw_wcB
Také jsem zkoušel kompatibilitu vs1053 schielt s esp ale kvuli napětí 3.3v jsem to vzdal, ale zkoušel jsem zprovoznit internet radio na arduino uno s vs1053b a esp použít jako internet klient ale stále se mi to nevede. radovan
Jasně, ESP 32 na 3.3 V Vám nebude hrát, musí být ESP 32 na 5 V.
No snad by to šlo s použitím převodníků 3.3 / 5 V, ale je tozbytečně složité.
Zdravím,
jak zařídím, aby po zapnutí hrála posledně zvolená stanice?
Děkuji
To je velmi jednoduché, jakmile dojde ke změně hodnoty v proměnné Predvolba ( přepnete stanici ), tak tuto hodnotu uložte do EEPROM ESP32. Příklad zde : https://randomnerdtutorials.com/esp32-flash-memory/ Mějte ale na paměti, že každé přepnutí stanice přepíše EEPROM, nicméně měla by zvládnout cca 100 000 – 1 000 000 zápisů. ( u Arduino Uno to bude do 100 000 ). Dále upravte kód na začátku programu aby se proměnné Predvolba nenastavila na pevně danou hodnotu po spuštění ESP ( například Predvolba = 27 ), ale aby se načetla hodnota z EEPROM.
Díky za nakopnutí, upravil jsem si zatím program na 200 stanic a krmím je podle http://fmstream.org/index.php.
Díky za super projekt 🙂
Zdravím, nainstaloval jsem na ESPDUINO32 a program proběhne a na výpise mám Startuji-Připraven a IP adresu ale když se na ni chci připojit tak hlásí chybu. VS1053 jsem zatím nepřipojoval jen zkouším jestli to spolu bude fungovat melo by to pasovat ale ještě jsem nekontroloval piny. Ale i tak bych měl tu IP adresu otevřít ne? Děkuji za radu.
Dobrý den, tak s tímto boardem jsem ještě neměl možnost se seznámit. Zcela určitě bude mít jinak rozmístěné piny než Arduino Uno ( Mega ), takže shield VS1053 určitě po zasunutí do tohoto boardu v lepším případě nebude fungovat. V horším ho odpálíte. Chce to řádně proštudovat manuál k této desce a teprve potom se pouštět do experimentů. Bohužel neporadím, hodně zdaru.
Dobrý den. Měl bych dotaz ohledně adres: kde najdu MP3 adresu rádia Evropa2. Děkuji
Co takhle zkusit stryca Googla ?
http://ice.actve.net/fm-evropa2-128
10 vteřin hledání 🙂
Zdravim, skusam nahrat Vas projekt do ESP32. Nedari sa mi a vyhadzuje nejaku chybovu hlasku, ktorej nerozumiem. Viete mi pomoct? Dakujem.
Arduino: 1.8.19 (Windows 7), Vývojová doska:“ESP32 Dev Module, Disabled, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 115200, Core 1, Core 1, None, Disabled“
Projekt zaberá 768065 bytov (58%) pamäte pre program. Maximum je 1310720 bytov.
Globálne premenné zaberajú 44700 bytov (13%) dynamickej pamäti, 282980 bytov zostáva pre lokálne premenné. Maximum je 327680 bytov.
java.io.IOException: Cannot run program „___REMOVE___/esptool.exe“: CreateProcess error=2, Systém nemôže nájsť zadaný súbor
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at processing.app.helpers.ProcessUtils.exec(ProcessUtils.java:26)
at cc.arduino.packages.Uploader.executeUploadCommand(Uploader.java:129)
at cc.arduino.packages.uploaders.SerialUploader.runCommand(SerialUploader.java:383)
at cc.arduino.packages.uploaders.SerialUploader.uploadUsingPreferences(SerialUploader.java:197)
at cc.arduino.UploaderUtils.upload(UploaderUtils.java:77)
at processing.app.SketchController.upload(SketchController.java:732)
at processing.app.SketchController.exportApplet(SketchController.java:703)
at processing.app.Editor$UploadHandler.run(Editor.java:2061)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.IOException: CreateProcess error=2, Systém nemôže nájsť zadaný súbor
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.(ProcessImpl.java:386)
at java.lang.ProcessImpl.start(ProcessImpl.java:137)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
… 9 more
Nastala chyba pri nahrávaní projektu
Táto správa by mala mať viac informácií v
„Zobrazenie podrobného výstupu pri kompilácii“
podľa zapnutá voľba v Súbor -> Nastavenia.
Dobrý den, nemáte nainstalovanou podporu ESP 32 v Arduino IDE.
Jak na to lehce vygooglíte, např:
https://navody.dratek.cz/navody-k-produktum/jednoducha-instalace-esp32-do-arduino-ide.html
https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/
Dobrý deň.
Čo vravíte na tento vynález: https://elektro.turanis.de/html/prj466/index.html ???
Môže to hrať bez mp3 dekodéra? Okrem toho je tam zle nakreslený reproduktor. Nie som až taký znalec, ale pripadá mi to super jednoduché.
Ďakujem za odpoveď.
Dobrý den, ano SW emulace MP3 dekodéru je mi známa. Rádio Vám bude hrát, ale pouze mono, dynamika zvuku nic moc a můžou se projevovat rušivé signály od oscilátoru CPU. Ale hraje to, nenáročný posluchač může být spokojen. Jinak opravdu zapojení na odkazu je špatné ( napájení jde přímo do reproduktoru ).