ESP32 - GPS

Tecnologia

Tutorial ESP32 com GPS

ESP32 - GPS

Aprenda a obter localização a partir de um módulo GPS usando o ESP32 e o módulo NEO-6M GPS. Saiba como obter as coordenadas de GPS (longitude, latitude, altitude), velocidade e data/hora; como conectar o módulo GPS ao ESP32 e como programar o ESP32 passo a passo.

Neste guia, vamos descobrir como:

  • Coordenadas GPS (longitude, latitude, altitude)
  • Velocidade (em quilômetros por hora)
  • Data e hora via GPS

Além disso, exploraremos como calcular a distância entre a posição GPS atual e um conjunto pré-definido de coordenadas GPS (como as coordenadas de Londres).

Introdução ao módulo GPS NEO-6M

Pinagem do módulo:

  • VCC: conectar ao VCC (5V)
  • GND: conectar ao GND (0V)
  • TX: conectar ao RX do ESP32
  • RX: conectar ao TX do ESP32


Código para Leitura de Dados GPS

#include <TinyGPS++.h>
#define GPS_BAUDRATE 9600

TinyGPSPlus gps;

void setup() {
  Serial.begin(9600);
  Serial2.begin(GPS_BAUDRATE, SERIAL_8N1, 16, 17);
  Serial.println(F("ESP32 - módulo GPS"));
}

void loop() {
  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());
        else
          Serial.println(F("INVÁLIDO"));
      } else {
        Serial.println(F("- localização: INVÁLIDA"));
      }

      Serial.print(F("- velocidade: "));
      if (gps.speed.isValid()) {
        Serial.print(gps.speed.kmph());
        Serial.println(F(" km/h"));
      } else {
        Serial.println(F("INVÁLIDO"));
      }

      Serial.print(F("- data/hora GPS: "));
      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("INVÁLIDO"));
      }
      Serial.println();
    }
  }

  if (millis() > 5000 && gps.charsProcessed() < 10)
    Serial.println(F("Nenhum dado GPS recebido: verifique a fiação"));
}
  


Calculando a Distância até Londres

#include <TinyGPS++.h>
#define GPS_BAUDRATE 9600

TinyGPSPlus gps;

const double LONDON_LAT = 51.508131;
const double LONDON_LON = -0.128002;

void setup() {
  Serial.begin(9600);
  Serial2.begin(GPS_BAUDRATE, SERIAL_8N1, 16, 17);
  Serial.println(F("ESP32 - módulo GPS"));
}

void loop() {
  if (Serial2.available() > 0) {
    if (gps.encode(Serial2.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("- distância até Londres: ")); Serial.println(distanceKm);
      } else {
        Serial.println(F("- localização: INVÁLIDA"));
      }
      Serial.println();
    }
  }

  if (millis() > 5000 && gps.charsProcessed() < 10)
    Serial.println(F("Nenhum dado GPS recebido: verifique a fiação"));
}
  


Fonte
https://esp32io.com/tutorials/esp32-gps
Mais Dicas