PROTOTYPE

HIOS WiFi Speaker

Parlante WiFi + Bluetooth con ESP32: **2× amplificador I2S MAX98357 en estéreo**, display LCD 16×2 y batería 2S recargable por USB-C. Reproduce radios WiFi, audio de YouTube (vía Invidious) y actúa como sink Bluetooth A2DP, con control por interfaz web.
1 / 6
Il Momento

"Il primo tono di prova che esce dal WiFi. Niente cavi, niente rumore, solo musica."

Configurare l'I2S con il MAX98357 è stato più facile che col PCM5102, ma lo streaming WiFi ha le sue sfide. Buffer underrun, latenza, riconnessione automatica...

HIOS WiFi Speaker

Parlante WiFi + Bluetooth con ESP32: 2× amplificador I2S MAX98357 en estéreo, display LCD 16×2 y batería 2S recargable por USB-C. Reproduce radios WiFi, audio de YouTube (vía Invidious) y actúa como sink Bluetooth A2DP, con control por interfaz web.

Quick Start

cd projects/speaker
pio run -t upload             # compilar y flashear (PlatformIO)
pio device monitor -b 115200  # monitor serial

¿Qué es?

Un hub de audio de escritorio. Modos (enum Mode en src/main.ino):
  • WiFi Radio — streams de radio (presets + URL custom).
  • YouTube — audio de YouTube vía la API de Invidious.
  • Bluetooth A2DP — sink: le mandás audio desde el celu/PC.
  • Config por BT serial — seteás el WiFi desde una terminal Bluetooth, sin recompilar.
Todo sale por I2S a los dos MAX98357 (estéreo real, un ampli por canal). El LCD muestra modo, volumen y título.

Cableado

La hoja verificada contra el firmware es la guía /pinouts/speaker (se auto-verifica contra src/main.ino en cada npm run test:wiring). Resumen:
BusESP32A
I2S DINGPIO25DIN de ambos MAX98357 (bus compartido)
I2S BCLKGPIO26BCLK de ambos
I2S LRCGPIO27LRC de ambos
I2C SDA / SCLGPIO21 / GPIO22LCD 16×2 (0x27)
VBATGPIO34divisor 100k/100k del pack (IO34 es input-only)
5V / GNDVIN / GNDdel LM2596 (buck a 5.0V)
El canal L/R lo elige el pin SD de cada ampli — MEDÍ, no asumas. El bus I2S es compartido; lo único distinto entre los dos módulos es SD. Left = SD→Vin (medí >1,4V); Right = SD→Vin por ~220–330k (medí 0,77–1,4V). Ver el paso "medir SD" en la guía. El viejo dato "1MΩ→GND=Left" es datasheet-dudoso: no lo uses.

Componentes (BOM)

Estéreo, pack 2S:
ComponenteFunciónSpecs clave~USD
ESP32 DevKit (WROOM-32)Micro + WiFi + BTsolo 2.4GHz$8
MAX98357Ampli I2S (L + R)3.2W @4Ω, clase D, 2.5–5.5V, THD+N 0.015%$6
parlante 63mmSalida (L + R)4Ω, 3W, 87dB, F0 ~135Hz$6
LCD 16×2 + backpack I2CDisplay de estadoHD44780, 0x27 (a veces 0x3F), 5V$4
LM2596S c/displayBuck 5.0V1.25–37V ajust., ~3A c/disipador, ~95%$4
Cargador 2S USB-CBMS + carga8.4V full, 2.2A carga, requiere 5V/4A$5
18650 (serie/2S)Batería7.4V nom → 8.4V full$12
Resistencias2× 100k (divisor VBAT) · 1 R para SD (valor medido)
⚠️ Batería en SERIE (2S), no en paralelo. El pack es 7.4V nominal (8.4V a plena carga) y el cargador USB-C es 2S. Un portapilas en paralelo (3.7V) es de una versión vieja y no sirve acá.
Compra (AR/MercadoLibre): "esp32 devkit v1" · "max98357 i2s amplificador" (×2) · "lcd 16x2 i2c" · "fuente lm2596 step down display" · "cargador litio 2s usb-c" · "porta pila 18650 serie" · "parlante 4 ohm 3w 63mm" (×2).

Armado (el orden importa)

Cada fase se prueba antes de pasar a la siguiente:
  1. Energía primero. Cargá el pack 2S, conectá al LM2596 y ajustá el buck a 5.0V con el multímetro. NO conectes nada más hasta tener 5V estables.
  2. ESP32 — OUT+ del buck → VIN, OUT− → GND. Probá un Blink por USB.
  3. Amplis (×2) — Vin→5V, GND→masa común, bus I2S (25/26/27) a los dos. Parlante 4–8Ω directo a la salida de cada ampli (class-D filterless, sin filtro).
  4. LCD — VCC→5V, GND, SDA=21 / SCL=22.
  5. Firmwaretests/test_basic.ino (debe dar un tono) → después src/main.ino.
Soldadura: 350–380°C con plomo (380–400 sin), contacto 2–3s, estañá puntas y pads primero. Antes de encender: continuidad de GND (0Ω entre todas las masas), sin corto VIN↔GND (∞), buck a 5.0V. Fotos de referencia en pics/build/ y pics/modules/.

Troubleshooting (aprendido a los golpes)

  • Se reinicia al usar WiFi: los picos de TX piden ~500mA → cap 470µF en la entrada del ESP32 (y ojo con cable USB fino / fuente floja = brownout).
  • Zumbido / ruido: una sola masa (no cablees el GND del ESP32 y del ampli por separado = ground loop); 100nF cerámico + 100µF electrolítico cerca de cada MAX98357; alejá el ampli de la antena; ferrita en los cables de audio; I2S corto (<10cm) y trenzado.
  • Distorsión: buck a 5V estables; bajá el volumen (el MAX98357 satura con señal muy fuerte).
  • Sale un solo canal: SD mal seteado en un ampli → medí SD, no asumas la R.
  • WiFi no conecta: el ESP32 es solo 2.4GHz. El voltaje del display del LM2596 es la salida (5V), no la batería.
Consumo típico: idle ~80mA · reproduciendo ~150mA · volumen máx ~300mA. La autonomía depende de la capacidad de las celdas.

Estado

En desarrollo — prototipo funcional. Firmware andando: WiFi radio, YouTube/Invidious, BT A2DP, config por BT serial, LCD y lectura de VBAT. Pendiente: PCB custom.

Licencia

Open Hardware — usá, modificá y compartí libremente.

HIOS — HI Open Systems · openhios.dev/projects/speaker

Specifiche

AudioI2S digitale, 44.1kHz 16-bit
AmplificatoreMAX98357A, 3.2W @ 4Ω
ConnettivitàWiFi 802.11 b/g/n
Batteria7.4V 5000mAh (2x18650)
Autonomia8-16 ore stimate
ControlloInterfaccia web, mDNS

Distinta base (BOM)

ComponenteCant.PrecioNotas
ESP32 DevKit V11$8WiFi + Bluetooth
MAX98357 I2S Amp2$6Amplificatore 3W x2 (stereo)
LM2596S w/Display1$4Alimentazione 5V regolabile
18650 Battery2$12Li-Ion 3500mAh
USB-C Charger 2S1$5BMS con protezione
Speaker 63mm 4Ω 3W1$3Altoparlante full range
Totale Approssimativo$56 USDSpedizione esclusa
Prossimamente
Streaming audio vero (HTTP/WebSocket)
Spotify Connect
Compatibile AirPlay
Sync multi-room
App di controllo Android
Equalizzatore web
Aggiornamenti OTA
Cosa funziona
  • Audio I2S — qualità digitale, niente rumore
  • Controllo web — da qualsiasi dispositivo
  • Batteria USB-C — carica rapida
  • Display voltaggio — sempre visibile
  • mDNS — accesso per nome, non per IP
Cosa deve essere migliorato
  • Streaming vero — per ora solo tono di prova
  • Niente case — elettronica esposta
  • Portata WiFi — dipende dal router

Ne vuoi uno?

Costruiscilo tu stesso. Ora è tuo.<br/>Tutti i codici, gli schemi e le istruzioni sono disponibili.

Project Toolbox

Archivos técnicos listos para flujo embebido diario: abrir, descargar o visualizar por tipo.
Documentación
ASSEMBLY.md
public
COMPONENTS.md
public
HIOS_Speaker_Soldering_Guide.md
public
HIOS_Speaker_Soldering_Guide.pdf
source
HIOS_Speaker_Soldering_Guide.pdf
public
PINOUT.md
public
README.md
source
README.md
public
TROUBLESHOOTING.md
public
Firmware / Config
platformio.ini
source
src/main.ino
source
tests/test_basic.ino
source
Prototipo funzionale. Costruisci il tuo.
Vuoi che lo costruisca per te? Scrivimi