ESP8266 12naE med GPS & OLED display (3 / 3 steg)
Steg 3: Ladda upp koden
Först, jag antar du har Arduino IDE redan installerat (helst 1.6.4 eller senare) och att du har installerat alla nödvändiga bibliotek såsom: TinyGPS plus, Mjukvaran följetongoch Adafruit OLED display biblioteket. Du kan få dessa från Github.
Om inte, installera den senaste versionen av Arduino IDE och biblioteken först.
Jag antar också att du har installerat alla nödvändiga drivrutiner för datorn att känna igen ESP8266, om inte Adafruit har en utmärkt tutorial här. Adafruit ESP8266 handledning Detta är viktigt om detta är första gången du använder ESP8266
Nästa kopia och klistra in koden nedan i Arduino IDE,
Ange din latitud och longitud i området av kod "Home_LAT =" och "Home_LNG =" nedan
Kompilera den och ladda upp till din esp-12naE, i Arduino IDE måste du markera din rätt styrelse (ESP-12naE modul i mitt fall) och minnesstorlek - 4M (3M SPIFFS)
Ta en promenad eller bilresa och titta på din GPS-position uppdatera, kom ihåg att hålla ögonen på vägen!
< p > #include < TinyGPS ++ .h > / / seriell mjukvarubibliotek så vi kan använda andra stift för kommunikation med GPS-modul < /p >< p > #include < SoftwareSerial.h > / / Adafruit oled bibliotek för visning < /p >< p > #include < Adafruit_ssd1306syp.h > / / Adafruit oled bibliotek för visning < /p >< p > Adafruit_ssd1306syp display(4,5); OLED-display (SDA till stift 4), (SCL till stift 5) < /p >< p > statisk const int RXPin = 12, TXPin = 13. Ublox 6m GPS-modulen till GPIO stift 12 och 13
statisk const uint32_t GPSBaud = 9600; Ublox GPS standard överföringshastigheten är 9600 < /p >< p > const double Home_LAT = **. ***; Ange ditt hem Latitude
CONST double Home_LNG = **. ***; Ange ditt hem longitud < /p >< p > TinyGPSPlus gps; Skapa en instans av objektet TinyGPS ++ kallas gps
SoftwareSerial ss (RXPin, TXPin); Seriell anslutning till GPS-enheten < /p >< p > void setup()
{
display.Initialize(); Initiera OLED-skärm
display.Clear(); Tydlig OLED-skärm
display.setTextSize(1); Ställ in OLED textstorlek för små
display.setTextColor(WHITE); Ange OLED färg till vitt
display.setCursor(0,0); Ställ in markören till 0,0
display.println ("GPS exempel");
display.println(TinyGPSPlus::libraryVersion());
display.Update(); Uppdatera visningen
Delay(1500); Pausa 1,5 sekunder
SS.BEGIN(GPSBaud); Som mjukvaran följetong Comm hastigheten till 9600
} < /p >< p > void loop()
{
display.Clear();
display.setCursor(0,0);
display.Print ("Latitude:");
display.println(GPS.location.lat(), 5); Anger den precision som visas på plats - för närvarande 5 decimaler
display.Print ("longitud:");
display.println(GPS.location.LNG(), 4);
display.Print ("satelliter:");
display.println(GPS.Satellites.Value());
display.Print ("höjd:");
display.Print(GPS.Altitude.Feet());
display.println("ft");
display.Print ("tiden UTC:");
display.Print(GPS.Time.Hour()); GPS tid UTC
display.Print(":");
display.Print(GPS.Time.Minute()); Minuter
display.Print(":");
display.println(GPS.Time.Second()); Sekunder
display.Print ("rubrik:");
display.println(GPS.Course.deg());
display.Print ("hastighet:");
display.println(GPS.Speed.mph());
osignerade långa Distance_To_Home = (osignerade långa) TinyGPSPlus::distanceBetween (gps.location.lat (), gps.location.lng (), Home_LAT, Home_LNG);
display.Print ("KM hem:"); Har TinyGPS beräkna avståndet till hem och Visa den
display.Print(Distance_To_Home);
display.Update(); Uppdatera visningen
Delay(200);
smartDelay(500); Köra proceduren smartDelay < /p >< p > om (millis() > 5000 & & gps.charsProcessed() < 10)
display.println (F ("nr GPS mottagna data: kontrollera ledningar"));
} < /p >< p > statisk void smartDelay (osignerade långa ms) / / här anpassad version av delay() ser till att objektet gps "matas".
{
osignerade långa start = millis();
göra
{
samtidigt (ss.available())
GPS.encode(SS.Read());
} medan (millis() - start < ms);
} < /p >