Recientemente adquiri 4 Modulos "RFM69HCW 915MHz Transceptor Lora"

La finalidad es experimentar y conocer si estos modulos los puedo explotar en mi propiedad para diferentes "Dataloggers" de mi jardin.
Primero que nada, me ha costado mucho tiempo poder lograr lo que en seguida compartire en los codigos ya que he pasado el mayor tiempo tratando de encontrar la Conexion adecuada entre dicho modulo y mis ESP32 que estoy ocupando por el tema de que estos modulos solo funcionan a 3.3 volts y aunque tengo arduinos UNO disponibles, como sabemos, estos funcionan a 5 volts en sus niveles logicos y para lograr los ejemplos que hay por la Internet se requiere de uno o varios Convertidor de Nivel Lógico bidireccionales de 5 a 3 volts los cuales no tengo.
Por otro lado, en la capa de software, encontrar una libreria adecuada tambien fue una buena faena ya que nunca pasaba de la configuracion y comprobacion de que el modulo fuera inicializado de manera correcta, es decir, las diferentes librerias se quedan en el limbo "esperando" a que el modulo respondiera, o me mandaba un error inmediato lo cual fue muy desmotivador, incluso pense que habia fastidiado el modulo por mala conexion, etc.
Finalmente con la libreria RFM69.h y la siguiente conexion entre el ESP32 y el Modulo RFM69 pude finalmente lograr un enlace muy sencillo.


Nota.- La conexion es excatamente la misma tanto para el transmisor como para el receptor.
Ahora dejo el codigo para el Receptor:
Y aca el del transmisor:
Ahora el motivo de abrir este tema, primero que nada esperando que el presente sirva a algunos que quieran experimentar con este modulo ya que en las busquedas no encontre nada al respecto, segundo saber si algunos han podido tener resultados optimos con estos modulos, me refiero a Covertura, confiabilidad, incluso sobre esta libreria o, si existen otras que conozcan.
A mi me ha "decepcionado" un poco, ya que la covertura en metros ha sido muy pobre; no he logrado mas de 10 metros. Muy probablemente por el tipo de antena que estoy utilizando que como ven en la foto es un simple alambre muy burdo y en estos dias intentare calcular y armar algo mas formal (inicialmente una Dipolo) a ver que tanto mejora la covertura. por hoy es todo, como siempre espero sus comentariosy experiencias.
Saludos a todos los amables compañeros.

La finalidad es experimentar y conocer si estos modulos los puedo explotar en mi propiedad para diferentes "Dataloggers" de mi jardin.
Primero que nada, me ha costado mucho tiempo poder lograr lo que en seguida compartire en los codigos ya que he pasado el mayor tiempo tratando de encontrar la Conexion adecuada entre dicho modulo y mis ESP32 que estoy ocupando por el tema de que estos modulos solo funcionan a 3.3 volts y aunque tengo arduinos UNO disponibles, como sabemos, estos funcionan a 5 volts en sus niveles logicos y para lograr los ejemplos que hay por la Internet se requiere de uno o varios Convertidor de Nivel Lógico bidireccionales de 5 a 3 volts los cuales no tengo.
Por otro lado, en la capa de software, encontrar una libreria adecuada tambien fue una buena faena ya que nunca pasaba de la configuracion y comprobacion de que el modulo fuera inicializado de manera correcta, es decir, las diferentes librerias se quedan en el limbo "esperando" a que el modulo respondiera, o me mandaba un error inmediato lo cual fue muy desmotivador, incluso pense que habia fastidiado el modulo por mala conexion, etc.
Finalmente con la libreria RFM69.h y la siguiente conexion entre el ESP32 y el Modulo RFM69 pude finalmente lograr un enlace muy sencillo.


Nota.- La conexion es excatamente la misma tanto para el transmisor como para el receptor.
Ahora dejo el codigo para el Receptor:
C++:
/* Receptor usando RFM69
La forma mas burda de recibir un Buffer
*/
//Definimos los pines donde se conectan los LEDS
#define LedRojo 26
#define LedVerde 25
#define LedBlanco 33
unsigned long T_Evento=millis();
float TxContador=0;//Variable que contiene el numero de envios
char buffer[35];// creamos la variable Buffer que contendra el dato que se debe transmitir
//configuracion del modulo RFM69
#include <RFM69.h>
#include <SPI.h>
#define NETWORKID 200 //Identificador de RED igual en todos los radios
#define MYNODEID 1 //Nuestro ID
#define TONODEID 2 //ID del nodo al que enviamos datos
#define FREQUENCY RF69_915MHZ //Europa es RF69_434MHZ
#define ENCRYPTKEY "TOPSECRETPASSWRD" // Clave igual para cada radio
#define USEACK true // Pedimos ACK de retorno para cada paquete
#define IS_RFM69HCW false // Si tu radio es RFM69HCW entonces va "true"
#define POWER_LEVEL 31 // Valor máximo de potencia
#define SPI_CS 5 //NSS o Cable Select al GPIO 5
#define IRQ_PIN 2 // DIO0 conectado a GPIO2
#define IRQ_NUM 2 //IRQ igual al pin
RFM69 radio = RFM69(SPI_CS, IRQ_PIN, IS_RFM69HCW, IRQ_NUM);
void setup() {
Serial.begin(115200);
pinMode(LedRojo,OUTPUT);
pinMode(LedVerde,OUTPUT);
pinMode(LedBlanco,OUTPUT);
digitalWrite(LedRojo,LOW);
digitalWrite(LedVerde,LOW);
digitalWrite(LedBlanco,LOW);
//Se inicializa el Modulo RFM69
if(radio.initialize(FREQUENCY, MYNODEID, NETWORKID))
Serial.println("Se a Inicializado el Radio satisfactoriamente");
#ifdef IS_RFM69HW_HCW
radio.setHighPower(); //configuramos el radio a su maxima potencia
#endif
radio.encrypt(ENCRYPTKEY);
#ifdef ENABLE_ATC
radio.enableAutoPower(ATC_RSSI);
#endif
}
void loop() {
if (radio.receiveDone()){ //Espera hasta recibir un dato
String Mensaje = "";
for (byte i = 0; i < radio.DATALEN; i++){
// Se construye el mesaje recibido:
Mensaje.concat((char)radio.DATA[i]);
}
//Envio de ACK cuando es solicitada
if (radio.ACKRequested()){
radio.sendACK();
}
Serial.println(Mensaje);
}
//creamos un evento cada 1000 ms para hacer titilar un led
if ( millis() - T_Evento >= 1000 ) {
digitalWrite(LedVerde,!digitalRead(LedVerde)); //invertimos el estado del Led para ver que hay actividad
T_Evento = millis();// Actualizamos el valor de T_Evento
}
}
Y aca el del transmisor:
C++:
/* Receptor usando RFM69
La forma mas burda de recibir un Buffer
*/
//Definimos los pines donde se conectan los LEDS
#define LedRojo 26
#define LedVerde 25
#define LedBlanco 33
unsigned long T_Evento=millis();
float TxContador=0;//Variable que contiene el numero de envios
char buffer[35];// creamos la variable Buffer que contendra el dato que se debe transmitir
//configuracion del modulo RFM69
#include <RFM69.h>
#include <SPI.h>
#define NETWORKID 200 //Identificador de RED igual en todos los radios
#define MYNODEID 2 //Nuestro ID
#define TONODEID 1 //ID del nodo al que enviamos datos
#define FREQUENCY RF69_915MHZ //Europa es RF69_434MHZ
#define ENCRYPTKEY "TOPSECRETPASSWRD" // Clave igual para cada radio
#define USEACK true // Pedimos ACK de retorno para cada paquete
#define IS_RFM69HCW false // Si tu radio es RFM69HCW entonces va "true"
#define POWER_LEVEL 31 // Valor máximo de potencia
#define SPI_CS 5 //NSS o Cable Select al GPIO 5
#define IRQ_PIN 2 // DIO0 conectado a GPIO2
#define IRQ_NUM 2 //IRQ igual al pin
RFM69 radio = RFM69(SPI_CS, IRQ_PIN, IS_RFM69HCW, IRQ_NUM);
void setup() {
Serial.begin(115200);
pinMode(LedRojo,OUTPUT);
pinMode(LedVerde,OUTPUT);
pinMode(LedBlanco,OUTPUT);
digitalWrite(LedRojo,LOW);
digitalWrite(LedVerde,LOW);
digitalWrite(LedBlanco,LOW);
//Se inicializa el Modulo RFM69
if(radio.initialize(FREQUENCY, MYNODEID, NETWORKID))
Serial.println("Se a Inicializado el Radio satisfactoriamente");
#ifdef IS_RFM69HW_HCW
radio.setHighPower(); //configuramos el radio a su maxima potencia
#endif
radio.encrypt(ENCRYPTKEY);
#ifdef ENABLE_ATC
radio.enableAutoPower(ATC_RSSI);
#endif
}
void loop() {
// hacemos una transmision cada 5000 ms
if ( millis() - T_Evento >= 5000 ) {
digitalWrite(LedVerde,!digitalRead(LedVerde)); //invertimos el estado del Led para ver que hay actividad
sprintf(buffer, "Numero de Transmisión=%.0f",TxContador); //creamos el Buffer que se enviara
radio.sendWithRetry(TONODEID, buffer, sizeof((buffer))); //se envia el contenido del buffer
Serial.println(buffer);// mandamos el contendio del buffer para monitorear desde el puerto serie
TxContador++; //incrementamos la variable en uno
T_Evento = millis();// Actualizamos el valor de T_Evento
}
}
Ahora el motivo de abrir este tema, primero que nada esperando que el presente sirva a algunos que quieran experimentar con este modulo ya que en las busquedas no encontre nada al respecto, segundo saber si algunos han podido tener resultados optimos con estos modulos, me refiero a Covertura, confiabilidad, incluso sobre esta libreria o, si existen otras que conozcan.
A mi me ha "decepcionado" un poco, ya que la covertura en metros ha sido muy pobre; no he logrado mas de 10 metros. Muy probablemente por el tipo de antena que estoy utilizando que como ven en la foto es un simple alambre muy burdo y en estos dias intentare calcular y armar algo mas formal (inicialmente una Dipolo) a ver que tanto mejora la covertura. por hoy es todo, como siempre espero sus comentariosy experiencias.
Saludos a todos los amables compañeros.