[exemplo] módulo GPS
Objetivo:
Demonstrar o uso de módulo GPS (Global Positioning System) com Arduino para obter dados GPS.
Lista de material:
![]() |
![]() |
| Fig.1 - Placa Arduino compatível UNO. | |
![]() |
![]() |
| Fig.2 - Módulo GPS com interface UART/TTL. | |
Contextualização:
Sistema de posicionamento global
O sistema de posicionamento global, mais conhecido pela sigla GPS (em inglês Global Positioning System), é um sistema de navegação por satélite que fornece a um aparelho receptor móvel a sua posição, assim como o horário.
Set-up
Bibliotecas
Bibliotecas são coleções de código que perimitem ampliar a capacidade da placa de desenvolvimento facilitando a sua utilização. O IDE Arduino integra um gestor de Bibliotecas cujo uso se exemplifica na Fig.4.
A placa Arduino compatível UNO possui suporte integrado para comunicação série nos pinos 0 e 1. A Biblioteca SoftwareSerial permite estabelecer comunicação serié nos restantes pinos digitais da placa. Neste exemplo sugere-se a utilização desta abordagem para proporcionar que o módulo GPS e a placa possam comunicar.
No exemplo abaixo, os pinos digitais 2 e 3 da placa Arduino compatível UNO são usados como linhas série RX e TX virtuais.
Desta forma estabelece-se a ligação que permite que a placa escute a porta serié do GPS e, quando os dados são recebidos do módulo, eles são enviados para placa. Sendo os dados comunicados pelo módulo GPS tipicamente numa linguagem padrão do GPS é comum o uso de Bibliotecas como a TinyGPSPlus para facilitar o uso da informação disponibilizada pelo módulo GPS num formato legível e útil.
![]() |
![]() |
| (a) | (b) |
| Fig.4 - Exemplo de utilização do gestor de bibliotecas do IDE Arduino para instalação da Biblioteca TinyGPSPlus. | |
códigoPrograma
#include <SoftwareSerial.h>
#include <TinyGPSPlus.h>
SoftwareSerial gpsSerial(2, 3); // RX, TX
TinyGPSPlus gps;
void setup() {
gpsSerial.begin(9600);
Serial.begin(115200);
}
void loop() {
while (gpsSerial.available() > 0){
if (gps.encode(gpsSerial.read()))
displayInfo();
}
if (millis() > 5000 && gps.charsProcessed() < 10)
{
Serial.println(F("No GPS detected: check wiring."));
while(true);
}
}
void displayInfo() {
Serial.print(F("Location: "));
if (gps.location.isValid()) {
Serial.print(gps.location.lat(), 12);
Serial.print(F(","));
Serial.print(gps.location.lng(), 12);
} else {
Serial.print(F("INVALID"));
}
Serial.print(F(" Date/Time: "));
if (gps.date.isValid()) {
Serial.print(gps.date.month());
Serial.print(F("/"));
Serial.print(gps.date.day());
Serial.print(F("/"));
Serial.print(gps.date.year());
} 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());
Serial.print(F(":"));
if (gps.time.minute() < 10) Serial.print(F("0"));
Serial.print(gps.time.minute());
Serial.print(F(":"));
if (gps.time.second() < 10) Serial.print(F("0"));
Serial.print(gps.time.second());
Serial.print(F("."));
if (gps.time.centisecond() < 10) Serial.print(F("0"));
Serial.print(gps.time.centisecond());
} else {
Serial.print(F("INVALID"));
}
Serial.println();
}
[exemplo] módulo GPS
![]() |
![]() |
Outros exemplos
[a] DEEC - FCTUC. Kit Arduino Uno > Instalação. url: https://kb.deec.uc.pt/books/deec/page/instalacao-irK (acedido em 10/04/2024).
[b] DEEC - FCTUC. Kit Arduino Uno > [exemplo] I2C OLED. url: https://kb.deec.uc.pt/books/deec/page/exemplo-i2c-oled (acedido em 10/04/2024).
[c] DEEC - FCTUC. Kit Arduino Uno > [exemplo] rumo ao DEEC. url: https://kb.deec.uc.pt/books/deec/page/exemplo-rumo-ao-deec (acedido em 10/04/2024).
Referências
[1] Arduino. Software Serial Example. url: https://wiki-content.arduino.cc/en/Tutorial/LibraryExamples/SoftwareSerialExample (acedido em 11/04/2024).
[2] Wikipedia. Sistema de posicionamento global. url: https://pt.wikipedia.org/wiki/Sistema_de_posicionamento_global (acedido em 11/04/2024).








