Receptor de infrarrojos


Estamos tan acostumbrados a los mandos a distancia infrarrojos que no dedicamos un momento a pensar en ellos y simplemente nos parece normal, algo que a nuestros abuelos les hubiera parecido magia.
Nos parece normal que los equipos electrónicos, televisores, cadenas de música, aires acondicionados, respondan a nuestras instrucciones sin levantarnos del sofá, pero esto no ha sido siempre así, es más, es relativamente reciente, que estos mandos se popularizaron.
Pero el concepto de la emisión y recepción de señales infrarrojas no es, ni mucho menos trivial, y exige tener nociones de ondas electromagnéticas (energía, frecuencia, longitud, etc...) que sobrepasan nuestro nivel. No obstante para aquellos que queráis profundizar más en el tema os recomiendo la excelente descripción del artículo de Prometec sobre sensores infrarrojos.

Un típico receptor de infrarrojos, es el AX-1838HS, que se consigue por poco más de unos euros. En su hoja de normas encontráis este diagrama, y son relativamente fáciles de encontrar, en dos formas. Independientes y montados en un soporte para utilizar sin complicaciones con nuestros Duinos. 





El esquema de conexión nuevamente es trivial, pues el AX-1838HS solo tiene 3 pines: Vcc, GND y señal.

El objetivo de este ejercicio es aprender a recibir señales infrarrojas mediante un sensor/receptor IR emitidas por un mando a distancia de infrarrojo.

Circuito eléctrico



Con lo que bastará con conectar la patilla GND al pin GND de Arduino, la patilla VCC al pin 5V de Arduino y la patilla DAT (señal) a cualquier salida digital de Arduino, en nuestro caso, lo haremos al pin digital 9.

Ejemplos de código
Existen múltiples librerías para emplear mandos a distancia con Arduino. Nosotros usaremos la librería Arduino-IRremote desarrollada por Rafi Khan (z3t0) disponible en este enlace.

El siguiente código realiza la lectura del valor recibido por el mando, y lo muestra por pantalla. El código se muestra en formato hexadecimal.
 
// Incluir la librería para trabajar con el sensor IR

#include "IRremote.h"

// Definición de variables y constantes relacionadas con el sensor infrarrojos

const int RECV_PIN=9; // Pin digital 9 para conectar el sensor

IRrecv irrecv(RECV_PIN);  // Se crea un nuevo objeto para trabajar con el sensor

decode_results results;


void setup()
{
Serial.begin(9600);  // Se inicia el puerto de comunicaciones en serie

irrecv.enableIRIn(); // Se inicia el receptor IR

}
void loop()
{
if(irrecv.decode)(&results)
{
Serial.println(results.value, HEX);
irrecv.resume();
}
}

No hay comentarios: