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.

Módulo GPS VK2828U7G5LF e Arduino

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:

Pinagem módulo GPS VK2828U7G5LF

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.

GPS - Posicionamento

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.

Circuito GPS Arduino e Display LCD 16x2 I2C

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:

Instalação Biblioteca TinyGPSPlus IDE Arduino

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!

5/5 - (1 vote)