SD
ESP32 StreamDeck
🎨 Cambiar Tema
Proyecto Técnico & Anteproyecto • Microcontrolador ESP32

Macro-Pad StreamDeck DIY

Dispositivo físico de 4 teclas con pantalla interactiva OLED I2C de 0.96 pulgadas, enlazado a Windows mediante comunicación serial para el control instantáneo de Spotify, Discord, Escritorio y Steam.

B1 • GPIO 13

Abrir Spotify

Lanza o enfoca el reproductor mediante el protocolo URI nativo del sistema.

B2 • GPIO 12

Discord Mute

Conmuta el silenciado del micrófono globalmente vía atajo configurable.

B3 • GPIO 14

Ver Escritorio

Minimiza y restaura todas las ventanas abiertas al instante (Win + D).

B4 • GPIO 27

Abrir Steam

Ejecuta el cliente de juegos Steam con protocolo directo sin latencia.

Parte 1: Anteproyecto

1.1 Identificación y Justificación

En tareas prolongadas de edición, trabajo remoto y videojuegos, el flujo de trabajo sufre interrupciones constantes por la necesidad de alternar ventanas manualmente para pausar música, silenciar llamadas en Discord o abrir plataformas de ocio. Las botoneras comerciales de productividad presentan precios elevados. Este anteproyecto aborda el diseño de una alternativa Open-Hardware y de bajo coste aprovechando la capacidad de cálculo y versatilidad de pines del ESP32.

1.2 Objetivos

Objetivo General: Diseñar, ensamblar y programar un dispositivo físico macro-pad de 4 teclas con retroalimentación visual en pantalla OLED, vinculado a un ordenador personal mediante comunicación UART-USB para automatizar acciones de escritorio.

Objetivos Específicos:

1.3 Alcance y Requisitos

Incluye: prototipo funcional de 4 teclas con OLED, conectado por USB a un PC con Windows y con 4 acciones fijas. No incluye: carcasa definitiva, conexión inalámbrica, perfiles configurables ni compatibilidad con otros sistemas operativos.

CódigoRequisitoCriterio de verificación
RF1Detectar 4 pulsadores independientes con filtro de reboteUna pulsación genera un único evento (debounce de 60 ms)
RF2Mostrar en la OLED la acción pulsadaEl nombre de la acción aparece en pantalla al pulsar
RF3Enviar la orden al PC por USB serie a 115200 baudiosEl PC recibe la cadena exacta de cada comando
RF4Ejecutar en Windows las 4 acciones (Spotify, Discord, Win+D, Steam)Cada tecla lanza su acción
RNF1Respuesta rápida desde la pulsación hasta la acciónObjetivo: inferior a 100 ms, valorado a ojo (sin instrumentación)
RNF2Alimentación únicamente por USB, lógica a 3.3 VSin fuentes externas ni tensión de red
RNF3Coste de materiales contenidoInferior a unos 11 € sin envío

1.4 Estudio de Alternativas

OpciónVentajasInconvenientes
Botonera comercial (StreamDeck)Lista para usar, software completo, buen acabadoPrecio muy superior; hardware cerrado y sin posibilidad de aprender o modificar
Arduino Pro Micro / RP2040 como teclado HIDSe comporta como teclado, sin programa en el PC; muy económicoEl Pro Micro no tiene Wi-Fi ni Bluetooth; menos margen para ampliar. Las acciones como abrir Steam o Spotify requieren atajos configurados en el PC
ESP32 + serie + daemon Python (propuesta)Muy flexible: cualquier acción del sistema; dispone de Wi-Fi y BLE para ampliar; bajo costeNecesita un programa residente en el PC y no funciona sin él

Se elige la tercera opción porque permite lanzar cualquier acción del sistema y deja la puerta abierta a ampliaciones inalámbricas, a cambio de depender de un pequeño programa en el PC.

1.5 Arquitectura del Sistema

1.6 Material Utilizado y Presupuesto (BOM)

Lista de componentes con precios orientativos de AliExpress. Los precios y la disponibilidad cambian a menudo, por lo que deben comprobarse en el momento de la compra. Los enlaces llevan a búsquedas, no a un vendedor concreto.

Componente Descripción en AliExpress Formato / Pack Precio AliExpress Enlace de Compra
ESP32 NodeMCU
Microcontrolador dual core 240MHz
ESP32 ESP-WROOM-32 Placa de desarrollo Type-C / Micro USB 30/38 pines (con pines soldados) 1 unidad 2.20 € - 2.80 € Buscar en AliExpress ↗
Pantalla OLED 0.96"
Display monocromo I2C (128x64)
Módulo OLED 0.96 pulgadas I2C SSD1306 4 pines (color azul o blanco) 3.3V-5V 1 unidad 1.35 € - 1.75 € Buscar en AliExpress ↗
Pulsadores Táctiles 12x12
Con capuchón redondo de colores
Interruptor táctil 12x12x7.3 mm con capuchón redondo surtido de colores Pack 10 unidades 0.95 € - 1.40 € Buscar en AliExpress ↗
Cables Dupont y Mini Breadboard
Para prototipado sin soldaduras
Juego de 40 cables Dupont hembra-hembra / macho-hembra 20 cm + Mini Protoboard 170 puntos 1 kit completo 1.20 € - 1.60 € Buscar en AliExpress ↗
Cable de Datos USB
Líneas de datos serie (D+ / D-)
Cable USB Type-C o Micro USB trenzado de 1 metro con soporte de sincronización de datos 1 unidad 0.80 € - 1.30 € Buscar en AliExpress ↗
Caja de Montaje ABS (Opcional)
Carcasa para electrónica DIY
Caja de proyectos de plástico ABS para electrónica 100x60x25 mm 1 unidad 1.10 € - 1.80 € Buscar en AliExpress ↗
TOTAL COMPRA ESTIMADO EN ALIEXPRESS (Kit completo) ~ 7.60 € - 10.65 € (suma de los rangos de la tabla; sin gastos de envío)

Recomendaciones clave al comprar en AliExpress:

  • ESP32: Elige siempre la opción con "pines soldados" (pre-soldered pins) para conectar directamente los cables sin necesidad de soldador.
  • Pantalla OLED: Asegúrate de que sea la versión I2C de 4 pines (VCC, GND, SCL, SDA). No compres la versión SPI de 7 pines para este circuito.
  • Cable USB: Verifica que en la descripción indique "Data Sync" o transmisión de datos, ya que existen cables que solo sirven para carga eléctrica y no transmitirían los comandos al PC.
  • Envíos: comprueba el importe mínimo para envío gratuito del vendedor y el plazo de entrega (varios días o semanas) antes de cerrar la planificación.

1.7 Planificación y Cronograma

Horas estimadas: ≈ 30 h en total (cifra de partida, ajustable a la dedicación real).

1.8 Análisis de Riesgos

RiesgoConsecuenciaMedida preventiva
Rebotes mecánicos en los pulsadoresPulsaciones repetidasFiltro por software de 60 ms
Cable USB solo de cargaEl PC no recibe datosComprar cable con "Data Sync" y probarlo antes
Pantalla con dirección I2C distinta de 0x3CLa OLED no respondeEjecutar un escáner I2C antes de programar
El puerto COM cambia al reconectarEl programa deja de recibirDetección automática del puerto y reconexión
GPIO 12 es un pin de arranque del ESP32Fallo de arranque si estuviera a nivel alto al encenderCon el pulsador a GND no hay problema; si falla, mover la tecla a otro GPIO
Atajo de Discord sin configurarEl mute no funcionaDocumentar la configuración en la puesta en marcha
Retraso en el envío de AliExpressRetraso en el proyectoPedir los componentes al inicio de la Fase I

1.9 Plan de Pruebas

PruebaProcedimientoResultado esperado
Detección I2CEscáner I2C con la OLED conectadaAparece la dirección 0x3C
Entradas digitalesPulsar cada tecla con el monitor serie abiertoLOW al pulsar, HIGH al soltar
Antirrebote100 pulsaciones por teclaUn evento por pulsación, sin duplicados
Comunicación seriePulsar cada tecla y leer en el PCLlega la cadena exacta del comando
Acciones de WindowsPulsar las 4 teclas con las aplicaciones instaladasSe ejecuta cada acción
ReconexiónDesconectar y volver a conectar el USBEl servicio se reconecta sin reiniciarse

1.10 Seguridad y Normativa

1.11 Mejoras Futuras

1.12 Conclusiones y Bibliografía

El proyecto reúne electrónica digital, comunicaciones serie, programación embebida y programación de sistemas con un coste de materiales muy bajo. El anteproyecto define requisitos medibles, riesgos y una prueba para cada uno, de modo que el resultado final pueda verificarse.

Parte 2: Especificación Técnica de Pines (Pinout)

El circuito aprovecha las resistencias pull-up integradas en el silicio del ESP32. Esto significa que cada pulsador simplemente une el pin GPIO correspondiente a masa (GND) al ser presionado, leyendo un nivel lógico bajo (LOW).

Dispositivo Pin Dispositivo Pin ESP32 Color Cable Función / Señal
OLED SSD1306 VCC 3V3 Rojo Alimentación lógica (3.3V)
OLED SSD1306 GND GND Gris / Negro Referencia masa común
OLED SSD1306 SDA GPIO 21 Cian Línea de datos I2C
OLED SSD1306 SCL GPIO 22 Amarillo Línea de reloj I2C
Pulsador 1 Terminal A / B GPIO 13 a GND Verde Acción: Abrir Spotify
Pulsador 2 Terminal A / B GPIO 12 a GND Morado Acción: Alternar Mute Discord
Pulsador 3 Terminal A / B GPIO 14 a GND Azul Cielo Acción: Escritorio (Win + D)
Pulsador 4 Terminal A / B GPIO 27 a GND Rosa Acción: Abrir Steam