Arduino Lora Leaf, Ejemplos de aplicación

Spread the love

A continuación, tenemos algunos ejemplos de aplicación para los sistemas de desarrollo más comunes en IoT.

Para facilitar la implementación de estos ejemplos, es necesario descargar las librerías apropiadas, las cuales al ser de código abierto, están disponibles de forma gratuita desde los enlaces que se incluyen más adelante.

interconexión con Arduino Uno/Nano

Una de las librerías más comunes para Lora en ambiente Arduino, es la creada por Sandeep Mistry, la cual incluye varios ejemplos de aplicación y puede ser encontrada en el siguiente enlace:

https://github.com/sandeepmistry/arduino-LoRa

Una de las formas más sencilla de instalarla, es descargar el archivo “arduino-LoRa-master.zip” desde el sitio y empleando el “Library Manager”, seguir los siguientes pasos:

  • Elegir Sketch -> “Include Library” -> Add .Zip Library…
  • Esto abre una ventana donde debemos ubicar y seleccionar el archivo “arduino-LoRa-master.zip” que recién se descargo.
  • Hacer click en el archivo “arduino-LoRa-master.zip” para seleccionar la biblioteca.
  • Con esto la librería debe quedar disponible para su uso.

Estas dos variantes de Arduino, son básicamente diferentes versiones del mismo hardware, por lo que en este caso el software es idéntico para ambos.

En ambos casos, la interface básica entre Arduino y Omniduino Lora Leaf, se describe en la siguiente tabla (para acceso a funciones más avanzadas, se puede necesitar pines digitales adicionales):

Arduino Uno/Nano, digital pinOmniduino Lora Leaf, nombre del pin
3.3V Output ( * ver nota abajo)+3.3V Input
GNDGND
D13SCK
D12MISO
D11MOSI
D10NSS
D9RST
D2DIO0

Uno de los aspectos importantes a tener en cuenta, es respecto al regulador de 3.3Volts incluido en la mayoría de las tarjetas Arduino, el cual tiene una capacidad limitada de aproximadamente 150mAmps, resultando insuficiente para que el módulo Lora Leaf pueda transmitir, pero que pudiera ser suficiente para recibir datos.

Con el fin de evitar intermitencias en la comunicación, Se recomienda utilizar un regulador externo de 3.3Volts alimentado desde el pin de 5Volts o desde alguna otra línea con capacidad de proveer al menos 300mAmps a 3.3Volts en este tipo de Arduino, tal como se observa en las siguientes imágenes.

Conexión, Arduino Nano a Omniduino Lora Leaf
Conexión básica, Arduino UNO to Omniduino Lora Leaf

Los pines NSS, NRESET y DIO0 en esta aplicación, pueden ser reprogramados para emplear otras terminales digitales utilizando el comando “LoRa.setPins(ss, reset, dio0).

El pin DIO0 pin es opcional y solo se necesita para utilizar el modo “callback” cuando se utiliza el Omniduino Lora Leaf para aplicaciones del tipo “Gateway”.

Transmisión LORA con Arduino Uno/Nano

En el sitio de Sandeep Mistry que se menciono anteriormente, pueden encontrarse varios ejemplos, incluyendo comunicación de datos análogos y digitales, así como funciones de comunicaciones dúplex, los cuales pueden ser descargados y empleados para utilizar el módulo Omniduino Lora Leaf simultáneamente como emisor y receptor.

A continuación, se muestra un código ejemplo para transmisión de datos, basado en la información disponible en dicho sitio.

Como primer paso para quien inicia en proyectos de IoT, resulta muy conveniente programar una pareja de Arduino-Omniduino Lora Leaf, con este código de ejemplo para transmisión de datos y posteriormente hacer lo mismo con otra pareja de módulos para obtener la parte receptora.

En el caso de este ejemplo para transmisión, al interconectar correctamente ambos módulos, resulta bastante sencillo emplear el monitor serial del Arduino IDE y confirmar que todo funciona correctamente.

#include <SPI.h>
#include <LoRa.h>   
int contador = 0;

void setup()

Serial.begin(9600); 
while (!Serial);
Serial.println(“Omniduino LoRa Leaf_Tx”); 
if (!LoRa.begin(915E6)) { //frecuencia del transmisor Lora Serial.println(“Falla al iniciar Lora!”); 
while (1);
}

void loop() 

Serial.print(“Transmitiendo paquete de datos: “); Serial.println(contador); // send packet LoRa.beginPacket();
LoRa.print(“Hola “); 
LoRa.print(contador); 
LoRa.endPacket(); 
contador++; 
delay(2500); //retardo de 2.5 segundos entre mensajes 
}
Omniduino Lora Leaf, código ejemplo TX con Arduino UNO/Nano

Mediante este programa, que funciona para tanto para Arduino UNO, como para Arduino Nano, se transmiten mensajes con un intervalo de 2.5 segundos, mismos que como mencionamos anteriormente, pueden verificarse utilizando el monitor de comunicación serial del IDE de Arduino, con lo que tendremos una pantalla similar a la que podemos apreciar en la siguiente Imagen.

Omniduino Lora Leaf, transmitiendo datos cada 2.5 segundos

Recepción LORA con Arduino Uno/Nano

Como siguiente paso, procedemos a interconectar una segunda pareja de Arduino-Omniduino Lora Leaf, solo que en este caso, empleando el software apropiado para recibir información, de manera que podamos recabar los datos enviados por la pareja de módulos del ejemplo anterior.

En la siguiente imagen se muestra un ejemplo de código para recepción de datos, el cual nos ayudara con este objetivo.

#include <SPI.h> 
#include <LoRa.h> 
void setup() 

Serial.begin(9600); 
while (!Serial); 
Serial.println(“Omniduino LoRa Leaf_Rx”); 
if (!LoRa.begin(915E6)) 

Serial.println(“Falla al iniciar Lora!”); 
while (1); 

} void loop() { // try to parse packet int packetSize = LoRa.parsePacket(); 
if (packetSize) { // Paquete de datos recibido Serial.print(“Paquete recibido ‘”); // Leer paquete de datos while (LoRa.available()) { 
Serial.print((char)LoRa.read()); 
} // Imprime RSSI del pquete 
Serial.print(“‘ Con RSSI “); 
Serial.println(LoRa.packetRssi()); 

}
Omniduino Lora Leaf, código ejemplo RX con Arduino UNO/Nano

Al programar este código en Arduino, nuevamente podemos emplear el monitor serial del IDE, con lo que ahora podemos observar como nuestra segunda pareja de Arduino-Omniduino Lora Leaf, está preparada para recibir información, apreciándose una imagen similar a la que se muestra a continuación.

Omniduino Lora Leaf, listo para comenzar recepción de datos.

Como tercer paso, quedaría alimentar simultáneamente ambas parejas, tanto los módulos que integran el transmisor, como los que integran el receptor y mediante el monitor serial del Arduino IDE, verificar la salida del Arduino que funciona como receptor, con la finalidad de confirmar que el enlace inalámbrico trabaja correctamente.

Posteriormente, basándonos en el código de los ejemplos anteriores y la información incluida con la librería Lora, podemos modificar el software para crear aplicaciones a la medida de nuestras necesidades, incluyendo por ejemplo transmisión-Recepción simultanea, lectura de sensores análogos o digitales, o lo que se considere más apropiado para cubrir las necesidades de nuestros proyectos de IoT.