Decodificador infrarrojo arduino

Arduino ir recibir y enviar

En los ejemplos de código a continuación, vamos a utilizar la biblioteca IRremote Arduino . Esta biblioteca es bastante fácil de usar y soporta muchos protocolos de comunicación IR diferentes. Con los dos primeros ejemplos, podrás identificar el protocolo IR de tu mando y determinar qué código envía cuando pulsas una tecla/botón. A continuación, le mostraré cómo asignar el código recibido a los valores de las teclas y mostrarlos en el Monitor Serial o en una pantalla LCD. Por último, veremos cómo controlar las salidas del Arduino con un mando y un receptor de infrarrojos.

La radiación infrarroja (IR), o luz infrarroja, es un tipo de radiación electromagnética con longitudes de onda que van de 700 nm a 1 mm. Como los humanos sólo pueden ver la luz con longitudes de onda de aproximadamente 400 (violeta) a 700 (rojo) nanómetros, la radiación IR es invisible para el ojo humano.

Como la transmisión por infrarrojos es un protocolo inalámbrico basado en un tipo de luz, requiere una línea de visión clara entre el transmisor (el mando) y el receptor. Esto significa que no puede transmitir a través de paredes o techos, a diferencia del WiFi o el Bluetooth.

Decodificador Ir

Una forma sencilla de transmitir datos mediante la luz es utilizar el código Morse. Quizá lo hayas intentado utilizando una linterna, cuando eras niño. Los mandos a distancia por infrarrojos funcionan de forma bastante similar. Sin embargo, hay un problema. La luz del sol también contiene luz infrarroja, y no quieres que tu televisor se encienda por la luz del sol. Para solucionarlo se utiliza la llamada frecuencia portadora. Normalmente, los pulsos se transmiten como una señal de 38 kHz. El receptor de infrarrojos sólo reacciona a las señales de infrarrojos en esta frecuencia. Para transmitir datos, la señal de 38 kHz se enciende y se apaga.

El inicio de la transmisión se indica con un pulso largo. A este pulso de inicio le siguen 32 bits de datos y un pulso final de parada. Para un bit cero sólo hay un corto espacio en la señal infrarroja y para un uno hay un espacio más largo. Estos bits de datos varían para cada tecla del mando y también para los mandos de diferentes dispositivos. El protocolo utilizado por la mayoría de los mandos IR de Arduino es el protocolo NEC. Hay otros protocolos e incluso otras frecuencias portadoras también, pero el protocolo NEC es bastante común y lo usan todos mis mandos de TV.

Biblioteca remota Arduino ir

La comunicación IR (infrarroja) es una tecnología de comunicación inalámbrica sencilla, de bajo coste y muy utilizada. La luz IR es algo similar a la luz visible, excepto que la longitud de onda es ligeramente mayor. Esta propiedad del IR lo hace indetectable al ojo humano y perfecto para la comunicación inalámbrica.

Hay muchas aplicaciones en las que se necesita decodificar las señales IR para operar algunos dispositivos con el control remoto IR. Así que en este tutorial, vamos a utilizar el receptor IR TSOP1838 para construir un decodificador remoto IR usando Arduino. El código hexadecimal de cada botón se registrará en la hoja de Microsoft Excel. Este simple decodificador de control remoto IR puede ser utilizado en proyectos como el control remoto IR de robots, automatización del hogar, y otros proyectos controlados por IR.

Al igual que otros sistemas de comunicación, la comunicación por infrarrojos también tiene un transmisor y un receptor. El transmisor se parece a un LED, pero produce luz en el espectro IR en lugar del espectro visible. Mientras que el receptor IR es un fotodiodo integrado con un preamplificador que cambia la luz IR en una señal eléctrica. Para la comunicación por infrarrojos, tanto el transmisor como el receptor deben estar orientados el uno hacia el otro. Para saber más sobre el circuito del transmisor y el receptor de IR, sigue el enlace.

Código del receptor ir de Arduino

Si utilizas un núcleo Arduino (antiguo) que no utiliza la bandera -flto para la compilación, puedes activar la línea #define SUPPRESS_ERROR_MESSAGE_FOR_BEGIN en IRRemote.h, si obtienes falsos mensajes de error respecto a begin() durante la compilación.

Si sufres errores con el código antiguo del tutorial incluyendo IRremote.h en lugar de IRremote.hpp, simplemente intenta retroceder a la versión 2.4.0. Lo más probable es que tu código funcione y no eches de menos las nuevas características…

Para las aplicaciones que sólo requieren el protocolo NEC, hay un receptor que tiene un tamaño de código muy pequeño de 500 bytes y NO requiere ningún temporizador. Mira el ejemplo de MinimalReceiver e IRDispatcherDemo para saber como usarlo.

Puedes intentar esperar a que el receptor IR esté inactivo antes de enviar los datos del Neopixel con if (IrReceiver.isIdle()) { strip.show();}. Esto evita al menos romper una transmisión IR en curso y -dependiendo de la velocidad de actualización del Neopixel- puede funcionar bastante bien.

Para el envío, el PWM generado por software por defecto tiene problemas en el AVR corriendo con 8 MHz. La frecuencia del PWM es de unos 30 en lugar de 38 kHz y el RC6 no es fiable. Puedes cambiar a la generación de PWM por temporizador mediante #define SEND_PWM_BY_TIMER.

Acerca del autor

admin

Ver todos los artículos