Neste post vamos mostrar como usar o eficiente módulo GPS VK2828U7G5LF com Arduino. Este módulo GPS é muito simples de usar e de conectar, utilizando a interface serial/ttl para comunicação com o microcontrolador.

Na imagem acima mostramos o teste do módulo com um Arduino Uno e um display LCD 16×2 I2C.
O módulo GPS VK2828U7G5LF
O módulo GPS VK2828U7G5LF pesa apenas 14 gramas e se caracteriza por um baixo consumo de corrente (50mA/Hora) e tamanho reduzido, sendo indicado para utilização em projetos compactos.
Na imagem abaixo temos a pinagem do módulo, que não vem com uma barra de pinos soldada. Ao invés disso, temos um conector com 6 fios, o que também facilita na hora de embutir este GPS no seu projeto:
Contando com antena na própria placa, a alimentação é feita com tensões entre 3.3 e 5VDC, mas atenção ao nível de sinal do módulo, que é de 3.3V. Em ligações com placas como Arduino Uno e Mega, por exemplo, isso vai exigir a utilização de um conversor de nível lógico, como o que vamos usar neste post.
A comunicação do módulo GPS VK2828U7G5LF com o microcontrolador é feita pela interface serial (pinos RX e TX). O pino ENABLE serve para habilitar ou desabilitar o GPS (nível alto e baixo, respectivamente). O pino PPS (B) é o Pulse Per Second, utilizado para sincronização do sinal.
No módulo temos ainda os leds Power (vermelho, no lado esquerdo) que indica que o mesmo está energizado, e o led PPS (verde) na parte da frente e também na parte posterior, que pisca quando o módulo realizou a comunicação com os satélites GPS e adquiriu posicionamento.
Conexão módulo GPS com Arduino
Na conexão do módulo com a placa Arduino, vamos conectar os pinos RX e TX nas portas 4 e 3 respectivamente para estabelecer a comunicação entre o GPS e o microcontrolador. Como mencionei anteriormente, vamos usar um conversor de nível lógico entre os componentes, para converter o sinal de 3.3V em 5V e vice-versa.
Os dados serão mostrados em um display LCD 16×2 com adaptador I2C e backligh azul, mas também serão enviados para o Serial Monitor. No circuito não vamos usar os pinos Enable e PPS (B), que permanecem desconectados.
Programa
O programa abaixo usa a biblioteca TinyGPS++ (TinyGPSPlus), usada anteriormente no post Como usar o módulo GPS GY-NEO6MV2, que funciona de maneira semelhante a este módulo que estamos experimentando agora.
Para instalar essa biblioteca, acesse o menu Sketch -> Incluir Biblioteca -> Gerenciar Bibliotecas. Procure por TinyGPS e instale a biblioteca mostrada na imagem abaixo:
Repita o procedimento para a biblioteca LiquidCrystal I2C. Procure por liquidcrystal_i2c e clique em instalar, conforme a imagem abaixo:
Carregue o programa abaixo no Arduino, alterando o endereço na linha 19 (0x3B) para o endereço I2C do display I2C que você estiver utilizando. Se não souber, utilize o I2C scanner para descobrir o endereço do seu display:
//Programa: Modulo GPS VK2828U7G5LF com Arduino
//Autor: Arduino e Cia
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
#include <LiquidCrystal_I2C.h>
//Pinos utilizados para conexao do modulo GPS
static const int RXPin = 4, TXPin = 3;
//Objeto TinyGPS++
TinyGPSPlus gps;
//Conexao serial do modulo GPS
SoftwareSerial Serial_GPS(RXPin, TXPin);
//Inicializa o display no endereco 0x3B
//e define o numero de colunas e linhas do display
LiquidCrystal_I2C lcd(0x3B, 16, 2);
void setup()
{
//Baud rate Arduino
Serial.begin(115200);
//Baud rate Modulo GPS
Serial_GPS.begin(9600);
//Mostra informacoes iniciais no serial monitor
Serial.println(F("Modulo GPS VK2828U7G5LF "));
Serial.print(F("Biblioteca TinyGPS++ v. "));
Serial.println(TinyGPSPlus::libraryVersion());
Serial.println();
//Inicializa o display LCD I2C
lcd.init();
lcd.backlight();
//Informacoes iniciais no display
lcd.setCursor(0, 0);
lcd.print("Lat: ");
lcd.setCursor(0, 1);
lcd.print("Lon: ");
}
void loop()
{
//Conexao com modulo GPS
while (Serial_GPS.available() > 0)
if (gps.encode(Serial_GPS.read()))
{
displayInfo();
}
if (millis() > 5000 && gps.charsProcessed() < 10)
{
Serial.println(F("GPS nao detectado! Verifique as conexoes..."));
while (true);
}
}
void displayInfo()
{
//Mostra informacoes no Serial Monitor e no display LCD
Serial.print(F("Coordenadas (lat/long): "));
if (gps.location.isValid())
{
Serial.print(gps.location.lat(), 6); //latitude
lcd.setCursor(5, 0);
lcd.print(gps.location.lat(), 6);
Serial.print(F(","));
Serial.print(gps.location.lng(), 6); //longitude
lcd.setCursor(5, 1);
lcd.print(gps.location.lng(), 6);
}
else
{
Serial.print(F("INVALID"));
}
Serial.print(F(" Data/Hora: "));
if (gps.date.isValid())
{
Serial.print(gps.date.day()); //dia
Serial.print(F("/"));
Serial.print(gps.date.month()); //mes
Serial.print(F("/"));
Serial.print(gps.date.year()); //ano
}
else
{
Serial.print(F("INVALID"));
}
Serial.print(F(" "));
if (gps.time.isValid())
{
if (gps.time.hour() < 10) Serial.print(F("0"));
Serial.print(gps.time.hour()); //hora
Serial.print(F(":"));
if (gps.time.minute() < 10) Serial.print(F("0"));
Serial.print(gps.time.minute()); //minuto
Serial.print(F(":"));
if (gps.time.second() < 10) Serial.print(F("0"));
Serial.print(gps.time.second()); //segundo
Serial.print(F("."));
if (gps.time.centisecond() < 10) Serial.print(F("0"));
Serial.print(gps.time.centisecond());
}
else
{
Serial.print(F("INVALID"));
}
Serial.println();
}
O módulo GPS VK2828U7G5LF pode demorar alguns minutos para detectar os satélites de posicionamento. Depois disso, os dados serão mostrados no display LCD e também no serial monitor.
Gostou do post módulo GPS VK2828U7G5LF com Arduino? Confira outros posts usando módulo GPS aqui mesmo no Arduino e Cia!