Rendimiento de los modulos RF 433Mhz

Los módulos RF 433MHz económicos suelen tener un rendimiento pobre así como vienen. Sin embargo, algunos pequeños trucos les daran más potencia incluso para distancias largas.

Las pruebas las realicé con 3 configuraciones de módulos: sin antena, con antena comercial tipo espiral, y con antena casera de un cable rigido de 20cm. También probé con varios voltajes en el emisor: 5V, 9V y 12V. Recuerde que el emisor funciona en un rango de 3V a 12V pero su alcance es proporcional al voltaje usado.

Módulos RF 433Mhz y antenas

Además al receptor le agregue un display lcd 16×2 para poder ver los resultados mientras me trasladaba (a veces hasta cientos de metros)

Otro dato a considerar es que usé 2000bps de frecuencia que es la frecuencia del ejemplo de la librería RadioHead. Disminuir la frecuencia también mejora el alcance un poco.

Para evitar rebotes, interferencias y/o bloqueos, hice las pruebas al aire libre, con visibilidad entre emisor y receptor.

Resultados con emisor a 5v

Antena EmisorAntena ReceptorAlcance
S/AS/A3m
ComercialS/A0m
ComercialComercial2m
S/AComercial1m
Cable 20cmS/A10m
Cable 20cmCable 20cm100m

Conclusiones de las pruebas

  • Sin antena el alcance es muy limitado
  • Para aplicaciones simples, considere aregarle una antena de cable rigido de 20cm al emisor o al receptor por lo menos
  • Con emisor y receptor con antena de cable rigido conseguimos el mayor alcance y una diferencia de 10 veces las otras configuraciones
  • Las antenas comerciales no brindan mejor rendimiento, al menos no para los módulos de 433Mhz

Resultados con el emisor a 9V

Antena EmisorAntena ReceptorAlcance
S/AS/A5,5m
ComercialS/A0m
ComercialComercial0m
S/AComercial1m
Cable 20cmS/A20m
Cable 20cmCable 20cm200m

Como se puede apreciar, subir el voltaje del emisor a 9V nos duplica la ganancia/alcance.  Si usamos 12V en el emisor podemos lograr alcances de hasta 500m al aire libre.

Los Sketch usados para las pruebas

El código del emisor tiene una demora de 10ms entre envios para garantizar el tiempo de procesamiento del receptor.

Emisor

#include <RH_ASK.h>
#include <SPI.h>

// 2000bps, Pin 2 recibir, in 4 enviar
RH_ASK driver(2000, 2, 4);

void setup() {
  
    Serial.begin(9600);
    
    if (!driver.init()) {
         Serial.println("Fallo de iniciacion");
    }
}

long cnt = 1;

void loop() {
    driver.send((uint8_t *)(String(cnt).c_str()), String(cnt).length());
    
    // Esperamos a que se termine de enviar el mensaje
    driver.waitPacketSent();
    
    // Enviamos el texto cada 1 segundo
    delay(10);
    cnt++;
}

Receptor

#include <RH_ASK.h>
#include <SPI.h>

// Estas son para el display LCD
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

// Nuestro LCD se comunica en la dirección 27h, e inicializamos la librería para 16x2
LiquidCrystal_I2C lcd(0x27, 16, 2);

RH_ASK driver(2000, 2, 4);

void setup() {
  // Inicializamos el display
  lcd.begin();
  
  // Prendemos el backlight
  lcd.backlight();

  if (!driver.init()) {
    lcd.print("Fallo iniciacion");
  }
}

void loop() {
    uint8_t buf[RH_ASK_MAX_MESSAGE_LEN];
    uint8_t buflen = sizeof(buf);

    if (driver.recv(buf, &buflen)) {
	buf[buflen] = '\0';

	// Mostrar el mensaje recibido
        lcd.setCursor(0, 0);
        lcd.print(String("Recibido: " + String((char*)buf)).c_str());
    }
}

9 comentarios en “Rendimiento de los modulos RF 433Mhz”

  1. Hola ArduinoHobby, muchas gracias por el aporte. Me preguntaba si es posible que puedas realizar un ejemplo (basado en el código anterior), en el cual el emisor primeramente envíe un código de confirmación (ejemplo: *1234) de manera encriptado y el receptor tenga una lista (array) de códigos (ejemplo 1111,*1234,1233) y si el código del emisor coincide con alguno de los códigos del receptor, el receptor enviará un mensaje encriptado al emisor el cual le indica que los siguientes mensajes en adelantes serán recibidos por el receptor. En caso contrario, no se establecerá la comunicación.

    • Hola Mario, la idea es buena para una comunicación segura donde puede haber multiples receptores escuchando. La tendré en cuenta para algun proyecto que publiquemos. Gracias por tu sugerencia.

      Por otro lado, si ten animas a hacer tu, con gusto lo probaremos y publicaremos para el resto.

    • En la primera foto se ve un poco. Solo es un cable rígido del tipo telefónico (monofilamento) de unos 20cm aprox. la que debe estar derecha y vertical preferentemente.

  2. Hola amigo. Recién estoy empezando en Arduino, pero siempre me dedique a comunicaciones. Podrías probar con 16 cm de antena,(1/4 de onda de los 433Mhz). Creo que puede mejorar mas todavia porque ahi entra en resonancia la antena.Muy buenos tus articulos,a pesar de mi falta de conocimiento en el tema.Saludos.Oscar

Deja un comentario