You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/es/3-transport/lessons/1-location-tracking/single-board-computer-gps-d...

3.5 KiB

Decodificar datos GPS - Hardware IoT Virtual y Raspberry Pi

En esta parte de la lección, decodificarás los mensajes NMEA leídos del sensor GPS por la Raspberry Pi o el Dispositivo IoT Virtual, y extraerás la latitud y la longitud.

Decodificar datos GPS

Una vez que los datos NMEA en bruto se han leído desde el puerto serial, pueden ser decodificados utilizando una biblioteca NMEA de código abierto.

Tarea - decodificar datos GPS

Programa el dispositivo para decodificar los datos GPS.

  1. Abre el proyecto de la aplicación gps-sensor si aún no está abierto.

  2. Instala el paquete Pip pynmea2. Este paquete contiene código para decodificar mensajes NMEA.

    pip3 install pynmea2
    
  3. Agrega el siguiente código a las importaciones en el archivo app.py para importar el módulo pynmea2:

    import pynmea2
    
  4. Reemplaza el contenido de la función print_gps_data con lo siguiente:

    msg = pynmea2.parse(line)
    if msg.sentence_type == 'GGA':
        lat = pynmea2.dm_to_sd(msg.lat)
        lon = pynmea2.dm_to_sd(msg.lon)
    
        if msg.lat_dir == 'S':
            lat = lat * -1
    
        if msg.lon_dir == 'W':
            lon = lon * -1
    
        print(f'{lat},{lon} - from {msg.num_sats} satellites')
    

    Este código utilizará la biblioteca pynmea2 para analizar la línea leída desde el puerto serial UART.

    Si el tipo de sentencia del mensaje es GGA, entonces este es un mensaje de fijación de posición y se procesa. Los valores de latitud y longitud se leen del mensaje y se convierten a grados decimales desde el formato NMEA (d)ddmm.mmmm. La función dm_to_sd realiza esta conversión.

    Luego se verifica la dirección de la latitud, y si la latitud es sur, el valor se convierte en un número negativo. Lo mismo ocurre con la longitud; si es oeste, se convierte en un número negativo.

    Finalmente, las coordenadas se imprimen en la consola, junto con el número de satélites utilizados para obtener la ubicación.

  5. Ejecuta el código. Si estás utilizando un dispositivo IoT virtual, asegúrate de que la aplicación CounterFit esté ejecutándose y que los datos GPS se estén enviando.

    pi@raspberrypi:~/gps-sensor $ python3 app.py 
    47.6423109,-122.1390293 - from 3 satellites
    

💁 Puedes encontrar este código en la carpeta code-gps-decode/virtual-device, o en la carpeta code-gps-decode/pi.

😀 ¡Tu programa del sensor GPS con decodificación de datos fue un éxito!


Descargo de responsabilidad:
Este documento ha sido traducido utilizando el servicio de traducción automática Co-op Translator. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción.