Um rastreador GPS para drones ajuda a acompanhar a localização desses aparelhos de forma precisa, o que é importante para evitar perdas e facilitar o controle, seja em usos simples ou em aplicações profissionais como agricultura e mapeamento.
Com o crescimento do uso de drones, ter uma solução que combine GPS com uma comunicação eficiente e de baixo consumo de energia faz bastante sentido. A tecnologia LoRa, por exemplo, permite enviar dados a longas distâncias sem gastar muita bateria, o que é ideal para esse tipo de projeto.
Neste texto, vamos mostrar como funciona um rastreador GPS para drones usando o módulo gps GY-6MV2 junto com a comunicação LoRa. Também vamos compartilhar um projeto que já testamos, com códigos para o emissor e receptor, para facilitar a sua implementação.
O que é um rastreador GPS para drones?
Um rastreador GPS para drones é um dispositivo que permite saber a localização exata do drone em tempo real. Ele utiliza sinais de satélite para captar as coordenadas de onde o drone está, geralmente em latitude e longitude, e envia esses dados para uma estação base ou para o usuário.

Esse tipo de rastreador é bastante útil para diversas situações: pode ajudar a recuperar um drone em caso de perda, garantir que ele esteja seguindo a rota planejada ou monitorar a velocidade e altitude durante o voo. Além disso, o rastreamento pode ser feito via diferentes tecnologias de comunicação, como Wi-Fi, GSM ou, no nosso caso, LoRa, que oferece uma boa combinação entre alcance e baixo consumo de energia.
Em resumo, o rastreador GPS é um componente fundamental para quem quer mais controle e segurança no uso dos drones, principalmente em ambientes onde o sinal tradicional pode não chegar tão bem.
Como funciona um rastreador GPS para drones via LoRa?
O funcionamento de um rastreador GPS para drones via LoRa é relativamente simples, mas eficiente. Basicamente, o sistema é composto por dois módulos principais: o GPS, que captura a localização do drone, e o LoRa, que transmite essa informação para uma estação base ou receptor.

No drone, o módulo GPS — como o GY-6MV2 — recebe os sinais dos satélites e calcula as coordenadas exatas (latitude, longitude), além de outras informações como altitude, velocidade e horário. Esses dados são processados por um microcontrolador, neste caso o NodeMCU ESP8266, que organiza as informações para envio.
Para a comunicação, utilizamos o Módulo RF Wireless LoRa 915MHz com Antena, que permite transmitir os dados do GPS a longas distâncias com baixo consumo de energia, ideal para não comprometer a bateria do drone.
Do lado da estação base, outro NodeMCU ESP8266 equipado com um módulo LoRa recebe as informações enviadas pelo drone. Esses dados podem ser visualizados em um computador, smartphone ou outro dispositivo, possibilitando o monitoramento em tempo real da localização e demais informações do drone.
Essa combinação de módulos LoRa SX1276 com os NodeMCU ESP8266 cria um sistema eficiente, capaz de acompanhar o drone mesmo em ambientes onde outras tecnologias, como Wi-Fi ou GSM, têm alcance limitado ou consomem mais energia.
Como funciona o módulo GPS GY-6MV2?
O módulo GPS GY-6MV2 é o componente responsável por captar os sinais dos satélites e fornecer as coordenadas precisas para o rastreador. Ele utiliza o chipset u-blox NEO-6M, que é conhecido por sua boa precisão e estabilidade na recepção dos sinais.

Esse módulo oferece uma série de vantagens importantes para projetos com drones:
- Possui uma antena externa, que melhora significativamente a recepção do sinal, especialmente em áreas abertas ou com obstáculos.
- Se comunica via interface UART, facilitando a integração com microcontroladores como o NodeMCU ESP8266.
- Tem uma taxa de atualização de até 5 vezes por segundo, garantindo dados atualizados com frequência suficiente para rastreamento em tempo real.
- É relativamente compacto e fácil de utilizar, ideal para projetos que precisam de uma solução prática e confiável.
Por essas características, o GY-6MV2 é uma escolha adequada para sistemas de rastreamento GPS em drones, principalmente quando combinado com a tecnologia LoRa para transmissão dos dados.
Materiais necessários
Antes de começar a montar seu rastreador GPS para drones via LoRa, é importante reunir os materiais certos para garantir que o projeto funcione corretamente. Veja os principais componentes utilizados:
- Módulo GPS GY-NEO6MV2 com Antena
- Módulo RF Wireless LoRa 915MHz com Antena (2 unidades)
- Placa ESP8266 NodeMcu ESP-12 (2 unidades)
- Cabo Micro USB
- Jumpers Macho-Macho
- Protoboard (2 unidades)
Rastreador GPS para drones via LoRa: Circuito
O circuito do transmissor é composto pelo NodeMCU ESP8266 conectado ao módulo GPS GY-6MV2 e ao módulo LoRa SX1276. O GPS fornece as coordenadas e o NodeMCU processa essas informações, enviando-as via LoRa para o receptor.

O receptor utiliza outro NodeMCU ESP8266 conectado ao módulo LoRa SX1276, responsável por receber os dados enviados pelo drone. Após a recepção, o NodeMCU encaminha as informações para um computador.

Lembre-se de verificar as conexões e a alimentação dos módulos para evitar falhas no sistema. Com o circuito montado corretamente, o próximo passo será a programação dos dispositivos.
Rastreador GPS para drones via LoRa: Código transmissor
No emissor, o código faz a leitura dos dados do módulo GPS GY-6MV2 — como latitude, longitude, altitude, velocidade e horário — e envia essas informações usando o módulo LoRa SX1276 via NodeMCU ESP8266. O envio acontece periodicamente para garantir que a localização do drone seja atualizada em tempo real.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
include <SPI.h> // Biblioteca para comunicação SPI #include <LoRa.h> // Biblioteca para comunicação LoRa #include <SoftwareSerial.h> // Biblioteca para criar porta serial via software #include <TinyGPS++.h> // Biblioteca para manipulação de dados GPS // Definição dos pinos utilizados pelo módulo LoRa #define CS 15 // Chip Select - define qual dispositivo SPI está ativo #define RST 16 // Reset - reinicia o módulo LoRa #define DIO0 5 // Pino de interrupção digital do LoRa #define BAND 915E6 // Frequência de operação do LoRa (915 MHz, comum no Brasil) // Definição dos pinos para comunicação com o GPS via SoftwareSerial #define RX 0 // Pino RX do NodeMCU, conectado ao TX do módulo GPS #define TX 2 // Pino TX do NodeMCU, conectado ao RX do módulo GPS #define GPS_BAUD 9600 // Taxa de comunicação padrão do módulo GPS // Instanciação dos objetos das bibliotecas TinyGPSPlus gps; // Objeto para lidar com os dados do GPS SoftwareSerial gpsSerial(RX, TX); // Porta serial para comunicação com o GPS void setup() { Serial.begin(115200); // Inicializa a porta serial para monitoramento while (!Serial); // Aguarda até que a porta serial esteja pronta Serial.println("GPS + LoRa Sender"); // Inicializa a comunicação com o GPS gpsSerial.begin(GPS_BAUD); // Inicializa a comunicação SPI e configura os pinos do LoRa SPI.begin(); LoRa.setPins(CS, RST, DIO0); // Tenta inicializar o módulo LoRa na frequência definida if (!LoRa.begin(BAND)) { Serial.println("LoRa init failed!"); // Mensagem de erro se falhar while (1); // Fica preso aqui caso não consiga iniciar } Serial.println("LoRa init OK!"); // Confirmação de que o LoRa foi iniciado } void loop() { // Realiza a leitura do GPS durante 1 segundo unsigned long start = millis(); while (millis() - start < 1000) { while (gpsSerial.available()) { gps.encode(gpsSerial.read()); // Decodifica os dados recebidos do GPS } } // Verifica se os dados de localização são válidos if (gps.location.isValid()) { String payload = ""; // Variável que armazenará os dados formatados // Adiciona latitude e longitude com 6 casas decimais payload += "LAT:" + String(gps.location.lat(), 6); payload += ",LON:" + String(gps.location.lng(), 6); // Adiciona altitude em metros com 2 casas decimais payload += ",ALT:" + String(gps.altitude.meters(), 2); // Adiciona velocidade em km/h com 2 casas decimais payload += ",SPD:" + String(gps.speed.kmph(), 2); // Adiciona o horário UTC no formato HH:MM:SS char timeStr[9]; snprintf(timeStr, sizeof(timeStr), "%02d:%02d:%02d", gps.time.hour(), gps.time.minute(), gps.time.second()); payload += ",TIME:" + String(timeStr); // Inicia o envio do pacote LoRa LoRa.beginPacket(); LoRa.print(payload); LoRa.endPacket(); // Finaliza o envio // Exibe o conteúdo enviado no monitor serial Serial.print("Enviado: "); Serial.println(payload); } else { // Mensagem caso o GPS ainda não tenha fixado posição Serial.println("GPS sem sinal válido."); } delay(2000); // Aguarda 2 segundos antes de realizar nova leitura/envio } |
Rastreador GPS para drones via LoRa: Código receptor
Já no receptor, o código recebe os pacotes LoRa enviados pelo drone, faz a leitura dos dados e exibe no monitor serial as informações de localização e outras variáveis, possibilitando o acompanhamento remoto.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
#include <SPI.h> // Biblioteca para comunicação SPI #include <LoRa.h> // Biblioteca para comunicação via LoRa // Definição dos pinos utilizados pelo módulo LoRa #define CS 15 // Chip Select - seleciona o módulo SPI ativo #define RST 16 // Reset - permite reiniciar o módulo LoRa #define DIO0 5 // Pino de interrupção digital do LoRa #define BAND 915E6 // Frequência de operação do LoRa (915 MHz) // Função de configuração inicial void setup() { Serial.begin(115200); // Inicializa a comunicação serial para monitoramento while (!Serial); // Aguarda a inicialização completa da serial Serial.println("LoRa Receiver"); // Mensagem indicando que o receptor foi iniciado // Inicializa a comunicação SPI SPI.begin(); // Define os pinos utilizados pelo módulo LoRa LoRa.setPins(CS, RST, DIO0); // Tenta inicializar o módulo LoRa na frequência especificada if (!LoRa.begin(BAND)) { Serial.println("LoRa init failed!"); // Mensagem de erro se falhar while (1); // Fica preso aqui se a inicialização falhar } Serial.println("LoRa init OK!"); // Mensagem de sucesso na inicialização } void loop() { // Verifica se há um pacote de dados LoRa recebido int packetSize = LoRa.parsePacket(); if (packetSize) { String incoming = ""; // Variável para armazenar os dados recebidos // Lê todos os bytes disponíveis e monta a string completa while (LoRa.available()) { incoming += (char)LoRa.read(); } Serial.println("Pacote recebido:"); Serial.println(incoming); // Exibe a string recebida no monitor serial // Tentativa de extrair os dados do pacote recebido // O formato esperado é: LAT:xx.xxxxxx,LON:xx.xxxxxx,ALT:xx.xx,SPD:xx.xx,TIME:hh:mm:ss float lat = 0, lon = 0, alt = 0, spd = 0; // Variáveis para armazenar os valores extraídos String timeStr = ""; // Variável para armazenar o horário // Procura os índices onde começam as informações na string int idxLat = incoming.indexOf("LAT:"); int idxLon = incoming.indexOf("LON:"); int idxAlt = incoming.indexOf("ALT:"); int idxSpd = incoming.indexOf("SPD:"); int idxTime = incoming.indexOf("TIME:"); // Verifica se todas as informações foram encontradas if (idxLat != -1 && idxLon != -1 && idxAlt != -1 && idxSpd != -1 && idxTime != -1) { // Extrai cada informação usando substring e converte para o tipo adequado lat = incoming.substring(idxLat + 4, incoming.indexOf(",", idxLat)).toFloat(); lon = incoming.substring(idxLon + 4, incoming.indexOf(",", idxLon)).toFloat(); alt = incoming.substring(idxAlt + 4, incoming.indexOf(",", idxAlt)).toFloat(); spd = incoming.substring(idxSpd + 4, incoming.indexOf(",", idxSpd)).toFloat(); timeStr = incoming.substring(idxTime + 5); // Horário como string // Exibe os dados extraídos no monitor serial Serial.println("Dados extraídos:"); Serial.print("Latitude: "); Serial.println(lat, 6); Serial.print("Longitude: "); Serial.println(lon, 6); Serial.print("Altitude (m): "); Serial.println(alt, 2); Serial.print("Velocidade (km/h): "); Serial.println(spd, 2); Serial.print("Horário UTC: "); Serial.println(timeStr); Serial.println(); } else { // Caso não consiga identificar corretamente o formato dos dados Serial.println("Erro ao analisar os dados recebidos."); } } } |
Rastreador GPS para drones via LoRa: Resultado
Com todo o circuito montado, o código carregado e os módulos em funcionamento, foi possível obter um resultado bastante satisfatório. O rastreador GPS para drones via LoRa transmitiu as informações de localização de forma estável e com um bom alcance, evidenciando a eficiência da comunicação entre os módulos.
Na imagem abaixo, é possível observar o transmissor montado. O módulo GPS coleta os dados de localização — como latitude, longitude, altitude e velocidade — e o módulo LoRa, acoplado ao NodeMCU, é responsável por enviar essas informações para a base receptora.

Já na base receptora, conforme mostrado nas imagens a seguir, o módulo LoRa recebe os pacotes de dados e o NodeMCU exibe as informações no monitor serial. Dessa forma, conseguimos visualizar de maneira clara os dados transmitidos, permitindo a análise detalhada do trajeto do drone.

No vídeo abaixo, é possível ver o sistema operando em tempo real: o transmissor enviando os dados e o receptor exibindo as informações quase instantaneamente.
Esse funcionamento demonstra a robustez e a eficiência da comunicação via LoRa, possibilitando o rastreamento preciso do drone mesmo a longas distâncias.
Conclusão
Neste projeto, mostramos como é possível construir um rastreador GPS para drones utilizando comunicação via LoRa, uma tecnologia que se destaca pela longa distância e baixo consumo de energia.
Com poucos componentes — como o módulo GPS GY-6MV2, dois NodeMCU ESP8266 e módulos LoRa SX1276 — conseguimos montar um sistema eficiente para capturar e transmitir dados essenciais de localização, velocidade e altitude em tempo real.
Além de ser uma solução acessível e relativamente simples de implementar, esse rastreador pode ser facilmente adaptado para outros tipos de veículos ou aplicações que demandem monitoramento remoto, como rastreamento de cargas, monitoramento ambiental ou sistemas de segurança.
Ficou com alguma dúvida, tem sugestões ou quer compartilhar sua experiência? Deixe seu comentário abaixo, vamos adorar ler! E não se esqueça de nos seguir no Instagram para acompanhar mais conteúdos como este.