lunes, 29 de junio de 2009

Recepcion IR con Arduino (protocolo NEC)




Lo que tenemos aqui es un receptor IR 38khz TSOP4838 y la idea es programar el Arduino para que reciba los codigos IR de mandos a distancia, en concreto los mandos que he probado parecen usar el protocolo NEC que esta bastante extendido

El primer paso es conectar el receptor IR como se ve en la foto, con el positivo a una resistencia de 220 ohm, aqui abajo se muestra el esquema de conexionado del datasheet, pero voy a obviar algunos componentes por simplificar la tarea.







Seguidamente nos descargamos la libreria NECIRcv de  http://wikiputer.org/arduino/NECIRrcv.zip y la copiamos el directorio usual arduino-013/hardware/libraries/

Podemos cargar el ejemplo que viene con la libreria pero hay que añadir un include al principio para que la compilacion no de errores, quedaria como lo siguiente:
// look for IR codes and print them as they are received
#include <WProgram.h>
#include <NECIRrcv.h>
#define IRPIN 8    // pin that IR detector is connected to

NECIRrcv ir(IRPIN) ;

void setup()
{
Serial.begin(9600) ;
Serial.println("NEC IR code reception") ;
ir.begin() ;
}

void loop()
{
unsigned long ircode ;

while (ir.available()) {
ircode = ir.read() ;
Serial.print("got code: 0x") ;
Serial.println(ircode,HEX) ;
}
}

Una vez compilado y subido al arduino abrimos la consola serie y pulsando alguno de los botones de los mandos los codigos HEX salen en pantalla



Mandos usados para las pruebas, mando para receptor Yamaha RX-V340 y mando para sintonizador TDT-USB Zappa:




Referencias:
- post original: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1210243556/0
- informacion util sobre protocolos IR: http://www.sbprojects.com/knowledge/ir/ir.htm

No hay comentarios:

Publicar un comentario en la entrada