Stap 2: GPS datastructuur en Arduino parseren van functies
Nu, ik ben niet bekend met NMEA dataformaat, zodat ik opnieuw heeft gezocht op internet en vond enkele goede sites hier en daar. Er zijn bos van GPS-informatie die kunt u krijgen van zinnen die Holux M-1000 periodiek als GGA, RMC, VTG, GSA en GSV genereert, maar ik hoef ze allemaal. Alles wat ik nodig is lengte- en breedtegraad, maar aanvullende informatie zoals tijd en datum, invloed, snelheid goed zal zijn voor weet net zo goed. De zin, RMC heeft al deze. In de eerste link hierboven is de RMC zin te omschrijven als hieronder met een voorbeeld.RMC - NMEA heeft zijn eigen versie van essentiële gps pvt (positie, snelheid, tijd)-gegevens. Het heet RMC, de aanbevolen Minimum, die zal lijken op: $GPRMC, 123519, A, 4807.038, N, 01131.000, E, 022.4, 084.4, 230394, 003.1, W * 6A Waar:
RMC aanbevolen Minimum zin C
123519 fix genomen op 12:35:19 UTC
Een Status A = active of V = leegte.
4807.038, N Latitude 48 deg 07.038' N
01131.000, E breedtegraad 11 deg 31.000' E
022.4 snelheid over de grond in knopen
084.4 bijhouden hoek in graden True
230394 datum - 23 maart 1994
003.1, W magnetische variatie
* 6A de controlesom gegevens, begint altijd met *
Elke parameter gescheiden door een komma. Vanaf Arduino versie 1.0 bevat seriële bibliotheek parseren functie waardoor seriële gegevens lezen veel gemakkelijker dan tevoren. Hieronder is een deel van mijn programma te lezen van deze gegevens uit RMC zin.
gpsTime(gps.parseInt());
gps.parseFloat(); verwijderen van geen onnodige deel
gpsLatLong(gps.parseInt(), gps.parseInt(), gps.parseInt(), gps.parseInt());
gpsSpeed = gps.parseFloat () * 1.852; knoop tot km/h
gpsBearing = gps.parseFloat();
gpsDate(gps.parseInt());
gpdTime(), gpsLatLong() en gpsDate() zijn functies die ik heb gemaakt, die ik zal uitleggen in de volgende stap, en .parseInt(), .parseFloat() zijn de functies van de Arduino te parsen integer en float waarden van seriële bus. De 'gps' voor die functies ontleden is gewoon de naam van mijn seriële poort die is gedefinieerd in het begin van het programma. Het hele programma zal worden gehecht aan de laatste stap.