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!