Construí una pantalla de $ 30 “ahora jugando” para mi reproductor de discos con un ESP32, y se ve muy adecuadamente

El ESP32 es un microcontrolador increíblemente versátil, y mientras tenga los cables y el hardware para conectarlo, puede hacer prácticamente cualquier cosa con él. Construí una pantalla de matriz LED con un ESP32 Y un panel Waveshare 64×32 hace unas semanas, y ahora lo he convertido en un dispositivo que puede mostrar lo que se está reproduciendo en un momento donado.

Sin confiscación, hay un modismo: no solo estoy sacando un sensor de “ahora jugando” de Spotify, estoy identificando la pista que estoy jugando actualmente en mi reproductor de discos. Esto utiliza una combinación de un micrófono colocado en mi altavoz, Shazam y un servidor MQTT para difundir resultados para mostrar en la pantalla. El resultado final es una forma factible para cualquier persona en mi casa ver qué canción está reproduciendo actualmente en mi tocadiscos, sin falta de preguntar.

Configuración de shazam

Hay una gran biblioteca de Python para esto

ESP32 ahora jugando en un servidor MQTT que muestra toda la información extraída de Shazam

Antiguamente de entrar en el banda del hardware de las cosas, necesitamos una forma de identificar las pistas que se están reproduciendo actualmente. Hay una API Shazam de ingeniería inversa citación “Shazamio” que podemos usar para esto, ya que utiliza los mismos puntos finales oficiales que las aplicaciones oficiales usan para identificar una pista de reproducción. Podemos invocar esto en Python, extrayendo audio de nuestro micrófono y reenviarlo a un servidor MQTT.

Una vez usé la Biblioteca Shazamio hace mucho tiempo, así que pude reutilizar mi código antecedente para mucho de esto, informando los datos a un corredor de MQTT. Utilizo MQTT para muchos de mis servicios autohospedados, incluso para Zigbee2mqttpor lo que era trivial señalarlo a mi corredor para informar los datos de la pista. Giro básicamente todo, y un mensaje de muestra a mi servidor MQTT se ve así:

{
"event": "now_playing",
"timestamp_utc": "2025-08-20T15:54:18.424651+00:00",
"track": {
"title": "Ocean Breathes Salty",
"artist": "Modest Mouse",
"album": "Good News for People Who Love Bad News",
"released": "2004",
"url": "https://www.shazam.com/track/40298344/ocean-breathes-salty",
"cover": "https://is1-ssl.mzstatic.com/image/thumb/Music124/v4/f9/02/da/f902dad6-7a7e-203a-5648-78e67d42b515/mzi.fcuuybmm.jpg/400x400cc.jpg",
"key": "40298344",
"isrc": "USSM10315495"
},
"track_id": "40298344",
"source": "microphone/shazam"

Con esto, incluso podríamos procesar la portada si quisiéramos designar dinámicamente los colores para el texto. Es trivial extraer esos datos de la respuesta de la API de Shazam, lo que significa que podemos identificar fácilmente una pista y luego despachar los datos para mostrar en una pantalla al banda del tocadiscos.

ESP32 ahora reproduciendo vs código de identificación de código

La privacidad es poco en lo que pensé mucho al desarrollar esto, pero no hay muchas alternativas. Lo mejor que se me ocurrió fue poner el micrófono directamente en el altavoz, ya que el audio es tan cachas en relación con la ubicación del micrófono ahogará cualquier otra cosa en la habitación. Tengo una decisión teórica para preservar esto tanto como sea posible cuando se proxenetismo de privacidad y preservar contra la muro de tarifas, aunque aún no está en su circunstancia.

Actualmente, escarbado cada diez segundos para la pista de reproducción actualmente. Cuando se proxenetismo de un reproductor de discos, puedes tirar de la canción y luego no comenzar a sondear nuevamente hasta que casi termine. De todos modos, no saltará canciones, por lo que podemos esperar la largura de la canción entre las encuestas, lo que significa que se envía una cantidad mínima de datos de audio mientras se gestiona una identificación musical robusta.

Sin confiscación, hay un problema con esto, y es por eso que no lo implementé. Shazam no será consumado cuando se proxenetismo de identificar la música que se suena, y a veces comete errores. Vea el texto a continuación, tomado de la captura de pantalla antecedente:

(info) Published: Modest Mouse — Satin In A Coffin
(info) Published: Helicalin — Self-Resonance (Version 2)
(info) Published: Modest Mouse — Satin In A Coffin

Si Shazam identifica la canción incorrecta, eso significa que no obtendrá una leída precisa de cualquier canción que esté reproduciendo. Teóricamente podría conectar un pimpollo al ESP32 para forzar una canción de nuevo si sé que está mal comunicando con el corredor MQTT, pero eso todavía introduce una complejidad adicional. En ese decorado, el servicio de oyentes que he desarrollado podría encuestar al corredor de MQTT para ese mensaje, y si existe, vuelva a corroborar la canción. Es un poco excesivo, pero es la naturaleza de tratar de ojear datos como este desde una fuente de datos analógicos.

En este momento, la mejor decisión que tengo es un cheque cada diez segundos, pero pondré poco de tiempo en pensar en mejores formas de hacerlo. Por ahora, funciona, así que pasemos a nuestro ESP32.

Configuración de nuestro ESP32 y terminando el esquema

Tirar de MQTT es factible

Flotar en un ratón modesto que se muestra en una matriz LED RGB 64x32 RGB, conectada a un ESP32

Hemos hablado extensamente sobre el ESP32 y la pantalla Waveshare ya, pero la interpretación corta de la historia es que las capacidades de entrada de memoria directa (DMA) del ESP32 le permiten funcionar perfectamente con nuestra pantalla. No encadenará muchos de ellos, pero para uno solo, es consumado. Elegí desarrollar esto en escoma, usando el Superficie de componentes externos para la biblioteca DMA HUB75.

A partir de aquí, funciona tal como es de esperar cuando se proxenetismo de Esfomo. Fallar una conexión MQTT en Espírituextrae del tema esperado y guárdelo en un sensor de texto para un uso posterior. Comenzamos esto usando lo venidero:

mqtt:
broker: 192.168.1.x
on_json_message:
- topic: media/now_playing

Gracias a la función MQTT en Esfoma, podemos desentenderse el texto en un sensor de texto cada vez que se envía un nuevo mensaje al tema que estamos monitoreando. Convertirlo de un sensor de texto en información apto no es tan sencillo, ya que necesitamos dividir o desplazar el texto en función del encantado de la pantalla y la largura del texto. He escrito el código para manejar la método de división y desplazamiento del texto. Si lo necesita, puede cambiar las variables para un panel más dilatado (o más corto) sin falta de modificar ninguna de las lógicas subyacentes. Debería ser congruo modular y puedes Compruébalo en Github.

ESP32 ahora reproduciendo pantalla de reproducción de discos con una pantalla de matriz RGB Waveshare

¡Eso es todo! Una vez que el código se compila y intervino a su ESP32, puede configurar todo, ejecutar su servidor de identificación y despachar pistas identificadas al servidor MQTT para que el ESP32 pueda mostrarlas en la pantalla Waveshare. Sus invitados ahora pueden ver una representación digital de la pista de reproducción actualmente en su reproductor de discos, a pesar de la naturaleza analógica del vinilo, y sin ninguna modificación invasiva del reproductor requerido.

Una advertencia para implementar software en el ESP32. Recomiendo insistentemente flashear el ESP32 cerca de su punto de entrada, o sin estar conectado a la pantalla Waveshare, primero. Esto se debe a que la pantalla parece causar interferencia en la conectividad inalámbrica con el ESP32. Funcionará adecuadamente para ojear un servidor MQTT, pero las actualizaciones inalámbricas con escoma son increíblemente lentas en muchas situaciones.

Related Posts

Homaio recauda 3,6 millones de euros para aguantar la inversión en derechos de carbono al comercio minorista

La startup de París abrió el mercado de comercio de emisiones de la UE a inversores privados en 2024. Ahora tiene el respaldo para expandirse a la energía, la electrificación…

La IA devuelve a Val Kilmer a la pantalla sobresaliente un año luego de su asesinato

El actor Val Kilmer murió en 2025, pero se le verá en una próxima película que no vivió para filmar. El drama histórico sobre arqueólogos As Deep As the Dificultoso…

You Missed

así inicia la incertidumbre con los primeros ganadores y sorpresas en la estera

así inicia la incertidumbre con los primeros ganadores y sorpresas en la estera

Donald Trump amenaza con destruir campo gasífero South Pars

Donald Trump amenaza con destruir campo gasífero South Pars

Venezuela vence 3-2 a Estados Unidos y conquista su primer Clásico Mundial de Béisbol

Venezuela vence 3-2 a Estados Unidos y conquista su primer Clásico Mundial de Béisbol

Club Los Mina y Caminantes triunfan en el TBS Santo Domingo 2026

Club Los Mina y Caminantes triunfan en el TBS Santo Domingo 2026

Abadina reconoce a Alberto Rodríguez en el Convivio Mini Último

Abadina reconoce a Alberto Rodríguez en el Convivio Mini Último

Homaio recauda 3,6 millones de euros para aguantar la inversión en derechos de carbono al comercio minorista

Homaio recauda 3,6 millones de euros para aguantar la inversión en derechos de carbono al comercio minorista