Uso del sensor infrarrojo con Arduino

¿Qué es un sensor infrarrojo (también conocido como IR)?

Un sensor IR es un instrumento electrónico que escanea señales IR en rangos de frecuencia específicos definidos por estándares y los convierte en señales eléctricas en su pin de salida (típicamente llamado pin de señal). Las señales IR se utilizan principalmente para transmitir comandos por el aire en distancias cortas (generalmente, pocos metros) como lo que ya ha trabajado en los controles remotos de TV u otros dispositivos electrónicos similares.

Protocolo de comunicación IR

Cada señal representa un código específico. Las señales eléctricas se pueden convertir nuevamente a los datos / códigos reales que el remitente ha enviado. Cuando presiona un botón en el control remoto de su televisor, genera una señal correspondiente al código del botón (por ejemplo, Encendido / Apagado, Subir volumen, etc.) y lo envía a un receptor (en este caso, su televisor). Tanto el remitente como el receptor acordaron un conjunto de códigos para que el receptor sepa qué hacer en función de cada código. La forma en que un código debe ser modulado (modelado) como una señal se define en diferentes estándares y cada fabricante de sensores normalmente intenta producir un producto compatible con ellos para que pueda usarse en diferentes dispositivos. Uno de los protocolos estándar más conocidos es de NEC. Puede encontrar una breve historia de los protocolos IR en Wikipedia bajo el título Consumer IR.

Paso 1: ¿Cómo se ve un sensor IR?

Los sensores IR están disponibles en diferentes paquetes. Aquí puede ver algunos empaques típicos para un receptor IR.

Paso 2: placa / módulo de ruptura del sensor IR

También puede comprarlos como un módulo IR / placa de conexión en eBay, Aliexpress o Amazon. Tales módulos normalmente incorporan uno de los sensores mencionados anteriormente con un paquete amigable para la placa de pruebas junto con un LED que parpadeará cuando el sensor detecte una señal. Al hacerlo, notará si se están transfiriendo datos. Recomiendo comenzar con uno de estos módulos.

Nota: si tiene un sensor IR sin procesar, nada cambiará, excepto que debe verificar la hoja de datos del sensor para asegurarse de que está conectando correctamente, ya que de lo contrario podría tener un hermoso humo azul con un olor que duraría por un tiempo hora. Sabes a lo que me refiero ;)

Paso 3: piezas y componentes necesarios

Aquí puede encontrar la lista de componentes que necesitaría para completar este tutorial:

Enlaces de eBay:

  • 1 x Arduino Uno: //rover.ebay.com/rover/1/711-53200-19255-0/1 ...
  • 1 x módulo sensor IR con control remoto: //rover.ebay.com/rover/1/711 ....
  • 4 resistencias de 220 ohmios: //rover.ebay.com/rover/1/711-53200-19255-0 / ...
  • 4 x LED: //rover.ebay.com/rover/1/711-53200-19255-0 / ...
  • 8 x cable Dupont: //rover.ebay.com/rover/1/711-53200-3=4&too ...
  • 1 x placa de soldadura sin soldadura: //rover.ebay.com/rover/1/711-53200 -...
  • 1 x Mini placa de pruebas (opcional): //rover.ebay.com/rover/1/711-532 ...

Enlaces de Amazon.com:

  • 1 x Arduino Uno: //amzn.to/2uJfKy1
  • 1 x módulo sensor IR con control remoto: //amzn.to/2uMS1eT
  • 1 x placa sin soldadura: //amzn.to/2uMC6gl
  • 4 resistencias de 220 ohmios: //amzn.to/2hbGiDs
  • 4 x LED: //amzn.to/2uMEtjy
  • 8 x cable Dupont: //amzn.to/2eXCvbT
  • 1 x Mini placa de pruebas (opcional): //amzn.to/2vUelmC

Enlaces de Amazon.co.uk:

  • 1 x Arduino Uno: //amzn.to/2u8DXKD
  • 1 x módulo sensor IR con control remoto: //amzn.to/2wagB8Y
  • 4 resistencias de 220 ohmios: //amzn.to/2uJCsGs
  • 4 x LED: //amzn.to/2u8nNRo
  • 8 x cable Dupont: //amzn.to/2vaLDQN
  • 1 x placa sin soldadura: //amzn.to/2u8nkP2
  • 1 x Mini placa de pruebas (opcional): //amzn.to/2vaKtoc

Paso 4: Conexión del sensor IR a Arduino

Configurar la conexión del sensor IR a Arduino es muy simple. Además del pin VCC y GND, el sensor tiene solo un pin de salida que debe conectarse a uno de los pines digitales del Arduino. En este caso está conectado al pin 13.

Traté de demostrar tanto el módulo del sensor IR como la configuración del sensor IR sin procesar. Como se puede ver en las imágenes, la posición de los pines VCC y GND en el módulo del sensor es lo opuesto al sensor sin procesar. Sin embargo, puede que no sea el caso de su sensor, por lo que, como se mencionó en el paso anterior, en caso de usar el sensor sin procesar, consulte primero la hoja de datos.

Paso 5: busque el código correspondiente a cada tecla en el control remoto

Para programar que Arduino haga algo cuando presiona una tecla en el control remoto, primero debe tener el código correspondiente a esa tecla. El código clave es un número que normalmente se presenta como hexadecimal. Cada controlador remoto tiene su propio conjunto de códigos clave, mientras que es posible que dos controladores compartan el mismo código para diferentes propósitos. Tener diferentes códigos clave junto con el uso de diferentes rangos de frecuencia, asegura que dos controladores remotos de diferentes dispositivos no tengan interferencia. Es por eso que cuando cambias tu canal de TV, tu reproductor de DVD no reacciona en absoluto.

Para detectar los códigos de su control remoto IR, primero debe ejecutar un boceto simple que intente leer el código del sensor cuando presiona una tecla y lo envía a través del puerto serie a su computadora, donde puede acceder a él utilizando las herramientas de Monitor Serial de Arduino IDE. Esto es lo que hace el boceto adjunto a esta sección. Sería mejor presionar cada botón para ver el código y escribir la lista de códigos en algún lugar para que no necesite ejecutar este código nuevamente en el futuro. La lista de códigos clave que ve como una tabla en la imagen son en realidad códigos que recibí al presionar botones en mi control remoto IR barato.

También puede acceder al código fuente real compartido en mi editor web Arduino en ir-key-code-logger.

Nota : No se asuste si ve un código como FFFFFF en algún punto intermedio. Significa que ha presionado y mantenido presionado un botón por un tiempo. Volveremos a eso más adelante. Por ahora solo ignórelos y concéntrese en otros códigos.

Archivos adjuntos

  • ir-code-logger.ino Descargar

Paso 6: Controle un conjunto de LED usando el control remoto IR

Ahora que tenemos un código para cada botón, es hora de centrarse en la forma en que podemos usarlos. Normalmente usa el control remoto IR para enviar comandos a Arduino para hacer algo como encender o apagar una lámpara, mover un robot en una dirección específica, mostrar algo en una pantalla LCD / OLED, etc. Aquí intentamos demostrar el proceso usando un simple circuito compuesto por 4 LEDs en diferentes colores. Queremos activar o desactivar cada uno de ellos mediante un botón dedicado del control remoto IR. Como puede ver en el esquema, debe conectar el Arduino de la siguiente manera a los LED y al sensor:

Arduino GND -> Sensor IR GND.

Arduino VCC -> Sensor IR VCC.

Arduino 13 -> Salida de señal del sensor IR.

Arduino 2 -> Ánodo del LED azul (pin más corto del LED azul)

Arduino 3 -> Ánodo del LED verde (pin más corto del LED verde)

Arduino 4 -> Ánodo del LED amarillo (pin más corto del LED amarillo)

Arduino 5 -> Ánodo del LED rojo (pin más corto del LED rojo)

Arduino GND -> Cátodo de todos los LED a través de una resistencia de 220 ohmios (pin más largo de los LED)

Puede encontrar el código correspondiente a este circuito en el archivo adjunto o en mi editor web Arduino en ir-led-control.

Archivos adjuntos

  • ir-led-control.ino Descargar

Paso 7: solución de problemas

Al configurar su proyecto y seguir los pasos, puede encontrar muchas situaciones extrañas. Aquí está la lista de algunos errores comunes que puede obtener al trabajar con un sensor IR.


Obtener FFFFFF al presionar una tecla

Al presionar un botón, puede notar que la mayoría de las veces informa un código como FFFFFF. Esto sucede cuando presiona un botón y lo mantiene presionado durante un tiempo, incluso durante un corto período de tiempo. El escenario es que cuando presiona el botón inicialmente, el control remoto IR envía el código del botón y siempre que mantenga presionado el botón, repite el envío de FFFFFF, lo que significa que el usuario sigue presionando el botón informado recientemente. Eso estaría bien. Puedes omitirlos. El código real es el que obtuvo justo antes de FFFFFF en el Monitor de serie.


¡El sensor IR no reacciona en absoluto y parece que se está calentando!

Cortar el poder !!! Si está seguro de que el boceto del registrador de código de clave es correcto, entonces el problema puede deberse a la configuración incorrecta de sus cables. El escenario que me sucedió fue que para mi módulo IR (el que está conectado a la placa) había conectado el VCC y GND de la manera opuesta (debido a que no usé los colores adecuados para mis cables de conexión). Al hacerlo, el componente del sensor se quemó y se elevó un agradable humo azul. Compré un paquete de sensores IR sin procesar e intenté reemplazarlo y ahora funciona de maravilla :). Desafortunadamente cometí el mismo error cuando estaba probando con el sensor IR sin procesar y esta vez no sucedió nada excepto que el sensor se calentó. ¡Así que siempre verifique el circuito antes de encenderlo!


A veces el sensor detecta un código que nunca antes había visto.

Este es uno de los problemas más comunes. Lo más probable es que se deba a uno de los siguientes motivos:

  • No estás apuntando tu control remoto IR directamente hacia el sensor

Esto conducirá a tener algunos códigos nuevos (en su mayoría códigos más largos) que nunca ha recibido antes y que normalmente no coinciden con la longitud de los códigos que ya tiene. Así que recuerde apuntar siempre el control remoto hacia su sensor.

  • Estás usando un control remoto IR barato (como el que usé en este tutorial)

En lugar de usar controles remotos impredecibles baratos, puede probar el mismo escenario usando el control remoto de su TV o reproductor de DVD o un control remoto IR de cualquier dispositivo que tenga. Normalmente tienen una buena calidad de señal / hardware (y, por supuesto, son más caras) y, según mi experiencia, normalmente funcionan bien incluso si no apunta su control remoto directamente hacia el sensor.


¿Cómo sé si un código registrado no es basura?

Los códigos se presentan normalmente en formato hexadecimal. Si los convierte al valor binario correspondiente, notará que la representación binaria del último byte es la negación del byte anterior. Si sabe esto, puede hacer esta verificación en su código para asegurarse de que el código que recibió sea realmente válido o no. Como ejemplo, si obtuvo FF7A85, su representación binaria sería la siguiente:

 1111 1111 0111 1010 1000 0101 

De izquierda a derecha, cada lote de 4 dígitos es la representación de un carácter en el número hexadecimal original. Como puede ver, el lote correspondiente a 7 es 0111 y el lote correspondiente a 8 es 1000, que es la negación exacta del mismo. Por negación quiero decir que todos los 0 serían 1s y todos los 1 serían reemplazados por 0s. Lo mismo es cierto para el siguiente que es A (1010) y 5 (0101).

Paso 8: ¿Qué hacer a continuación?

Ahora es tu turno. Todo depende de tu imaginación para ver qué puedes hacer con este pequeño sensor simple en tu mano. Aquí hay algunas ideas para comenzar:

  • Use el control remoto IR de uno de los dispositivos que tiene en casa (TV, estéreo, etc.) e intente usarlo en su proyecto Arduino
  • Intente encender todos los LED a la vez presionando una tecla y luego apáguelos usando otra tecla
  • Use el botón Arriba / Abajo del control remoto para encender / apagar los LED uno por uno hasta que todos se enciendan / apaguen
  • Cree un semáforo con LED y contrólelo con su control remoto
  • Si tiene a mano un pequeño motor de CC, intente arrancar / parar o cambiar su dirección de rotación con el control remoto IR
  • Puede usar el control remoto de su televisor para controlar su robot o habilitar / deshabilitar algunos sensores / actuadores en él

Déjame saber en los comentarios, qué harías (o ya lo has hecho) usando el control remoto IR.

Artículos Relacionados