Arduino Nano ESP32 - GPS
Neste guia, vamos descobrir como extrair coordenadas GPS (longitude, latitude, altitude), velocidade GPS (em quilômetros por hora) e informações de data e hora do módulo GPS NEO-6M. Além disso, vamos explorar o processo de calcular a distância entre a posição GPS atual e um conjunto predefinido de coordenadas GPS (como as coordenadas de Londres).
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.
Sobre o módulo GPS NEO-6M
Pinagem
O módulo GPS NEO-6M tem 4 pinos:
- Pino VCC: precisa ser conectado ao VCC (3.3V ou 5V)
- Pino GND: precisa ser conectado ao GND (0V)
- Pino TX: é usado para a comunicação entre o módulo GPS e o ESP32, precisa ser conectado ao pino Serial RX do Arduino Nano ESP32.
- Pino RX: é usado para a comunicação entre o módulo GPS e o ESP32, precisa ser conectado ao pino Serial TX do Arduino Nano ESP32.

Diagrama de Ligação

This image is created using Fritzing. Click to enlarge image
Código do Arduino Nano ESP32
Lendo as coordenadas GPS, a velocidade (km/h) e a data e hora
/*
* Este código de Arduino Nano ESP32 foi desenvolvido por pt.newbiely.com
* Este código de Arduino Nano ESP32 é disponibilizado ao público sem nenhuma restrição.
* Para tutoriais completos e diagramas de ligação, visite:
* https://pt.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-gps
*/
#include <TinyGPS++.h>
#define RX1PIN D2 // The Arduino Nano ESP32 pin connected to the TX of the GPS module
#define TX1PIN D3 // The Arduino Nano ESP32 pin connected to the RX of the GPS module
TinyGPSPlus gps; // The TinyGPS++ object
void setup() {
Serial.begin(9600);
Serial1.begin(9600, SERIAL_8N1, RX1PIN, TX1PIN);
Serial.println(F("Arduino - GPS module"));
}
void loop() {
if (Serial1.available() > 0) {
if (gps.encode(Serial1.read())) {
if (gps.location.isValid()) {
Serial.print(F("- latitude: "));
Serial.println(gps.location.lat());
Serial.print(F("- longitude: "));
Serial.println(gps.location.lng());
Serial.print(F("- altitude: "));
if (gps.altitude.isValid())
Serial.println(gps.altitude.meters());
else
Serial.println(F("INVALID"));
} else {
Serial.println(F("- location: INVALID"));
}
Serial.print(F("- speed: "));
if (gps.speed.isValid()) {
Serial.print(gps.speed.kmph());
Serial.println(F(" km/h"));
} else {
Serial.println(F("INVALID"));
}
Serial.print(F("- GPS date&time: "));
if (gps.date.isValid() && gps.time.isValid()) {
Serial.print(gps.date.year());
Serial.print(F("-"));
Serial.print(gps.date.month());
Serial.print(F("-"));
Serial.print(gps.date.day());
Serial.print(F(" "));
Serial.print(gps.time.hour());
Serial.print(F(":"));
Serial.print(gps.time.minute());
Serial.print(F(":"));
Serial.println(gps.time.second());
} else {
Serial.println(F("INVALID"));
}
Serial.println();
}
}
if (millis() > 5000 && gps.charsProcessed() < 10)
Serial.println(F("No GPS data received: check wiring"));
}
Passos Rápidos
Para começar com o Arduino Nano ESP32, siga estes passos:
- Se você é novo no Arduino Nano ESP32, consulte o tutorial sobre como configurar o ambiente para o Arduino Nano ESP32 no Arduino IDE.
- Faça a ligação dos componentes de acordo com o diagrama fornecido.
- Conecte a placa Arduino Nano ESP32 ao seu computador usando um cabo USB.
- Abra o Arduino IDE no seu computador.
- Selecione a placa Arduino Nano ESP32 e a porta COM correspondente.
- Clique no ícone Libraries na barra esquerda do Arduino IDE.
- Pesquise “TinyGPSPlus”, depois encontre a biblioteca TinyGPSPlus de Mikal Hart
- Clique no botão Install para instalar a biblioteca TinyGPSPlus.

- Copie o código acima e abra com o Arduino IDE
- Clique no botão Upload do Arduino IDE para fazer o upload do código para o Arduino Nano ESP32
- Veja o resultado no Serial Monitor:
8
Serial.println("Hello World!");
Message (Enter to send message to 'Arduino Nano ESP32' on 'COM15')
New Line
9600 baud
Calculando a distância da localização atual até uma localização predefinida
O código abaixo calcula a distância entre a localização atual e Londres (lat:51.508131 , long: -0.128002)
/*
* Este código de Arduino Nano ESP32 foi desenvolvido por pt.newbiely.com
* Este código de Arduino Nano ESP32 é disponibilizado ao público sem nenhuma restrição.
* Para tutoriais completos e diagramas de ligação, visite:
* https://pt.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-gps
*/
#include <TinyGPS++.h>
#define RX1PIN D2 // The Arduino Nano ESP32 pin connected to the TX of the GPS module
#define TX1PIN D3 // The Arduino Nano ESP32 pin connected to the RX of the GPS module
TinyGPSPlus gps; // The TinyGPS++ object
const double LONDON_LAT = 51.508131;
const double LONDON_LON = -0.128002;
void setup() {
Serial.begin(9600);
Serial1.begin(9600, SERIAL_8N1, RX1PIN, TX1PIN);
Serial.println(F("Arduino - GPS module"));
}
void loop() {
if (Serial1.available() > 0) {
if (gps.encode(Serial1.read())) {
if (gps.location.isValid()) {
double latitude = gps.location.lat();
double longitude = gps.location.lng();
unsigned long distanceKm = TinyGPSPlus::distanceBetween(latitude, longitude, LONDON_LAT, LONDON_LON) / 1000;
Serial.print(F("- latitude: "));
Serial.println(latitude);
Serial.print(F("- longitude: "));
Serial.println(longitude);
Serial.print(F("- distance to London: "));
Serial.println(distanceKm);
} else {
Serial.println(F("- location: INVALID"));
}
Serial.println();
}
}
if (millis() > 5000 && gps.charsProcessed() < 10)
Serial.println(F("No GPS data received: check wiring"));
}
Passos Rápidos
- Copie o código acima e abra com o Arduino IDE
- Clique no botão Upload do Arduino IDE para fazer o upload do código para o Arduino Nano ESP32
- Veja o resultado no Serial Monitor:
8
Serial.println("Hello World!");
Message (Enter to send message to 'Arduino Nano ESP32' on 'COM15')
New Line
9600 baud