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
El Momento

"El primer tono de prueba saliendo por WiFi. Sin cables, sin ruido, solo música."

Configurar el I2S con el MAX98357 fue más fácil que el PCM5102, pero el streaming WiFi tiene sus propios desafíos. Buffer underrun, latencia, reconexión automática...

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

Especificaciones

AudioI2S digital, 44.1kHz 16-bit
AmplificadorMAX98357A, 3.2W @ 4Ω
ConectividadWiFi 802.11 b/g/n
Batería7.4V 5000mAh (2x18650)
Autonomía8-16 horas estimadas
ControlWeb interface, mDNS

Lista de Materiales (BOM)

ComponenteCant.PrecioNotas
ESP32 DevKit V11$8WiFi + Bluetooth
MAX98357 I2S Amp2$6Amplificador 3W x2 (estéreo)
LM2596S c/Display1$4Fuente 5V ajustable
18650 Battery2$12Li-Ion 3500mAh
Cargador USB-C 2S1$5BMS con protección
Speaker 63mm 4Ω 3W1$3Parlante rango completo
Total Aproximado$56 USDSin envío
Próximamente
Streaming audio real (HTTP/WebSocket)
Spotify Connect
AirPlay compatible
Multi-room sync
App Android control
Ecualizador web
OTA updates
Lo Que Funciona
  • Audio I2S — calidad digital sin ruido
  • Control web — desde cualquier dispositivo
  • Batería USB-C — carga rápida
  • Display voltaje — siempre visible
  • mDNS — acceso por nombre, no IP
Lo Que Falta Mejorar
  • Streaming real — solo tono de prueba por ahora
  • Sin case — electrónica expuesta
  • Alcance WiFi — depende del router

¿Querés uno?

Armalo vos. Es tuyo ahora.<br/>Todo el código, los esquemáticos y las instrucciones están disponibles.

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 funcional. Podés armar el tuyo.
¿Querés que te lo arme? Escribime