2.1 LoRa Multipunto – HELTEC CubeCell Receptor.ino

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);
}