En este tutorial construiremos un sistema de rastreo GPS usando LoRa , el sistema consistirá en un transmisor que leerá la información de ubicación del módulo GPS NEO-6My transmitirlo de forma inalámbrica a través de Lora. La parte del receptor recibirá la información y la mostrará en una pantalla LCD de 16×2 . Si es nuevo en LoRa, aprenda sobre la tecnología LoRa y LoRaWAN y cómo puede interactuar con Arduino antes de continuar.
Materiales necesarios:
- Arduino Lora Shield – 2Nos (diseño de PCB disponible para descargar)
- Arduino Uno – 2Nos
- SX1278 433MHz LoRa Module – 2
- Antena Lora 433MHz
- Módulo GPS NEO-6M
- Módulo de pantalla LCD
- Cables de conexión
Arduino LoRa Shield.
Para facilitar la construcción de cosas con LoRa, hemos diseñado un escudo Arduino LoRa para este proyecto. Este escudo consiste en el SX1278 433MHz con un regulador de 3.3V diseñado con el regulador variable LM317. El Shield se ubicará directamente sobre Arduino, proporcionándole capacidades LoRa. Este LoRa Shield será útil cuando tenga que desplegar nodos sensores LoRa o crear una red de malla LoRa. La completa diagrama de circuito para el Arduino Escudo LoRa se da a continuación.
El escudo consta de un conector de 12 V que, cuando está encendido, se utilizará para regular 3,3 V para el módulo LoRa utilizando el regulador LM317 . También se utilizará para alimentar el Arduino UNO a través del pin Vin y los 5 V regulados del Arduino se utilizan para alimentar la pantalla LCD en el escudo. El voltaje de salida del LM317 se fija en 3.3V usando la resistencia R1 y R2 respectivamente, el valor de estas resistencias se puede calcular usando la Calculadora LM317 .
Dado que el módulo LoRa consume muy poca energía, también puede alimentarse directamente desde el pin de 3.3V de Arduino, pero hemos utilizado un diseño de regulador externo ya que LM317 es más confiable que el regulador de voltaje a bordo. El escudo también tiene un potenciómetro que se puede usar para ajustar el brillo de la pantalla LCD. La conexión del módulo LoRa con Arduino es similar a lo que hicimos en nuestro tutorial anterior de Interfaz Arduino con Lora .
Fabricación de PCB para LoRa Shield.
Ahora que nuestro circuito está listo, podemos proceder con el diseño de nuestra PCB. Abrí con el software de diseño de PCB y comencé a formar mis pistas. Una vez que se completó el diseño de la PCB, mi placa se parecía a esto como se muestra a continuación.
Ahora que nuestro diseño está listo, es hora de fabricarlos. Para hacer la PCB es bastante fácil, simplemente siga los pasos a continuación.
Paso 1: Ingrese a www.pcbgogo.com , regístrese si es la primera vez. Luego, en la pestaña Prototipo de PCB, ingrese las dimensiones de su PCB, la cantidad de capas y la cantidad de PCB que necesita. Suponiendo que la PCB es de 80 cm × 80 cm, puede establecer las dimensiones como se muestra a continuación.
Paso 2: continúe haciendo clic en el botón Citar ahora . Se lo dirigirá a una página donde establecerá algunos parámetros adicionales si es necesario, como el material utilizado, el espacio entre pistas, etc. Pero, en general, los valores predeterminados funcionarán bien. Lo único que tenemos que considerar aquí es el precio y el tiempo. Como puede ver, el tiempo de construcción es de solo 2-3 días y solo cuesta $ 5 para nuestro PSB. Luego puede seleccionar un método de envío preferido según sus requisitos.
Paso 3: El último paso es cargar el archivo Gerber y proceder con el pago. Para asegurarse de que el proceso sea fluido, PCBGOGO verifica si su archivo Gerber es válido antes de proceder con el pago. De esta manera, puede estar seguro de que su PCB es amigable con la fabricación y lo alcanzará como comprometido.
Ensamblar la PCB
Después de que se ordenó el tablero, me llegó después de algunos días a través del servicio de mensajería en una caja bien embalada y bien etiquetada y, como siempre, la calidad del PCB fue increíble.
Encendí mi varilla de soldadura y comencé a armar el tablero. Dado que las huellas, las almohadillas, las vías y la serigrafía tienen la forma y el tamaño correctos, no tuve problemas para armar el tablero. Una vez que se completó la soldadura, la placa se veía así a continuación, como puede ver, se ajusta perfectamente a mi placa Arduino Uno.
Dado que nuestro proyecto tiene un transmisor Arduino LoRa y un receptor Arduino LoRa , necesitaremos dos pantallas, una para el receptor y la otra para el transmisor. Entonces procedí a soldar otra PCB, tanto la PCB con el módulo LoRa como la LCD se muestran a continuación.
Como puede ver, solo el receptor LoRa shied (izquierdo) tiene una pantalla LCD conectada, el lado del transmisor solo consta del módulo LoRa. Además, conectaremos un módulo GPS al lado del transmisor como se describe a continuación.
Conexión del módulo GPS al transmisor LoRa
El módulo GPS utilizado aquí es el módulo GPS NEO-6M, el módulo puede funcionar con muy baja potencia con un factor de forma pequeño, lo que lo hace adecuado para aplicaciones de seguimiento. Sin embargo, hay muchos otros módulos GPS disponibles que hemos utilizado anteriormente en diferentes tipos de aplicaciones de detección de ubicación y rastreo de vehículos .
El módulo funciona en 5V y se comunica mediante comunicación en serie a 9600 baudios. Por lo tanto, alimentamos el módulo al pin + 5V de Arduino y conectamos el pin Rx y Tx al pin digital D4 y D3 respectivamente, como se muestra a continuación.
Los pines D4 y D3 se configurarán como pines seriales de software. Una vez encendido, el módulo GPS NEO-6M buscará la conexión satelital y automáticamente emitirá toda la información en serie. Estos datos de salida estarán en el formato de oración NMEA que significa National Marine Electronics Association y es el formato estándar para todos los dispositivos GPS. Para obtener más información sobre el uso de GPS con Arduino , siga el enlace. Estos datos serán grandes y la mayoría de las veces tenemos que expresarlos manualmente para obtener el resultado deseado. Por suerte para nosotros, hay una biblioteca llamada TinyGPS ++ que hace todo el trabajo pesado por nosotros. También debe agregar la biblioteca LoRa si aún no lo ha hecho. Así que descarguemos tanto la biblioteca del siguiente enlace
Descargar TinyGPS ++ Arduino Library
Descargar Arduino LoRa Library
El enlace descargará un archivo ZIP que luego se puede agregar al IDE de Arduino siguiendo el comando Boceto -> Incluir biblioteca -> Agregar biblioteca ZIP . Una vez que esté listo con el hardware y la biblioteca, podemos proceder con la programación de nuestras placas Arduino.
Programación de Arduino LoRa como transmisor GPS
Como sabemos, el LoRa es un dispositivo transceptor, lo que significa que puede enviar y recibir información. Sin embargo, en este proyecto de rastreador GPS usaremos un módulo como transmisor para leer la información de coordenadas del GPS y enviarla, mientras que el otro módulo como receptor que recibirá los valores de coordenadas del GPS e imprimirá en la pantalla LCD. El programa para el módulo Transmisor y el Receptor se puede encontrar en la parte inferior de esta página . Asegúrese de haber instalado las bibliotecas para el módulo GPS y el módulo LoRa antes de continuar con el código. En esta sección veremos el código del transmisor.
Como siempre, comenzamos el programa agregando las bibliotecas y pines necesarios. Aquí la biblioteca SPI y LoRa se usa para la comunicación LoRa y la biblioteca TinyGPS ++ y SoftwareSerial se usa para la comunicación GPS. El módulo GPS en mi hardware está conectado a los pines 3 y 4 y, por lo tanto, también lo definimos de la siguiente manera.
#include <SPI.h>
#include <LoRa.h>
#include <TinyGPS ++. h>
#include <SoftwareSerial.h>
// Elija dos pines Arduino para usar para el software serial
int RXPin = 3;
int TXPin = 4;
Dentro de la función de configuración , comenzamos el monitor en serie y también inicializamos el software en serie como «gpsSerial » para la comunicación con nuestro módulo GPS NEO-6M. También tenga en cuenta que he usado 433E6 (433 MHz) como mi frecuencia de funcionamiento LoRa, es posible que deba cambiarlo según el tipo de módulo que esté utilizando.
configuración nula () {
Serial.begin (9600);
gpsSerial.begin (9600);
mientras que (! Serie);
Serial.println ("LoRa Sender");
if (! LoRa.begin (433E6)) {
Serial.println ("¡Error al iniciar LoRa!");
mientras que (1);
}
LoRa.setTxPower (20);
}
Dentro de la función de bucle , verificamos si el módulo GPS está emitiendo algunos datos, en caso afirmativo, leemos todos los datos y los expresamos usando la función gps.encode. Luego verificamos si hemos recibido datos de ubicación válidos utilizando la función gps.location.isValid () .
while (gpsSerial.available ()> 0)
if (gps.encode (gpsSerial.read ()))
if (gps.location.isValid ())
{
Si hemos recibido una ubicación válida, podemos comenzar a transmitir los valores de latitud y longitud . La función gps.location.lat () proporciona las coordenadas de latitud y la función gps.location.lng () proporciona las coordenadas de longitud. Como los imprimiremos en la pantalla LCD de 16 * 2, tenemos que mencionar cuándo pasar a la segunda línea, por lo tanto, usamos la palabra clave «c» para intimar el receptor para imprimir la siguiente información en la línea 2.
LoRa.beginPacket ();
LoRa.print ("Lat:");
LoRa.print (gps.location.lat (), 6);
LoRa.print ("c");
LoRa.print ("Long:");
LoRa.print (gps.location.lng (), 6);
Serial.println ("Enviado a través de LoRa");
LoRa.endPacket ();
Programación de Arduino LoRa como receptor GPS
El código del transmisor ya está enviando el valor de las coordenadas de latitud y longitud, ahora el receptor tiene que leer estos valores e imprimir en la pantalla LCD. De manera similar, aquí agregamos la biblioteca para el módulo LoRa y la pantalla LCD y definimos a qué pines está conectada la pantalla LCD y también inicializamos el módulo LoRa como antes.
#include <SPI.h> // Biblioteca SPI
#include <LoRa.h> // Biblioteca LoRa
#include <LiquidCrystal.h> // Biblioteca para LCD
const int rs = 8, en = 7, d4 = 6, d5 = 5, d6 = 4, d7 = 3; // Mencione el número de pin para la conexión LCD
LiquidCrystal lcd (rs, en, d4, d5, d6, d7); // Inicialice el método LCD
configuración nula () {
Serial.begin (9600); // Serie para depuración
lcd.begin (16, 2); // Inicializar 16 * 2 LCD
lcd.print ("Arduino LoRa"); // Introducción Mensaje línea 1
lcd.setCursor (0, 1);
lcd.print ("Receptor"); // Mensaje de introducción línea 2
delay (2000);
if (! LoRa.begin (433E6)) {// Opere en 433MHz
Serial.println ("¡Error al iniciar LoRa!");
lcd.print ("Error de LoRa");
mientras que (1);
}
}
Dentro de la función de bucle , escuchamos los paquetes de datos del módulo LoRa del transmisor y el tamaño del mismo utilizando la función LoRa.parsePacket () y lo almacenamos en la variable » packetSize «. Si se reciben paquetes, procedemos a leerlos como caracteres e imprimirlos en la pantalla LCD. El programa también verifica si el módulo LoRa está enviando la palabra clave «c», en caso afirmativo, imprime la información restante en la segunda línea.
if (packetSize) {// Si el paquete recibió
Serial.print ("Paquete recibido '");
lcd.clear ();
while (LoRa.available ()) {
char entrante = (char) LoRa.read ();
if (entrante == 'c')
{
lcd.setCursor (0, 1);
}
else
{
lcd.print (entrante);
}
}
Arduino LoRa GPS Tracker trabajando.
Una vez que el hardware y el programa estén listos, podemos cargar ambos códigos en los respectivos módulos Arduino y alimentarlos con un adaptador de 12V o un cable USB. Cuando el transmisor está encendido, puede notar que el LED azul en el módulo GPS parpadea, esto indica que el módulo está buscando una conexión satelital para coordinarse. Mientras tanto, el módulo receptor se encenderá y mostrará un mensaje de bienvenida en la pantalla LCD. Una vez que el transmisor envía la información, el módulo receptor lo mostrará en su pantalla LCD como se muestra a continuación.
Ahora puede moverse con el módulo GPS del transmisor y notará que el receptor actualiza su ubicación. Para saber dónde está exactamente el módulo transmisor, puede leer los valores de latitud y longitud que se muestran en la pantalla LCD e ingresarlo en los mapas de Google para obtener la ubicación en el mapa como se muestra a continuación.
-
Arduino ATmega 2560 R3¡Oferta!
$20.50$19.00 -
Arduino Uno Wifi¡Oferta!
$15.00$13.00 -
Arduino Mini USB Nano V3.0 CH340 Chip Board 5V 16M + Cable¡Oferta!
$9.00$8.50