- Materiais requisitados
- Arduino LoRa Shield
- Fabricação de PCB para LoRa Shield
- Montagem do PCB
- Conectando o módulo GPS ao transmissor LoRa
- Programando Arduino LoRa como transmissor GPS
- Programando Arduino LoRa como receptor GPS
- Arduino LoRa GPS Tracker funcionando
Saber o paradeiro de um determinado objeto / pessoa sempre foi reconfortante. Hoje, o GPS está sendo amplamente usado em aplicativos de gerenciamento de ativos, como Rastreamento de Veículos, Rastreamento de Frotas, Monitoramento de Ativos, Rastreamento de Pessoas, Rastreador de Animais, etc. Considerando ambos, LoRa parece ser a escolha perfeita, pois tem um consumo de energia muito baixo e pode operar em longas distâncias. Portanto, neste tutorial iremos construir um sistema de rastreamento GPS usando LoRa, o sistema consistirá em um Transmissor que irá ler as informações de localização do módulo GPS NEO-6Me transmiti-lo sem fio por Lora. A parte do receptor receberá as informações e as exibirá em um display LCD 16x2. Se você for novo no LoRa, aprenda sobre a tecnologia LoRa e LoRaWAN e como ela pode ser conectada ao Arduino antes de prosseguir.
Para manter as coisas simples e econômicas para este projeto, não usaremos um gateway LoRa. Em vez disso, realizará comunicação ponto a ponto entre o transmissor e o receptor. No entanto, se você deseja um alcance global, pode substituir o receptor por um LoRa Gateway. Além disso, como sou da Índia, usaremos o módulo LoRa de 433 MHz, que é a banda ISM legal aqui, portanto, talvez você tenha que selecionar um módulo com base no seu país. Dito isso, vamos começar…
Materiais requisitados
- Arduino Lora Shield - 2Nos (design PCB disponível para download)
- Arduino Uno - 2Nos
- Módulo LoRa SX1278 433 MHz - 2
- Antena Lora 433 MHz
- Módulo NEO-6M GPS
- Módulo Display LCD
- Fios de conexão
Arduino LoRa Shield
Para facilitar a construção com o LoRa, projetamos um LoRa Arduino Shield para este projeto. Esta blindagem consiste no SX1278 433MHz com um regulador de 3,3 V projetado usando o regulador variável LM317. O Shield ficará diretamente sobre o Arduino, fornecendo recursos LoRa. Este escudo LoRa será útil quando você precisar implantar nós de detecção LoRa ou criar uma rede mesh LoRa. O diagrama de circuito completo para o LoRa Arduino Shield é dado abaixo
A blindagem consiste em um conector de 12 V que, quando energizado, será usado para regular 3,3 V para o módulo LoRa usando o regulador LM317. Ele também será usado para alimentar o Arduino UNO por meio do pino Vin e os 5 V regulados do Arduino são usados para alimentar o LCD no escudo. A tensão de saída do LM317 é fixada em 3,3 V usando o resistor R1 e R2 respectivamente, o valor desses resistores pode ser calculado usando a Calculadora LM317.
Como o módulo LoRa consome muito pouca energia, ele também pode ser alimentado diretamente do pino de 3,3 V do Arduino, mas usamos um projeto de regulador externo, já que o LM317 é mais confiável do que o regulador de tensão integrado. O escudo também possui um potenciômetro que pode ser usado para ajustar o brilho do LCD. A conexão do módulo LoRa com o Arduino é semelhante ao que fizemos em nosso tutorial anterior de interface do Arduino com o Lora.
Fabricação de PCB para LoRa Shield
Agora que nosso circuito está pronto, podemos prosseguir com o projeto de nosso PCB. Abri pelo software de design PCB e comecei a formar minhas trilhas. Assim que o design da PCB foi concluído, minha placa parecia algo assim mostrado abaixo
Você também pode baixar os arquivos de design no formato GERBER e fabricá-lo para obter suas placas. O link do arquivo Gerber é fornecido abaixo
Baixe o arquivo Gerber para o Arduino LoRa Shield
Agora que o nosso Design está pronto, é hora de fabricá-los. Para fazer o PCB é muito fácil, basta seguir as etapas abaixo
Etapa 1: Acesse www.pcbgogo.com, inscreva-se se esta for sua primeira vez. Então, na guia Protótipo de PCB, insira as dimensões de seu PCB, o número de camadas e o número de PCB que você precisa. Assumindo que o PCB tem 80 cm × 80 cm, você pode definir as dimensões conforme mostrado abaixo.
Etapa 2: Continue clicando no botão Citar Agora . Você será levado a uma página onde definir alguns parâmetros adicionais, se necessário, como o material usado, espaçamento entre pistas, etc. Mas principalmente os valores padrão funcionarão bem. A única coisa que devemos considerar aqui é o preço e o tempo. Como você pode ver, o Build Time é de apenas 2-3 dias e custa apenas US $ 5 para nosso PSB. Você pode então selecionar um método de envio preferido com base em sua necessidade.
Etapa 3: A última etapa é fazer o upload do arquivo Gerber e prosseguir com o pagamento. Para garantir que o processo está tranquilo, o PCBGOGO verifica se seu arquivo Gerber é válido antes de prosseguir com o pagamento. Dessa forma, você pode ter certeza de que seu PCB é amigável para a fabricação e chegará até você quando estiver comprometido.
Montagem do PCB
Depois que a placa foi encomendada, ela chegou até mim depois de alguns dias, embora fosse enviada em uma caixa bem embalada e bem etiquetada e, como sempre, a qualidade do PCB era incrível.
Liguei minha haste de solda e comecei a montar a placa. Como as pegadas, pads, vias e silkscreen são perfeitamente do tamanho e formato corretos, não tive problemas para montar a placa. Depois que a soldagem foi concluída, a placa ficou assim abaixo, como você pode ver, ela se encaixa perfeitamente na minha placa Arduino Uno.
Como nosso projeto tem um transmissor Arduino LoRa e um receptor Arduino LoRa, precisaremos de duas blindagens, uma para o receptor e outra para o transmissor. Então eu continuei soldando outra placa de circuito impresso, a placa de circuito impresso com módulo LoRa e o LCD são mostrados abaixo.
Como você pode ver, apenas o receptor LoRa shied (à esquerda) possui um LCD conectado, o lado do transmissor consiste apenas no módulo LoRa. Ainda conectaremos um módulo GPS ao lado do transmissor, conforme discutido abaixo.
Conectando o módulo GPS ao transmissor LoRa
O módulo GPS usado aqui é o módulo NEO-6M GPS, o módulo pode operar com energia muito baixa com um fator de forma pequeno, tornando-o adequado para aplicações de rastreamento. No entanto, existem muitos outros módulos GPS disponíveis que usamos anteriormente em diferentes tipos de aplicativos de rastreamento de veículos e detecção de localização.
O módulo opera em 5 V e se comunica usando comunicação serial a 9600 baud rate. Portanto, ligamos o módulo ao pino de + 5V do Arduino e conectamos o pino Rx e Tx ao pino digital D4 e D3 respectivamente, conforme mostrado abaixo
Os pinos D4 e D3 serão configurados como pinos seriais de software. Depois de ligado, o módulo NEO-6M GPS procurará a conexão do satélite e enviará automaticamente todas as informações em série. Esses dados de saída estarão no formato de frase NMEA, que significa National Marine Electronics Association, e é o formato padrão para todos os dispositivos GPS. Para saber mais sobre como usar GPS com Arduino, siga o link. Esses dados serão grandes e, na maioria das vezes, temos que formá-los manualmente para obter o resultado desejado. Para nossa sorte, existe uma biblioteca chamada TinyGPS ++ que faz todo o trabalho pesado para nós. Você também deve adicionar a biblioteca LoRa, se ainda não o fez. Então, vamos baixar a biblioteca do link abaixo
Baixe a biblioteca TinyGPS ++ Arduino
Baixe a biblioteca Arduino LoRa
O link fará o download de um arquivo ZIP que pode ser adicionado ao IDE do Arduino, seguindo o comando Sketch -> Incluir Biblioteca -> Adicionar biblioteca ZIP . Assim que estiver pronto com o hardware e a biblioteca, podemos prosseguir com a programação de nossas placas Arduino.
Programando Arduino LoRa como transmissor GPS
Como sabemos, o LoRa é um dispositivo transceptor, o que significa que pode enviar e receber informações. No entanto, neste projeto de rastreador GPS, usaremos um módulo como transmissor para ler as informações de coordenadas do GPS e enviá-las, enquanto o outro módulo como um receptor que receberá os valores das coordenadas GPS e os imprimirá no LCD. O programa para o módulo transmissor e receptor pode ser encontrado na parte inferior desta página. Certifique-se de ter instalado as bibliotecas do módulo GPS e do módulo LoRa antes de prosseguir com o código. Nesta seção, veremos o código do transmissor.
Como sempre, começamos o programa adicionando as bibliotecas e pinos necessários. Aqui, a biblioteca SPI e LoRa é usada para comunicação LoRa e a biblioteca TinyGPS ++ e SoftwareSerial é usada para comunicação GPS. O módulo GPS em meu hardware está conectado aos pinos 3 e 4 e, portanto, também definimos isso da seguinte maneira
#incluir
Dentro da função de configuração , iniciamos o monitor serial e também inicializamos o serial do software como “gpsSerial ” para comunicação com nosso módulo GPS NEO-6M. Observe também que usei 433E6 (433 MHz) como minha frequência operacional LoRa, você pode ter que alterá-la com base no tipo de módulo que está usando.
void setup () { Serial.begin (9600); gpsSerial.begin (9600); while (! Serial); Serial.println ("LoRa Sender"); if (! LoRa.begin (433E6)) { Serial.println ("Falha ao iniciar LoRa!"); enquanto (1); } LoRa.setTxPower (20); }
Dentro da função de loop , verificamos se o módulo GPS está emitindo alguns dados, se sim, lemos todos os dados e os expressamos usando a função gps.encode. Em seguida, verificamos se recebemos dados de localização válidos usando a função gps.location.isValid () .
while (gpsSerial.available ()> 0) if (gps.encode (gpsSerial.read ())) if (gps.location.isValid ()) {
Se tivermos recebido uma localização válida, podemos começar a transmitir os valores de latitude e longitude. A função gps.location.lat () fornece a coordenada de latitude e a função gps.location.lng () fornece a coordenada de longitude. Como iremos imprimi-los no LCD 16 * 2, temos que mencionar quando mudar para a segunda linha, portanto, usamos a palavra-chave “c” para sugerir que o receptor imprima as seguintes informações na linha 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 via LoRa"); LoRa.endPacket ();
Programando Arduino LoRa como receptor GPS
O código do transmissor já está enviando o valor das coordenadas de latitude e longitude, agora o receptor deve ler esses valores e imprimir no LCD. Da mesma forma, aqui adicionamos a biblioteca para o módulo LoRa e o display LCD e definimos a quais pinos o LCD está conectado e também inicializamos o módulo LoRa como antes.
#incluir
Dentro da função de loop , ouvimos os pacotes de dados do módulo LoRa do transmissor e o tamanho dele usando a função LoRa.parsePacket () e os armazenamos na variável “ packetSize ”. Se os pacotes forem recebidos, procedemos com a leitura deles como caracteres e os imprimimos no LCD. O programa também verifica se o módulo LoRa está enviando a palavra-chave “c”, se sim, então imprime as informações restantes na segunda linha.
if (packetSize) {// Se o pacote foi recebido Serial.print ("Pacote recebido '"); lcd.clear (); while (LoRa.available ()) { char entrando = (char) LoRa.read (); if (entrando == 'c') { lcd.setCursor (0, 1); } else { lcd.print (entrada); } }
Arduino LoRa GPS Tracker funcionando
Assim que o hardware e o programa estiverem prontos, podemos fazer upload dos códigos nos respectivos módulos Arduino e alimentá-los usando um adaptador de 12 V ou cabo USB. Quando o transmissor é ligado, você pode notar o LED azul no módulo GPS piscando, isso indica que o módulo está procurando uma conexão de satélite para obter as coordenadas. Enquanto isso, o módulo receptor será ligado e exibirá uma mensagem de boas-vindas na tela LCD. Assim que o transmissor enviar as informações, o módulo receptor irá exibi-las em seu LCD, conforme mostrado abaixo
Agora você pode se mover com o módulo GPS do transmissor e você notará o receptor atualizando sua localização. Para saber onde exatamente está o módulo transmissor, você pode ler os valores de latitude e longitude exibidos no LCD e inseri-los no Google Maps para obter a localização no mapa conforme mostrado abaixo.
O trabalho completo também pode ser encontrado no vídeo fornecido no final desta página. Espero que você tenha entendido o tutorial e tenha gostado de construir algo útil com ele. Se você tiver alguma dúvida, pode deixá-la na seção de comentários abaixo ou usar nossos fóruns para outras dúvidas técnicas.