GPS
Este exemplo apresenta a sincronização com o GPS.
Vídeo explicativo
Exemplo
/*
Autor: João Vitor Alvares
Versão: 1.0
Objetivo: Sincronizar o GPS
*/
// To LED RGB
#include <Adafruit_NeoPixel.h> // Biblioteca Adafruit_NeoPixel-master.zip na pasta ou versão: 1.9.0 por Adafruit
// To ESP32
#include <Arduino.h> // Biblioteca nativa do ESP32
// To GPS
#include <TinyGPS++.h> // Biblioteca TinyGPS++ versão: 1.8.3 por Mikal Hart
// To serial
#include <SoftwareSerial.h>
// Hardware mapping
#define pinToLED 2
#define RXD2 16
#define TXD2 17
#define pinRSTGPS 4
// To RGB
#define NUMPIXELS 1
#define RED pixels1.Color(255, 0, 0) // Red
#define GREEN pixels1.Color(0, 255, 0) // Green
#define BLUE pixels1.Color(0, 0, 255) // Blue
#define WHITE pixels1.Color(255, 255, 255) // White
#define OFF_COLORS pixels1.Color(0, 0, 0) // OFF
#define MAXCOLORS 5
void readGPS();
// To RGB
Adafruit_NeoPixel pixels1(NUMPIXELS, pinToLED, NEO_GRB + NEO_KHZ800);
// To GPS
HardwareSerial neogps(2);
TinyGPSPlus gps;
// To RGB
uint32_t cores[MAXCOLORS] = {RED, GREEN, BLUE, WHITE, OFF_COLORS};
// To GPS
String toSendValueGPS = "";
String toValueLat = "";
String toValueLng = "";
bool logicLevel = LOW;
bool sendLoRaWAN = false;
void setup()
{
pixels1.begin();
pixels1.clear();
pixels1.setPixelColor(0,cores[3]);
pixels1.show();
delay(2000);
pixels1.clear();
pixels1.setPixelColor(0,cores[4]);
pixels1.show();
pinMode(pinRSTGPS, OUTPUT);
digitalWrite(pinRSTGPS, HIGH);
delay(1000);
Serial.begin(115200);
// To GPS
neogps.begin(9600, SERIAL_8N1, TXD2, RXD2);
Serial.println("Setup GPS ok! ");
} // end setup
void loop()
{
readGPS();
delay(1000);
} // end loop
void readGPS()
{
boolean newData = false;
for (unsigned long start = millis(); millis() - start < 1000;)
{
while (neogps.available())
{
if (gps.encode(neogps.read()))
{
newData = true;
} // end if
} // end while
} // end for
//If newData is true
if(newData == true)
{
toSendValueGPS = String(gps.location.lat(),4) + " ," + String(gps.location.lng(),4);
newData = false;
if(!gps.location.lat() && !gps.location.lng())
{
pixels1.clear();
pixels1.setPixelColor(0,cores[2]);
pixels1.show();
Serial.println("Sincronizando...");
delay(100);
pixels1.clear();
pixels1.setPixelColor(0,cores[4]);
pixels1.show();
delay(100);
} // end if
else
{
pixels1.clear();
pixels1.setPixelColor(0,cores[1]);
pixels1.show();
logicLevel = !logicLevel;
sendLoRaWAN = true;
Serial.println(gps.satellites.value());
// Serial.println(String(gps.location.lat(),4) + " " + String(gps.location.lng(),4));
Serial.println(toSendValueGPS);
delay(500);
pixels1.clear();
pixels1.setPixelColor(0,cores[4]);
pixels1.show();
delay(500);
} // end else
} // end if
else
{
pixels1.clear();
pixels1.setPixelColor(0,cores[0]);
pixels1.show();
Serial.println("No Data");
delay(1000);
pixels1.clear();
pixels1.setPixelColor(0,cores[4]);
pixels1.show();
delay(1000);
} // end else
} // end readGPS
Last updated