copiar-un-mando-inalambrico-315-433mhz-con-arduino

Copiar un mando inalámbrico 315/433Mhz con Arduino

En esta entrada vamos a ver cómo copiar un dispositivo de radiofrecuencia a 315/433Mhz con un procesador como Arduino. Un proceso (preocupantemente) sencillo que puede ser de utilidad en muchas ocasiones.

Los dispositivos RF a 315 o 433 Mhz son muy frecuentes, por ejemplo, en algunos mandos a distancia inalámbricos (algunos aires acondicionados), control de iluminación, en sensores y alarmas baratos, entre otros.

Copiar un dispositivo RF 315/433Mhz puede ser de interés en múltiples ocasiones, cómo por ejemplo poder actuar en una máquina que tiene un mando RF de forma remota (WiFi), añadir un temporizador, o integrarlos en una instalación domótica o de IoT.

copiar-mando-inalambrico-315-433-arduino-dispositivos

Otro interés en ser capaces de capturar las señales de sensores RF (por ejemplo, los de las alarmas baratas que hemos comentado). Estos sensores son muy baratos y están altamente optimizados para funcionar con pilas durante varios años. Leerlos permite añadir sensores a nuestra casa de forma sencilla. Por ejemplo, podemos añadir un sensor de movimiento, de puerta o de ventana, para encender una luz.

Sin embargo, ya avisamos que no os va a funcionar con todos los mandos. En especial, no funcionará con aquellos mandos con mayor seguridad (por ejemplo, los de las puertas de garaje) que usan mecanismos de seguridad como el Rolling Code, precisamente, para que no puedan ser copiados.

En algunos países es ilegal clonar dispositivos de RF (aunque sea los tuyos propios). Comprobar la legislación vigente en vuestro país antes de aplicar el contenido de esta entrada.

Clonar un dispositivo RF 315/433

El procedimiento para copiar un dispositivo RF 433Mzh es muy sencillo. Únicamente vamos a necesitar un receptor y receptor de 1-2€, como vimos en la entrada Comunicación inalámbrica en Arduino con módulos RF 433Mhz.

El resultado será mucho incluso mejor si empleamos un CC1101 como vimos en esta entrada que opera a 3V3 por lo que es especialmente adecuado para proyectos con el ESP8266 y ESP32.

Para esto poder leer los datos enviados por el dispositivo RF usaremos la librería RCSwitch disponible en https://github.com/sui77/rc-switch/. Para que funcione, deberemos conectar la salida de datos del receptor al pin D2 de Arduino, ya que la librería usa interrupciones para detectar el código.

Abrimos el ejemplo ReceiveDemo_Simple de la librería RCswitch lo cargamos en Arduino. A continuación, accionamos el dispositivo RF (pulsamos la llave, disparamos el sensor, etc), y veremos la salida como la siguiente.

Si no hemos añadido una antena adicional (cuestan unos pocos céntimos) es posible que tengamos que poner el receptor muy cerca, a menos de 10cm.

copiar-mando-inalambrico-315-433-arduino-resultado

Así de fácil. Ese es el código que envía tu dispositivo cuando es accionado. Ahora podemos hacer un Sketch que compruebe el código recibido con los de nuestros dispositivos, para hacer las acciones que queramos cuando accionemos el dispositivo RF.

Emular un dispositivo RF 315/433

Si ahora queremos “actuar” como el mando, simplemente tenemos que cargar el siguiente Sketch, y cambiar los datos por los que ha enviado el dispositivo RF en el apartado anterior.

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

// Sustituir con tu código
unsigned long code = XXXXXXXX;

void setup()
{
  Serial.begin(9600);
  mySwitch.enableTransmit(2);
}

void loop()
{
  mySwitch.send(code, 24);
  delay(200000);
}

Al ejecutar el Sketch el Arduino enviará el mismo código que el dispositivo original, y se realizarán las mismas acciones. ¡Así de fácil!

Como vemos, es muy sencillo clonar y emular un mando RF de 315/433Mhz con un procesador como Arduino (casi asusta ¿eh?). Y por esto nunca hay que confiar algo que realmente requiera seguridad en estos mandos simples de 315/433Mhz, cualquiera puede copiarlos en segundos.

Sin embargo, es una funcionalidad muy útil a la hora de domotizar, convertir en IoT dispositivos existentes, o añadir sensores inalámbricos a vuestro proyecto.

Descarga el código

Todo el código de esta entrada está disponible para su descarga en Github. github-full