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

1×Arduino Nano ESP32
1×Cabo USB Tipo-A para Tipo-C (para PC com USB-A)
1×Cabo USB Tipo-C para Tipo-C (para PC com USB-C)
1×NEO-6M GPS module
1×Fios Jumper
1×Protoboard
1×(Recomendado) Placa de Expansão com Bornes de Parafuso para Arduino Nano
1×(Recomendado) Placa de Expansão Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentação para Arduino Nano ESP32

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.
Pinagem do módulo GPS NEO-6M

Diagrama de Ligação

Diagrama de Ligação do módulo GPS com o Arduino Nano ESP32

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.
Biblioteca TinyGPS++ do Arduino Nano ESP32
  • 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:
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Nano ESP32
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano ESP32' on 'COM15')
New Line
9600 baud
Ln 11, Col 1
Arduino Nano ESP32 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 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:
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Nano ESP32
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano ESP32' on 'COM15')
New Line
9600 baud
Ln 11, Col 1
Arduino Nano ESP32 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!