Skip to main content

Actividad-11. Emisor y receptor de infrarrojos

Página extraída de Federico Coca Notas sobre ESP32 STEAMakers CC-BY-SA

Enunciado

Enviaremos códigos desde el control remoto por infrarrojos que serán recibidos por el LED de infrarrojos para actuar según el código recibido.

Teoría

¿Qué son los infrarrojos?

Son una clase de radiación electromagnética con una longitud de onda que resulta superior a la longitud de onda de la luz visible, siendo su frecuencia superior a las microondas. Dentro del espectro electromagnético, la radiación infrarroja se encuentra comprendida entre el espectro de luz visible y las microondas. Tiene longitudes de onda mayores o más largas que el rojo. En la imagen siguiente, obtenida del blog de Mercedes González Mas vemos caracterizados los infrarrojos dentro del espectro.

IR-blog.png

Espectro electromagnético Imagen Federico Coca Notas sobre ESP32 STEAMakers CC-BY-SA

Como podemos observar en la imagen, los rayos infrarrojos son clasificados, de acuerdo a su longitud de onda, del siguiente modo:

  • infrarrojo cercano, con longitud de onda entre 0.7 µm y 1.1 µm, es la parte del espectro infrarrojo que ese encuentra más próximo a la luz visible.
  • infrarrojo medio, con longitud de onda entre 1,1 µm y 15 µm.
  • infrarrojo lejano o región más cercana a las microondas, con longitud de onda entre 15 µm y 100 µm

En la imagen siguiente, obtenida de Wikipedia, sobre espectro electromagnético podemos ver más información del tema.

Espectro.png

Espectro electromagnetico Crates. Original version in English by Inductiveload, Public domain, via Wikimedia Commons

Todos los cuerpos emiten una cierta cantidad de radiación, y aunque esta resulta invisible para el ojo humano, existen dispositivos electrónicos capaces de "verla" por estar diseñados para ello.

Receptor de infrarrojos

Uno de los receptores más universal utilizado en placas tipo Arduino es el receptor de infrarrojos universal TL1838, VS1838B o simplemente 1835 de 38KHz, que es el que lleva montado la placa TdR STEAM y cuyo aspecto podemos ver en la imagen siguiente:

1838.png
 Imagen Federico Coca Notas sobre ESP32 STEAMakers CC-BY-SA

En el datasheet TL1838 del dispositivo tenemos toda la información sobre el mismo destacando las siguientes características:

  • Voltaje de funcionamiento: 2.7V a 5.5V
  • Frecuencia: 37.9KHz
  • Ángulo de recepción: 90°
  • Rango de recepción: 18m

El dispositivo genera una señal de salida que sirve para controles remotos universales y utiliza la codificación NEC. El receptor de infrarrojos permite codificar los protocolos de señales de pulsos infrarrojos utilizados por los mandos a distancia. Los protocolos detectados son los siguientes: RC5, RC6, NEC, SONY, PANASONIC, JVC, SAMSUNG, WHYNTER, AIWA, LG, SANYO, MITSUBISHI y DENON. Es decir, detectaría cualquier señal emitida por cualquiera de esos mandos.

Emisor de infrarrojos

En nuestro caso como emisor de infrarrojos vamos a utilizar el control remoto de Keyestudio que vemos en la imagen siguiente:

remote.png

El mini control remoto tiene 17 teclas de función y tiene las siguientes especificaciones:

  • Batería: pilas de botón CR2025
  • Distancia de transmisión: hasta 8 m
  • Ángulo efectivo: 60°

El control remoto, o mando a distancia, por IR funciona emitiendo trenes de pulsos de luz infrarroja. Diferentes señales corresponden a botones diferentes La señal infrarroja transmite el código correspondiente al botón del mando a distancia pulsado al dispositivo en forma de una serie de impulsos de luz infrarroja. El receptor recibe la serie de impulsos de infrarrojos y los pasa a un procesador que decodifica y activarán una determinada función del dispositivo. En el reto y las actividades del mismo obtendremos estos códigos. En ArduinoBlocks se han asignado los siguientes nombres a las teclas:

teclas.png
Nombre teclas control remoto en ArduinoBlocks  Imagen Federico Coca Notas sobre ESP32 STEAMakers CC-BY-SA

TRUCO En las prácticas con Infrarrojos, cuando las cosas no van, es muy útil saber si el problema es que el emisor de infrarrojos funciona o no funciona para descartar otros problemas.
El truco es simple, y sirve para cualquier mando: Como las cámaras de los móviles si detectan el Infrarrojo no visible, utiliza la cámara de tu móvil hacia el led del emisor del infrarrojos y aprieta cualquier botón, si se enciende el led (visto desde la cámara de tu móvil) el emisor funciona.

Bloques en ArduinoBlocks

El sensor receptor de infrarrojos permite obtener la cadena de texto con el código en formato hexadecimal correspondiente al tren de pulsos de IR generado al pulsar una determinada tecla. El bloque es el que vemos en la imagen siguiente:

2023-01-10 09_44_22-Window.jpg Imagen Federico Coca Notas sobre ESP32 STEAMakers CC-BY-SA

El valor devuelto por el bloque de recepción será una cadena de texto con valor vacío en caso de no detectar ningún código. Al devolver el bloque una cadena de texto debemos recordar que lo tenemos que almacenar en una variable de tipo texto.

Si utilizamos mandos genéricos RC5 como el modelo de Keyestudio, podemos usar el bloque de la imagen siguiente para comparar los códigos recibidos y así identificar fácilmente cada tecla.

2023-01-10 09_44_57-Window.jpg
Imagen Federico Coca Notas sobre ESP32 STEAMakers CC-BY-SA

En la TdR STEAM

IR-TdR.png
Imagen Federico Coca Notas sobre ESP32 STEAMakers CC-BY-SA

Programando la actividad

Vamos a realizar un programa en el que si pulsamos la tecla Ok del control remoto se nos encienda el diodo LED rojo. La solución la tenemos disponible en ESP32-SM-Actividad-11 que es el programa que vemos en la imagen siguiente:

A11.png
Solución Actividad 11 Imagen Federico Coca Notas sobre ESP32 STEAMakers CC-BY-SA

 

Sabemos que el diodo IR está recibiendo un código porque junto al mismo hay un diodo LED rojo que parpadea.

Retos de ampliación
  • A11.R1. Realizar un programa que encienda el LED RGB en los colores establecidos a continuación y según la tecla flecha pulsada.
    • Flecha arriba = Rojo
    • Flecha izquierda = Verde
    • Flecha derecha = Amarillo
    • Flecha abajo = azul
  • A11.R2. Realizar un programa que nos muestre por consola el código hexadecimal correspondiente a cada una de las teclas pulsadas junto a un texto descriptivo indicador de la tecla pulsada en cada caso, es decir, que mantenga una estructura del tipo: El CODIGO se corresponde con la tecla TECLA pulsada.