Paso 2: Estructura de datos GPS y Arduino funciones de análisis
Ahora, no estoy familiarizado con el formato de datos NMEA, así que buscó en internet otra vez y encontré algunos buenos sitios aquí y allí. Hay montón de información del GPS que se puede obtener de las frases que Holux M-1000 genera periódicamente como GGA, RMC, VTG, GSA, GSV, pero no necesito todos. Todo lo que necesito es latitud y longitud, pero información adicional tales como hora y fecha, rodamiento, la velocidad será bueno saber así. La sentencia RMC tiene todos estos. En el primer enlace mas arriba, la sentencia RMC es descrita como a continuación con un ejemplo.RMC - NMEA tiene su propia versión de gps esencial los datos pvt (posición, velocidad, tiempo). Se llama RMC, el mínimo recomendado, que se verá similar a: $GPRMC, 123519, A, N 4807.038, 01131.000, E, 022.4 084.4 230394, 003.1, W * 6A Donde:
Sentencia RMC recomienda mínimo C
123519 fix en 12:35:19 UTC
Un estado A = activa o V = vacío.
4807.038, N latitud 48 grados 07.038' N
01131.000, E longitud 11 grados 31,000' E
022.4 velocidad sobre el terreno en nudos
084.4 seguimiento de ángulo en grados de verdad
230394 fecha - 23 de marzo de 1994
003.1, declinación magnética de W
* 6A los datos de suma de comprobación, siempre empieza con *
Cada parámetro está separado por una coma. Desde Arduino versión 1.0, serie biblioteca incluye análisis de función que hace mucho más fácil que antes de la lectura de datos en serie. A continuación es una parte de mi programa para leer estos datos de sentencia RMC.
gpsTime(gps.parseInt());
gps.parseFloat(); Deseche la parte innecesaria
gpsLatLong(gps.parseInt(), gps.parseInt(), gps.parseInt(), gps.parseInt());
gpsSpeed = gps.parseFloat () * 1.852; nudo a km/h
gpsBearing = gps.parseFloat();
gpsDate(gps.parseInt());
gpdTime(), gpsLatLong() y gpsDate() son funciones que hice, que explicaré en el siguiente paso y .parseInt(), .parseFloat() son las funciones de Arduino para analizar valores integer y float de bus serie. El 'gps' delante de los análisis de funciones es sólo el nombre de mi puerto serie que se define en el inicio del programa. El programa entero se unirá para el último paso.