Arduino IR transmite y recibe

Estoy usando un Módulo Receptor IR digital y un Módulo Transmisor IR digital conectados cada uno con un Arduino Uno diferente. ¿Cómo puedo transmitir datos como "1234" al receptor y mostrar datos en la pantalla LCD? Esto se debe a que la mayoría de los ejemplos que encontré usando un código remoto IR como Sony y RC4. Solo quiero enviar un dato simple.

La forma más fácil sería usar una de las bibliotecas de códigos IR existentes, como RC5, que tiene códigos numéricos para los botones 0-9 en un control remoto.

Respuestas (1)

Como la pregunta no indica qué módulos de transmisor y receptor de infrarrojos digitales están en uso, esta respuesta explica cómo se puede lograr la comunicación de datos por infrarrojos utilizando simplemente un LED de infrarrojos genérico y un receptor de infrarrojos modulado como el TSOP17xx de Vishay u otras partes similares .

Suposiciones :

  • El LED IR elegido puede funcionar con una corriente de 20 mA, por ejemplo, IR333
  • Se utilizará el sensor TSOP1756 (modulación de 56 KHz).
    • Cambie la frecuencia de modulación de acuerdo con la parte real utilizada en el módulo del sensor. Para TSOP11 38 , por ejemplo, la frecuencia de modulación es de 38 KHz.

Recibiendo :

Esta es la parte facil. Simplemente conecte el pin OUT del sensor al pin serial RX de su Arduino ( pin digital 0 ). Si su Arduino es uno de los modelos básicos (más antiguos), utilícelo Serial.read()en loop():

int inputByte = 0;
if (Serial.available() > 0) {
    // read the incoming byte:
    inputByte = Serial.read();
    // Do stuff with this byte, then loop again

Para Arduino Mega o Due , también puede usar Serial1, Serial2 o Serial3, según el pin RX que use.

Para referencia adicional, consulte la referencia de Arduino Serial .

NB Encienda el sensor con el mismo voltaje que su Arduino realmente ejecuta su microcontrolador a 3,3 o 5 voltios, según el modelo de Arduino. Cada placa Arduino tiene un pin de salida de voltaje adecuado que puede usar para esto. No utilice el suministro externo (normalmente de 7 a 12 voltios) proporcionado a la placa Arduino .


Transmitiendo :

Tiene dos opciones: (1) Arduino, LED y componentes pasivos, o (2) usando un componente de puerta lógica adicional. La primera opción es buena para los LED IR de baja corriente (20-30 mA como máximo):

  • Configure uno de los temporizadores Arduino (Timer1, por ejemplo, es un temporizador de 16 bits) para la frecuencia de modulación, con salida a uno de los pines del temporizador D9 o D10 asociados con este temporizador.
  • Para un Arduino de 16 MHz, para obtener aproximadamente 56 KHz, use un valor de desbordamiento de contador de 286 ( = 55,944 Hz). En su lugar, se entregará un valor de desbordamiento de 421 38,005 Hz, si es necesario.
  • Conecte una resistencia limitadora de corriente adecuada ( 120 a 150 ohmios en un Arduino de 5 voltios = límite de aproximadamente 18 mA a 23 mA ), un diodo de señal pequeño y el LED en serie como se muestra a continuación:

    esquemático

simular este circuito : esquema creado con CircuitLab

  • Cuando el pin TX está alto, el LED se pulsará a la frecuencia de modulación. Cuando el pin TX está bajo, el LED no se encenderá y el diodo de pequeña señal en serie protegerá al LED de una avería inversa.
  • Si su Arduino es del tipo de 3,3 voltios, entonces el diodo de pequeña señal no es realmente esencial.

Para controlar un LED de mayor corriente , se puede usar un componente lógico adicional, una compuerta AND cuádruple como SN74AS1008 . Esta parte genera o absorbe hasta 48 mA por compuerta, y se pueden conectar en paralelo varias compuertas para un accionamiento de mayor corriente.

  • Conecte la salida del Timer1 como se configuró anteriormente, a una entrada de cada una de las puertas AND.
  • Conecte la salida TX como se mencionó anteriormente, a la segunda entrada de cada una de las puertas AND.
  • Conecte una resistencia limitadora de corriente de valor adecuado a cada pin de salida de estas 4 puertas Y, de modo que la suma de las 4 corrientes de salida sea igual a la corriente de accionamiento deseada en el LED
  • Conecte los otros extremos de las 4 resistencias limitadoras de corriente al ánodo del LED, con el cátodo conectado a tierra de Arduino.
  • Es posible que deba suministrar el Vcc de la puerta AND desde una fuente de alimentación externa (5 voltios), ya que el regulador integrado de Arduino se sobrecalentará si pasa demasiada corriente a través de él. Asegúrese de que la tierra de este suministro externo esté conectada a Arduino GND.

esquemático

simular este circuito


Ahora simplemente use Serial.write()su loop()código Arduino para transmitir cualquier dato en serie, que será recibido por el Serial.read()otro extremo, como se describió anteriormente.