ESP8266 LOLIN V3   

Test di controllo della posizione con GPS.

Test con : NodeMCU ESP8266 ESP-12F WiFi Lolin V3 (solo dati georeferenziali)

 

Programma: (le coordinate inserite non rispecchiano la realtà)

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 0 // GPIO0
Adafruit_SSD1306 display(OLED_RESET);
#include <SoftwareSerial.h>
#include <TinyGPS++.h>

static const int RXPin = 2, TXPin = 3;
//**Collegamenti GPS sull'ESP8266 ESP-12F D6(GPIO12 TX) e D7(GPO13 RX) ***
static const uint32_t GPSBaud = 9600;
static const double WAYPOINT_LAT = 41.839116, WAYPOINT_LON = 14.278210;


//** Collegamenti OLED sull'ESP8266 ESP-12F D1(GPIO5) SCL D2(GPIO4) SDA ***
TinyGPSPlus gps;
SoftwareSerial ss(RXPin, TXPin);

void setup()
{
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(0, 0);
display.println("Acoptex GPS-Timing");
display.println("Check for more");
display.println("DIY projects on");
display.println("http://acoptex.com");

delay(3000);
ss.begin(GPSBaud);

}
void displayinfo()
{

display.setCursor(0, 0);
display.print("DATA : ");
display.print(gps.date.day());
display.print("-");
display.print(gps.date.month());
display.print("-");
display.println(gps.date.year());
//*****************************************
display.print("ORA : ");
display.print(gps.time.hour());
display.print(":");
display.print(gps.time.minute());
display.print(":");
display.println(gps.time.second());
//*****************************************
display.print("LATITUDE : ");
display.println(gps.location.lat(), 6);
display.print("LONGITUDE: ");
display.println(gps.location.lng(), 6);
//*****************************************

display.print("H. s.l.m.: ");
display.print(gps.altitude.meters(), 2);
display.println(" m");
//*****************************************
//display.print(gps.altitude.feet(), 2);
//display.println(" ft");
display.print("DISTANZA : ");
//display.println(gps.satellites.value());
display.println("65 cm. ");

display.print("SGANCIO : ");
display.println("OFF ");

unsigned long distanceKmToWaypoint =
(unsigned long)TinyGPSPlus::distanceBetween(
gps.location.lat(),
gps.location.lng(),
WAYPOINT_LAT,
WAYPOINT_LON) / 1000;
display.print("m. da WPT: ");
display.println(distanceKmToWaypoint);

delay(100);
}
void loop()
{

displayinfo();
smartDelay(500);
if (millis() > 5000 && gps.charsProcessed() < 10)
{
display.clearDisplay();
display.setCursor(0, 0);
display.println("No GPS detected:");
display.println(" check wiring.");
display.println("More projects are");
display.println(" on Acoptex.com");
}
}
static void smartDelay(unsigned long ms)
{
unsigned long start = millis();
do
{
while (ss.available())
gps.encode(ss.read());
} while (millis() - start < ms);
}

//*************************************************