ёRadio
NEW!
yoRadio Printed Circuit Boards repository:
https://github.com/e2002/yopcb
Hardware
Required:
ESP32 board: https://aliexpress.com/item/32847027609.html
I2S DAC, roughly like this one: https://aliexpress.com/item/1005001993192815.html
https://aliexpress.com/item/1005002011542576.html
or VS1053b module : https://aliexpress.com/item/32893187079.html
https://aliexpress.com/item/32838958284.html
https://aliexpress.com/item/32965676064.html
Optional:
Displays
(see Wiki for more details)
Controls
RTC
Connection tables
Use this tool to build your own connection table and myoptions.h file.
https://e2002.github.io/docs/myoptions-generator.html
Dependencies
Libraries:
Library Manager: Adafruit_GFX, Adafruit_ST7735*, Adafruit_SSD1306*, Adafruit_PCD8544*, Adafruit_SH110X*, Adafruit_SSD1327*, Adafruit_ILI9341*, Adafruit_SSD1305*, TFT_22_ILI9225* (* depending on display model), OneButton, IRremoteESP8266, XPT2046_Touchscreen, RTCLib
Github: ESPAsyncWebServer, AsyncTCP, async-mqtt-client (if you need MQTT support) / , add stations to playlist (or import WebStations.txt from KaRadio)
9. Well done!
See wiki for details
Update
- Backup your settings:
download http:///data/playlist.csv and http:///data/wifi.csv and place them in the yoRadio/data/data/ folder
- In ArduinoIDE - upload sketch data via Tools→ESP32 Sketch Data Upload
- Upload the sketch to the board
- Go to page http:/// in the browser and press Ctrl+F5 to update the scripts.
- Well done!
Update over web-interface
Backup your settings:
download http:///data/playlist.csv and http:///data/wifi.csv and place them in the yoRadio/data/data/ folder
Get firmware binary: Sketch → Export compiled binary
Get SPIFFS binary: disconnect ESP32 from your computer, click on ESP32 Data Sketch Upload.
You will get an error and file path
Go to page http:///update and upload yoRadio.ino.esp32.bin and yoRadio.spiffs.bin in turn, checking the appropriate upload options.
Well done!
MQTT
- Copy file examples/mqttoptions.h to yoRadio/ directory
- In the mqttoptions.h file, change the options to the ones you need
- Well done!
Home Assistant
- Requires MQTT integration
- Copy directory HA/custom_components/yoradio to .homeassistant/custom_components/
- Add yoRadio entity into .homeassistant/configuration.yaml (see example)
- Restart Home Assistant
- Add Lovelace Media Player card to UI (or mini-media-player card)
- Well done!
More features
Can add up to 65535 stations to a playlist. Supports and imports KaRadio playlists (WebStations.txt)
Telnet with KaRadio format output
see list of available commands
MQTT support
Topics:
MQTT_ROOT_TOPIC/command - Commands
MQTT_ROOT_TOPIC/status - Player status
MQTT_ROOT_TOPIC/playlist - Playlist URL
MQTT_ROOT_TOPIC/volume - Current volume
Commands:
prev - prev station
next - next station
toggle - start/stop playing
stop - stop playing
start, play - start playing
boot, reboot - reboot
volm - step vol down
volp - step vol up
vol x - set volume
play x - play station x
Home Assistant support
Plugins
The Plugin class serves as a base class for creating plugins that hook into various system events.
To use it, inherit from Plugin and override the necessary virtual methods.
Place your new class in the src/plugins/ directory
More details can be found in the comments within the yoRadio/src/pluginsManager/pluginsManager.h file and at here.
Additional examples are provided in the examples/plugins folder.
Work is in progress...
Version history
v0.9.720
- PR #211 https://github.com/e2002/yoradio/pull/211
- fix packets lost in HLS-TS
- fix stuttering if datatransfer is chunked
- split processWebStream/processWebFile
- fixed the error of connecting to the next access points from the list if the first one is unavailable
- fixed playback control errors from Home Assistant
- the DEF_SPI_FREQ parameter, intended for setting the user speed SPI of displays, has been removed from the settings (they work fine anyway)
- fixed an error connecting to the MQTT server during initial boot in SDCARD mode
v0.9.711
- fixed compilation error for LCD displays #210
v0.9.710
- rewritten ILI9225 display driver: now it supports framebuffer like the others and is more stable
- fixed clock update bug when changing timezone in settings
- bug/warnings fixes
v0.9.702
- fixed compilation error for Nokia5110 displays
v0.9.700
- added support for ST7789 320x170 displays
#define DSP_MODEL DSP_ST7789_170
- added support for LCD 20x2 displays (e.g. WH2002A)
#define DSP_MODEL DSP_2002 or
#define DSP_MODEL DSP_2002I2C
- added Russian language support for LCD displays that natively support Russian
to enable, add #define LCD_RUS in myoptions.h
PS: I cannot say in advance whether your LCD display supports Russian.
PS2: the method of “Russification” for LCD displays without native Russian support (based on 8 custom characters) cannot be used, since 8 symbols are too few to display all the required information.
- bug fixes
v0.9.693
- fixed incorrect behavior of the
HIDE_VU setting #205
- fixed
CORRUPT HEAP error when playing "invalid links" #203
- optimized code of
utfToAscii utf8Rus
v0.9.689
- fixed artifacts in scrolling text
v0.9.686
- fixed SD card connection bug in configurations with
SD_SPIPINS defined
- time synchronization setting
v0.9.682
v0.9.680
- fixed clock display bug when exiting screensaver in playback mode
- increased number of SD card initialization attempts when switching mode
v0.9.676
- fixed bug with incorrect text clipping on scrolling widgets
v0.9.670
- display performance optimization
- to improve rendering smoothness, a framebuffer has been added for TFT SPI displays ST7735, ST7789, ILI9341, GC9106, ST7796, GC9A01A, ILI9488, ILI9486
the framebuffer is applied only to moving elements (scrolling text, VU meter, clock)
the framebuffer works on modules with additional PSRAM
on such modules, the framebuffer is enabled automatically, no extra steps required
to disable the framebuffer, add #define USE_FBUFFER false in myoptions.h
on modules without PSRAM, the framebuffer is disabled by default. It can be forced on by adding #define SFBUFFER in myoptions.h
but in that case, free memory (as well as HTTPS streams) will be severely limited
- fixed compilation error for Nextion displays
- code cleanup, optimization, and refactoring
- bug fixes
v0.9.574
- fixed compilation error for certain displays when
#define DSP_INVERT_TITLE false is set
- fixed compilation error for
DSP_DUMMY
v0.9.570
v0.9.561
!!! a full update with Sketch data upload is required !!!
or-> just upload `yoRadi