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