Introducción: SonosIR

Acerca de: Me gusta trabajar con madera, electrónica y mecánica.

Más acerca de buestad »

Tengo un sistema Sonos en casa y me encanta la simplicidad. En la cocina tengo un Sonos Play: 3 y para tocar algo solo tengo que levantar el teléfono y elegir una canción y suena.

En la sala de estar, sin embargo, tengo un Sonos Connect conectado a mi amplificador. Para reproducir una canción aquí, primero tengo que encender el amplificador, elegir la entrada correcta y luego elegir la canción en mi teléfono. Esto lo quiero simplificar.

La idea es tener un dispositivo conectado al sistema Sonos que pueda controlar el amplificador mediante comandos de infrarrojos. Como característica adicional, me gustaría controlar algunas funciones del dispositivo Sonos con el control remoto, porque eso es más fácil para los niños.

Paso 1: Paso 1: Hardware

Para poder lograr el objetivo, necesita un montón de hardware. Un Arduino Uno suele ser un buen punto de partida. Si no sabes qué es un Arduino, búscalo en Google. No gastaré espacio y tiempo para explicar eso aquí …

Dado que el dispositivo Sonos tiene un conmutador ethernet de 2 puertos en la parte posterior, un simple escudo ethernet para Arduino debería hacer el trabajo. La interfaz de infrarrojos se realiza con un emisor de infrarrojos para enviar señales al amplificador y al receptor de infrarrojos para recibir la entrada de control remoto

Compré todo mi hardware en eBay:

Clon de Arduino UNO R3

Escudo Ethernet W5100

Blaster de infrarrojos con cable y conector jack de 3,5 mm

Receptor de infrarrojos con cable y conector jack de 3,5 mm

2 conectores jack hembra de 3,5 mm para montaje en panel

Caja de aluminio 100 x 66 x 43 mm

Pequeña resistencia alrededor de 100-200ohm

Algo de cable

El costo total es de alrededor de $ 30.

Paso 2: Paso 2: Protocolos y bibliotecas

Este paso es solo teoría. Puede omitir este paso, pero puede ser útil para comprender el proyecto.

Los dispositivos Sonos utilizan UPnP para comunicarse. Los mensajes se envían de un lado a otro como archivos xml. Estos archivos o paquetes de datos se pueden leer con una herramienta de rastreo de red como Wireshark. Afortunadamente para mí, la gente ya ha hecho este trabajo con muchos comandos. Y aún mejor, alguien ha creado una biblioteca Arduino manejando esto. Google “arduino sonos upnp” y lo encontrará en github.com

Una biblioteca arduino es básicamente un grupo de archivos de código fuente c ++ que se almacenan en la carpeta del programa Arduino o en la carpeta arduino de los usuarios locales a menudo dentro de la carpeta de documentos. Este código C ++ se puede incluir y acceder desde los archivos del proyecto Arduino.

IR es una tecnología bien conocida. Lo encontrará en casi todos los dispositivos de audio / video. El hardware principal consiste en un diodo IR en el control remoto y un receptor IR en el dispositivo A / V. El diodo emite luz infrarroja en un patrón dado que el receptor de infrarrojos “ve” y traduce en pulsos eléctricos que se decodifican en un valor numérico. Cada botón del control remoto tiene su propio patrón de luz y su valor correspondiente. Hay muchos protocolos o formas en que el valor numérico se codifica en pulsos eléctricos y patrones de luz. Por supuesto, también hay bibliotecas Arduino para esto. ¡Hay muchos! Elija uno que admita su protocolo. Terminé usando uno llamado Arduino-IRremote en github.com.

Paso 3: software

La parte difícil del software está en las bibliotecas. Solo tenemos que unir las cosas.

La idea es sondear el dispositivo sonos cada segundo y si el estado cambia de detener o pausar a reproducir, quiero enviar una señal de encendido por infrarrojos al amplificador.

También quiero recibir señales de infrarrojos desde el mando a distancia y, si se pulsan los botones de reproducción, parada o salto, quiero enviar un comando correspondiente al dispositivo Sonos.

Mi amplificador usa el protocolo Sharp, por lo que todo el código está de acuerdo con esto. A la biblioteca de infrarrojos que terminé usando le faltaba el protocolo Sharp, así que tuve que modificarlo un poco.

(Para averiguar qué protocolo usa su amplificador, puede descargar uno de los ejemplos en la biblioteca Arduino-IRremote a su arduino y conectar el receptor de infrarrojos a la entrada correcta)

Vea el archivo de código de Arduino adjunto.

El código se descarga en la placa Arduino Uno usando el IDE de Arduino y un cable USB.

Archivos adjuntos

Paso 4: Conectar todo y probar

El receptor de infrarrojos y el Blaster tienen conectores de 3,5 mm. Entonces, solo tiene que averiguar qué pin es qué y conectar los enchufes hembra de 3.5 mm montados en rack al Arduino usando un cable delgado. Usé un viejo cable de disco duro ATA / 33. El clon de Arduino Uno que compré en eBay tiene puntos de soldadura de orificio pasante para todas las E / S más GND y 5V, por lo que soldar el cable a la placa es fácil.

El emisor de infrarrojos necesita una resistencia en serie para obtener los miliamperios correctos de acuerdo con las especificaciones. El Arduino Uno usa 5v para los pines de E / S, así que elija una resistencia en consecuencia (ley de ohmios …)

Luego hice agujeros en la caja de aluminio y monté el Arduino en una placa prototipo de repuesto sin cobre. Probablemente podría usar cualquier tipo de tabla siempre que se ajuste a la caja. El puerto Ethernet hice un agujero para usar varios agujeros y archivarlo sin problemas.

El receptor de infrarrojos se coloca debajo y el emisor de infrarrojos se coloca encima del amplificador. Quería que estos fueran lo más invisibles posible pero que aún así tuvieran una buena señal. ¡Salió bastante bien!

Y funciona? ¡Mira el video! 🙂

¡Buena suerte haciendo tu propia versión!

Concurso de audio 2017

Participo en el
Concurso de audio 2017

Concurso de autores por primera vez

Participo en el
Concurso de autores por primera vez

Sé el primero en compartir

    2 comentarios

    0
    EdwardF2005
    EdwardF2005

    hace 3 años

    Ojalá tuviera esto con mis altavoces Sonos

    0
    Canción del cisne
    Canción del cisne

    hace 3 años

    Esa es una configuración ordenada 🙂