Configuración de como receptor de módulo de desarrollo CubeCell
Resultados en monitor serie
RX Paquete "312139" , tamanio 6, Rssi -22 RX Paquete "312140" , tamanio 6, Rssi -23
Instrucciones
Las instrucciones de dividen en el bloque principal, el procedimiento LoRa Recepcion, separados en cada pestaña del IDE Arduino
Bloque principal
Declara las librerias para el módulo o placa de desarrollo Heltec, se indica los parámetros LoRa como la Banda ISM que para Ecuador es US915, también se establecen las variables para el manejo de los mensajes de recepción, tiempo entre envío de mensajes de número de paquete ‘txNumero’
El bucle de configuración setup()
inicializa el módulo y el de operación loop()
revisa los tiempos en los que se debe realizar el envío del mensaje LoRa.
/* LoRa RECIBE * Referencia: https://github.com/HelTecAutomation/ASR650x-Arduino */ #include "LoRaWan_APP.h" #include "Arduino.h" #ifndef LoraWan_RGB // LED placa #define LoraWan_RGB 0 #endif // LoRa Parametros #define RF_FREQUENCY 915E6 // Hz #define TX_OUTPUT_POWER 14 // dBm #define LORA_BANDWIDTH 0 // [0: 125 kHz, 1: 250 kHz, // 2: 500 kHz, 3: Reserved] #define LORA_SPREADING_FACTOR 7 // [SF7..SF12] #define LORA_CODINGRATE 1 // [1: 4/5, 2: 4/6, // 3: 4/7, 4: 4/8] #define LORA_PREAMBLE_LENGTH 8 // Same for Tx and Rx #define LORA_SYMBOL_TIMEOUT 0 // Symbols #define LORA_FIX_LENGTH_PAYLOAD_ON false #define LORA_IQ_INVERSION_ON false #define RX_TIMEOUT_VALUE 1000 #define BUFFER_SIZE 30 // Define tamanio payload char txpacket[BUFFER_SIZE]; // cadena de caracteres char rxpacket[BUFFER_SIZE]; static RadioEvents_t RadioEvents; int16_t Rssi,rxSize; void setup() { Serial.begin(115200); Rssi=0; RadioEvents.RxDone = OnRxDone; Radio.Init( &RadioEvents ); Radio.SetChannel( RF_FREQUENCY ); Radio.SetRxConfig( MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR, LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH, LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON, 0, true, 0, 0, LORA_IQ_INVERSION_ON, true ); turnOnRGB(COLOR_RECEIVED,0); //change rgb color Serial.println("Modo RX Receptor"); } void loop(){ Radio.Rx( 0 ); delay(100); Radio.IrqProcess( ); }
Procedimiento de recepción de paquete LoRa
Se desarrollan las instrucciones del receptor en otra pestaña para simplificar el procesamiento del paquete recibido
void OnRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr ){ turnOnRGB(COLOR_RECEIVED,0); Rssi = rssi; // nivel de recepcion rxSize = size; memcpy(rxpacket, payload, size ); rxpacket[size] = '\0'; //añade fin de cadena Radio.Sleep( ); Serial.printf("\rRX Paquete \"%s\", tamanio %d, Rssi %d , \r\n", rxpacket,rxSize,Rssi); }