Neste guia, vamos descobrir como extrair as coordenadas GPS (longitude, latitude, altitude), a velocidade GPS (em quilômetros por hora) e as 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).
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 (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 ESP32.
Pino RX: é usado para a comunicação entre o módulo GPS e o ESP32, precisa ser conectado ao pino Serial TX do ESP32.
Diagrama de Ligação
This image is created using Fritzing. Click to enlarge image
Se você não sabe como alimentar o ESP32 e outros componentes, veja as instruções no tutorial a seguir: Como alimentar o ESP32.
Código ESP32
Lendo as coordenadas GPS, a velocidade (km/h) e a data e hora
/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-gps*/#include <TinyGPS++.h>#define GPS_BAUDRATE 9600 // The default baudrate of NEO-6M is 9600TinyGPSPlus gps; // the TinyGPS++ objectvoidsetup() {Serial.begin(9600);Serial2.begin(GPS_BAUDRATE, SERIAL_8N1, 16, 17);Serial.println(F("ESP32 - GPS module"));}voidloop() {if (Serial2.available() > 0) {if (gps.encode(Serial2.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());elseSerial.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"));}
Conecte a placa ESP32 ao seu PC usando um cabo USB Type-C
Abra a Arduino IDE no seu PC.
Selecione a placa ESP32 correta (por exemplo, ESP32 Dev Module) e a porta COM.
Na Arduino IDE, vá em Manage Libraries na barra lateral esquerda
Pesquise por “TinyGPSPlus” e 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-o na Arduino IDE
Clique no botão Upload na Arduino IDE para carregar o código no ESP32
Veja o resultado no Serial Monitor:
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
Ln 11, Col 1
ESP32 Dev Module on COM15
2
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 ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-gps*/#include <TinyGPS++.h>#define GPS_BAUDRATE 9600 // The default baudrate of NEO-6M is 9600TinyGPSPlus gps; // the TinyGPS++ objectconstdouble LONDON_LAT = 51.508131;constdouble LONDON_LON = -0.128002;voidsetup() {Serial.begin(9600);Serial2.begin(GPS_BAUDRATE, SERIAL_8N1, 16, 17);Serial.println(F("ESP32 - GPS module"));}voidloop() {if (Serial2.available() > 0) {if (gps.encode(Serial2.read())) {if (gps.location.isValid()) {double latitude = gps.location.lat();double longitude = gps.location.lng();unsignedlong 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-o na Arduino IDE
Clique no botão Upload na Arduino IDE para carregar o código no ESP32
Veja o resultado no Serial Monitor:
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
Ln 11, Col 1
ESP32 Dev Module on COM15
2
Vídeo
Tutoriais Relacionados
※ NOSSAS MENSAGENS
Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!