I see the following data:
Date: 2000-00-00
Time: 00:00:00
With this I assume that something is wrong
Altitude: 0.0, Latitude: 0.0, Longitude: 0.0, Hdop: 25.50, Speed: 0.0 km/h
Also, I am printing the age (GPS.location.age()) which value is quite big: Age: 4294967295 (I don't know what this value refers to).
The code is as follows:
//the GPS module used is GPS.
#include "Arduino.h"
#include "GPS_Air530.h"
#include "GPS_Air530Z.h"
#include <Wire.h>
#include "HT_SSD1306Wire.h"
SSD1306Wire display(0x3c, 500000, SDA, SCL, GEOMETRY_128_64, GPIO10 ); // addr , freq , i2c group , resolution , rst
//if GPS module is Air530, use this
//Air530Class GPS;
//if GPS module is Air530Z, use this
Air530ZClass GPS;
int fracPart(double val, int n)
{
return (int)((val - (int)(val))*pow(10,n));
}
void VextON(void)
{
pinMode(Vext,OUTPUT);
digitalWrite(Vext, LOW);
}
void VextOFF(void) //Vext default OFF
{
pinMode(Vext,OUTPUT);
digitalWrite(Vext, HIGH);
}
void setup() {
VextON();
delay(10);
display.init();
display.clear();
display.display();
display.setTextAlignment(TEXT_ALIGN_CENTER);
display.setFont(ArialMT_Plain_16);
display.drawString(64, 32-16/2, "GPS initing...");
display.display();
Serial.begin(115200);
GPS.begin();
}
void loop()
{
uint32_t starttime = millis();
while( (millis()-starttime) < 1000 )
{
while (GPS.available() > 0)
{
// Serial.println("Read GPS...");
GPS.encode(GPS.read());
}
}
Serial.println("Display GPS...");
char str[30];
display.clear();
display.setFont(ArialMT_Plain_10);
int index = sprintf(str,"%02d-%02d-%02d",GPS.date.year(),GPS.date.day(),GPS.date.month());
str[index] = 0;
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.drawString(0, 0, str);
index = sprintf(str,"%02d:%02d:%02d",GPS.time.hour(),GPS.time.minute(),GPS.time.second(),GPS.time.centisecond());
Serial.println(String(GPS.time.hour()) + ":" + String(GPS.time.minute()) + ":" + String(GPS.time.second()));
str[index] = 0;
display.drawString(60, 0, str);
if( GPS.location.age() < 1000 )
{
display.drawString(120, 0, "A");
}
else
{
display.drawString(120, 0, "V");
}
Serial.println("Age: " + String(GPS.location.age()));
index = sprintf(str,"alt: %d.%d",(int)GPS.altitude.meters(),fracPart(GPS.altitude.meters(),2));
str[index] = 0;
display.drawString(0, 16, str);
Serial.println("Alt: " + String(GPS.altitude.meters()));
index = sprintf(str,"hdop: %d.%d",(int)GPS.hdop.hdop(),fracPart(GPS.hdop.hdop(),2));
str[index] = 0;
display.drawString(0, 32, str);
Serial.println("Hdop: " + String(GPS.hdop.hdop()));
index = sprintf(str,"lat : %d.%d",(int)GPS.location.lat(),fracPart(GPS.location.lat(),4));
str[index] = 0;
display.drawString(60, 16, str);
Serial.println("Lat: " + String(GPS.location.lat()));
index = sprintf(str,"lon:%d.%d",(int)GPS.location.lng(),fracPart(GPS.location.lng(),4));
str[index] = 0;
display.drawString(60, 32, str);
Serial.println("Lon: " + String(GPS.location.lng()));
index = sprintf(str,"speed: %d.%d km/h",(int)GPS.speed.kmph(),fracPart(GPS.speed.kmph(),3));
str[index] = 0;
display.drawString(0, 48, str);
Serial.println("Speed: " + String(GPS.speed.kmph()));
Serial.println("-------------------------------------------------------------");
Serial.println("-------------------------------------------------------------");
display.display();
}