Aprovechando el caso particular que estoy por realizar un proyecto personal me parece interesante ver este módulo. En el canal hemos visto otros módulos de RF con ARDUINO pero a diferencia de ellos el LoRa XL1278-SMT ,cada módulo, puede transmitir y recibir datos que es lo que se conoce como "transceiver".
Vamos a utilizar dos Módulos XL1278-SMT en conjunto con dos ARDUINOS.
El objetivo es que uno de los XL1278-SMT + ARDUINO se comporte como transmisor y el otro conjunto como receptor que para comenzar a entender y utilizar estos módulos es básico pero más que suficiente.
Una vez realizadas las conexiones y cargado el código, el segundo objetivo es poder chequear las prestaciones en cuanto a la distancia.
Para lo cual he agregado al receptor un display para poder desplazarme con facilidad y chequear la distancia. Esto no es realmente necesario puesto que sacaremos por pantalla los datos pero necesitarías o podrías necesitar 2 pc's y poder moverlas o podrías cambiar / agregar al código para que parpadee el led onboard del ARDUINO.
El Módulo XL1278-SMT
Lo primero es identificar el board de nuestro módulo puesto que hay uno similar, el DRF1278F, cuya distribución de pines es diferente. Mientras ubiques las salidas en su lugar correspondiente puedes utilizar uno u otro sin problema. Agrego Imagen del módulo que vamos a utilizar nosotros.
¡IMPORTANTE! >> No conectes nada todavía.
El módulo se alimenta de 3.3V
Si no CONECTAS LA ANTENA SE QUEMA EL MÓDULO.
Otra característica interesante es que el espaciado de los pines del módulo LoRa es inferior al estándar. Por lo cual como explico en el video vamos a tener que realizar alguna especie de adaptador.
Vamos a ver el diagrama de conexión tanto para la opción de receptor con Display como sin Display (Ya explicado en mi canal)
Diagrama Sin Display:
Diagrama Con Display:
Código para el RECEPTOR:
#include <SPI.h>
#include <LoRa.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
String inString = ""; // string para guardar los caracteres entrantes
String MiMensaje = ""; // String para guardar el mensaje completo MiMensaje
LiquidCrystal_I2C lcd(0x27,16, 2);
void setup() {
Serial.begin(9600);
lcd.begin();
lcd.backlight();
while (!Serial);
Serial.println("Receptor LoRa");
if (!LoRa.begin(433E6)) {
Serial.println("Inicializacion LoRa fallida!");
while (1);
}
}
void loop() {
int packetSize = LoRa.parsePacket();
if (packetSize) {
// lectura del paquete
while (LoRa.available())
{
int inChar = LoRa.read();
inString += (char)inChar;
MiMensaje = inString;
}
inString = "";
LoRa.packetRssi();
}
lcd.setCursor(0, 1);
lcd.print(MiMensaje);
lcd.setCursor(0, 1);
lcd.print(" ");
Serial.println(MiMensaje);
}
Código para el TRANSMISOR:
#include <SPI.h>
#include <LoRa.h>
#include <TimeLib.h>
void setup() {
Serial.begin(9600);
while (!Serial);
Serial.println("Transmisor LoRa");
if (!LoRa.begin(433E6)) {
Serial.println("Inicializacion LoRa fallida!");
while (1);
}
}
void loop() {
time_t t = now();
String MiMensaje = (String) t;
Serial.println(MiMensaje);
LoRa.beginPacket();
LoRa.print(MiMensaje);
LoRa.endPacket();
delay(100);
}
Les dejo a mano la tabla de Direcciones IC que ya hablamos.
Te dejo el video de mi canal puesto que este blog es de apoyo y hay más elementos vertidos que no están disponibles en esta sección: