Odczyt dajny z GPS czyli Global Positioning System jest stosunkowo łatwy. Podstawowy odczyt opisywałem we wcześniejszym wpisie Arduino – GPS NEO-6M. Tym razem dane trochę pookładamy odczytamy takie dane jak data oraz dokładna godzina oczywiście nie zapomnimy o pozycji.
Potrzebne komponenty:
Połączenie modułu GPS z Arduino
Moduł GPS NEO-6M komunikuje się z Arduino poprzez komunikację szeregową za pomocą pinów TX i RX, mamy w sumie 4 przewody.
GPS NEO-6M | Arduino |
VCC | 5V |
RX | Pin 3 |
TX | Pin 4 |
GND | GND |
Kod programu:
//Pobrano z www.tranzystor.pl
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
static const int RXPin = 4, TXPin = 3;
static const uint32_t GPSBaud = 9600;
TinyGPSPlus gps;
SoftwareSerial tgps(RXPin, TXPin);
void setup(){
Serial.begin(9600);
tgps.begin(GPSBaud);
}
void loop(){
while (tgps.available() > 0){
gps.encode(tgps.read());
if (gps.location.isUpdated()){
Serial.print("Godzina = ");
Serial.print(gps.time.hour()+2); // +2 strefa dla Polski czas letni
Serial.print(" Minuta = ");
Serial.print(gps.time.minute());
Serial.print(" Sekunda = ");
Serial.println(gps.time.second());
Serial.print(F("Rok = "));
Serial.print(gps.date.year());
Serial.print(F(" Miesiąc = "));
Serial.print(gps.date.month());
Serial.print(F(" Dzień = "));
Serial.println(gps.date.day());
Serial.print("Szerokość = ");
Serial.print(gps.location.lat(), 6);
Serial.print(" Długość = ");
Serial.println(gps.location.lng(), 6);
}
}
}
Po wgraniu otwórz monitor szeregowy przy szybkości transmisji 9600.
Uzyskane informacje:
Godzina = 21 Minuta = 23 Sekunda = 14
Rok = 2020 Miesiąc = 8 Dzień = 26
Szerokość = 53.447334 Długość = 14.541328
Tak wiem, prze okazji pokazałem gdzie mnie można znaleźć. Pozdrawiam ze Szczecina, dokładniej z Niebka
Tx Rx bezpośrednio czy przez konwerter poziomie logicznych ?
Bezporednio
co mam zrobić z tym kodem programu, bo to jest wszędzie pomijane…
Kod wgrywasz za pomocą Arduino IDE lub pochodne.