Replicador de infrarrojos conectado a Internet
Componentes y suministros
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Aplicaciones y servicios en línea
|
Acerca de este proyecto
Hace algún tiempo comencé a decodificar un control remoto de CA por infrarrojos con el propósito de controlar un aire acondicionado a través de WIFI.
Aprendí un montón de cosas en el camino y quería compartir ese conocimiento con todos ustedes en caso de que pueda ayudarlos en proyectos futuros (futuro-yo:yo también los estoy mirando). Usé un fotón de partículas, pero puede optar por usar un MCU diferente ya que la biblioteca IRremote Arduino (de Ken Shirriff) utilizada en este proyecto es compatible con muchos otros. Aquí también está su página oficial.
Hay mucho de información en esa página, asegúrese de leer parte de ella para comprender en profundidad cómo funcionan las señales de infrarrojos, pero reproduciré algunos puntos importantes en la siguiente sección.
Algunos antecedentes sobre códigos IR
La siguiente es una transcripción de la publicación original del autor:
Un control remoto por infrarrojos funciona encendiendo y apagando el LED en un patrón particular. Sin embargo, para evitar la interferencia de fuentes de infrarrojos como la luz solar o las luces, el LED no se enciende de manera constante, sino que se enciende y apaga a una frecuencia de modulación (típicamente 36, 38 o 40 KHz). El momento en que se envía una señal modulada se llamará marca y cuando el LED esté apagado se llamará espacio.
Cada tecla del control remoto tiene un código particular (normalmente de 12 a 32 bits) asociado y transmite este código cuando se presiona la tecla. Si se mantiene presionada la tecla, el control remoto generalmente transmite repetidamente el código de la tecla. Para un control remoto NEC, se envía un código de repetición especial mientras se mantiene presionada la tecla, en lugar de enviar el código repetidamente. En el caso de los controles remotos Philips RC5 o RC6, se cambia un poco del código cada vez que se presiona una tecla; el receptor usa este bit de alternancia para determinar cuándo se presiona una tecla por segunda vez.
En el extremo receptor, el detector de infrarrojos demodula esta señal y emite una señal de nivel lógico que indica si está recibiendo una señal o no. El detector de infrarrojos funcionará mejor cuando su frecuencia coincida con la frecuencia del remitente, pero en la práctica no importa mucho.
Ahora está listo para el siguiente paso ...
Construya el circuito del receptor de infrarrojos
Para decodificar señales infrarrojas, necesita un diodo receptor de infrarrojos:
Y construye el circuito del receptor como se indica en la biblioteca:
Aquí está el pinout:
Mi tablero terminó luciendo así:
Por ahora, concéntrate en conectar el diodo receptor (el negro) y olvídate del transmisor (el transparente); nos ocuparemos de ello más adelante.
Decodifica algunas señales de infrarrojos
Dado que el proyecto descargará los códigos recibidos a través de la línea serial, necesitamos conectarlo a una computadora. Encienda el Photon con un cable USB y conéctelo a un puerto USB de su computadora. Ahora será un buen momento para actualizar el firmware adjunto.
Abra una consola o terminal y use la CLI de Particle para monitorear el puerto USB.
NOTA: Si no tiene la CLI de Particle instalada, hágalo siguiendo los documentos aquí.
En Ubuntu Linux, esto es lo que tuve que escribir para monitorear el puerto serial del Photon:
$ sudo chmod 666 / dev / ttyACM0 $ monitor de serie de partículas
Dependiendo de su computadora y sistema operativo, es posible que el puerto tenga un nombre diferente y / o que no sea necesario ejecutar chmod.
NOTA: puede utilizar cualquier otro software para recibir datos en el puerto serie USB de su computadora.
Una vez hecho esto, puede apuntar el control remoto que desea decodificar al diodo del receptor de infrarrojos (el componente similar a un LED negro). Empiece a presionar los botones y verifique lo que está impreso en la consola.
Si todo va bien, obtendrá algo como esto:
1FEA05F29168950,8500,4050,500,1500,550,500,550,450,550,500,500,1550,500,500,550,500,500,500,550,500,500,500,550,450,550,500,550,1500,500,500,550,500,500,500,550,500,550,500,1500,550,1500,550,450,550,550,500,500,450,550,550,550,450,550,550,500,500,450,550,550,550,550,550,500,500,450,550,550,550,550,550,500,500,1500,550,550,550,550,550,500,500,1500,550,550,550,550,550,500 , 1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 , 0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,0 , 0,0,0,0,0,0, END
- Primera línea (1FEA05F) y tercera línea:olvídese de ellas por ahora
- Segunda línea:esta línea imprime el comando IR enviado por el control remoto
Nuestro primer comando de infrarrojos decodificado
Hablemos del comando IR recibido:
29168950,8500,4050,500,1500,550,500,550,450,550,500,500,1550,500,500,550,500,500,500,550,500,500,500,550,450,550,500,550,1500,500,500,550,500,500,500,550,500,500,550,500,1500,550,1500,550,450,550,550,550,500,500,1500,550,500,550,500, END
Podemos descartar el primer valor, 29168950 en este caso, ya que la biblioteca de IR establece lo siguiente:" el búfer de recepción comienza con la duración del espacio vacío antes de la primera marca ". No nos importa esa duración, ya que es el tiempo que pasó entre nuestras pruebas, o el tiempo que te llevó presionar un botón en el control remoto.
Por lo tanto, de la salida recibida, esto es lo realmente interesante y lo que da forma al comando IR:
8500,4050,500,1500,550,500,550,450,550,500,500,1550,500,500,550,500,500,500,550,500,500,500,550,450,550,500,550,1500,500,500,550,500,500,500,550,500,500,550,500,1500,550,1500,550,450,550,1500,550,500,500,1500,550,500,550,450,550,500, END,500.
Esos números representan la duración de los pulsos infrarrojos en microsegundos. Si quisiéramos, podríamos enviar este comando con el siguiente código:
función sendIt () {unsigned int ircommand [59] ={8550,4000,550,1500,550,450,550,500,500,550,500,1550,500,500,500,500,500,550,500,500,500,550,500,500,500,550,500,500,1500,550,500,500,500,550,500,500,500,550,450,550,550,550,1500,550,500,500,1500,550 , 500,500,550,500,500,500,550,450,550}; irsend.sendRaw (ircommand, 59,38); }
Pero para eso, necesitaremos construir el circuito del transmisor. Hagámoslo a continuación.
Construya el circuito del transmisor de infrarrojos
El circuito más simple se ve así:
Sin embargo, este circuito solo le dará menos de un metro de alcance.
Si puede, conecte un circuito como este a continuación para mejorar el alcance (alrededor de 10 metros):
Este es el lado del transmisor de mi circuito:
Prueba del circuito del transmisor de infrarrojos
Agregué un par de funciones en el firmware para controlar el volumen en un televisor Samsung. Esto es para que pueda probar si su circuito transmisor está funcionando en el caso de que tenga un televisor Samsung cerca.
Simplemente apunte el LED de su transmisor a su televisor y presione las funciones sendSamsungVolumeUp () y sendSamsungVolumeDown ().
NOTA: Recuerde que puede usar la cámara de su teléfono celular para verificar si el LED IR está transmitiendo, ya que IR aparece allí:
Hacer que los comandos de infrarrojos sean más legibles
Si identificamos valores alrededor de 500 con un 0 y 1500 con un 1, siendo esta selección arbitraria, también asignando 3 a valores superiores a 5000 y 2 a valores alrededor de 4000, obtenemos la siguiente representación:
3,3,2,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1, 0,0,0,1,0,0,0,0,0,0,0,0,0, END
Ahora recuerde que en esta codificación totalmente arbitraria:
- 3 significa un pulso de 8500 microsegundos
- 2 significa un pulso de 4000 microsegundos
- 1 significa un pulso de 1500 microsegundos
- 0 significa un pulso de 500 microsegundos
¿Por qué codificar en números, puede preguntar?
Ayuda a visualizar y comparar comandos, espero. De esta manera, es más fácil comparar pulsos que cambian o permanecen iguales entre diferentes comandos.
Ejemplo:¿quiere comparar qué cambios entre un comando para configurar la temperatura a 18 y 19 grados en el caso de un control remoto de CA? Más fácil cuando tienes unos y ceros.
También me gusta este formato para almacenar los comandos IR en el código de firmware. Solo recuerde convertirlos en pulsos justo antes de transmitir (llamando a la función convertToPulseDuration () en el firmware).
Recursos de lectura
Leí un montón de sitios para poder entender el tema. Aquí hay una lista de algunos de ellos:
- Ingeniería inversa de un protocolo de control remoto por infrarrojos de acondicionador de aire
- Uso de controles remotos arbitrarios con la biblioteca arduino IRremote
- este hilo en la comunidad de partículas
- Comprensión del protocolo de infrarrojos de los controles remotos del aire acondicionado
- este blog sobre adafruit
Conclusión
Con algo de trabajo, un MCU y un par de componentes, podrá decodificar y replicar muchos de los controles remotos que tiene en su casa. Con algunas limitaciones, esto puede permitirle controlar todos esos dispositivos desde su teléfono, tableta, computadora portátil, computadora e incluso crear algunas automatizaciones simples para ellos. Genial, ¿eh?
Ahora puede pensar en agregar Blynk, crear una aplicación en Ionic Framework, hablar con Google Now o Alexa, o controlarla con Porter.
Estoy pensando en aplicar este conocimiento para controlar algunos dispositivos en la casa y espero crear más artículos en el futuro. ¡Estén atentos!
Actualización del 5 de febrero de 2018:
Aquí hay una implementación de este proyecto:una chimenea de infrarrojos controlada desde Internet.
¿Necesitas ayuda?
Si necesita ayuda profesional con sus proyectos, no dude en escribirme una línea sobre sus necesidades a [email protected]. ¡Gracias!
Código
replicador de infrarrojos
el código fuentehttps://github.com/gusgonnet/infraredReplicatorEsquemas
Proceso de manufactura
- Cómo se conectan los vagones de mercancías a Internet
- Internet de las cosas y el papel de 5G en los vehículos conectados
- Ciberseguridad e Internet de las cosas:¿es hora de la biometría?
- Internet de las cosas:una red de mundo conectado
- ¿Cómo podemos facilitar la educación con Internet de las cosas?
- ¡Tanques láser Leap Motion!
- UnifiedWater v1
- Radio por Internet Pi-Arduino
- Cuadro de votación móvil
- Compresores de aire conectados, Industria 4.0 e Internet de las cosas
- Vlog de la A a la Z sobre aire comprimido y gas:IoT, Internet 4.0 y compresores conectados