7.7 KiB
Leer datos GPS - Hardware IoT Virtual
En esta parte de la lección, agregarás un sensor GPS a tu dispositivo IoT virtual y leerás valores de él.
Hardware Virtual
El dispositivo IoT virtual usará un sensor GPS simulado que es accesible a través de UART mediante un puerto serial.
Un sensor GPS físico tendrá una antena para captar ondas de radio de los satélites GPS y convertir las señales GPS en datos GPS. La versión virtual simula esto permitiéndote establecer una latitud y longitud, enviar sentencias NMEA en bruto o cargar un archivo GPX con múltiples ubicaciones que se pueden devolver secuencialmente.
🎓 Las sentencias NMEA se cubrirán más adelante en esta lección.
Agregar el sensor a CounterFit
Para usar un sensor GPS virtual, necesitas agregar uno a la aplicación CounterFit.
Tarea - agregar el sensor a CounterFit
Agrega el sensor GPS a la aplicación CounterFit.
-
Crea una nueva aplicación en Python en tu computadora dentro de una carpeta llamada
gps-sensor
con un único archivo llamadoapp.py
y un entorno virtual de Python, y agrega los paquetes pip de CounterFit.⚠️ Puedes consultar las instrucciones para crear y configurar un proyecto Python de CounterFit en la lección 1 si lo necesitas.
-
Instala un paquete adicional de Pip para instalar un shim de CounterFit que pueda comunicarse con sensores basados en UART a través de una conexión serial. Asegúrate de instalarlo desde un terminal con el entorno virtual activado.
pip install counterfit-shims-serial
-
Asegúrate de que la aplicación web de CounterFit esté en ejecución.
-
Crea un sensor GPS:
-
En el cuadro Create sensor en el panel Sensors, despliega el cuadro Sensor type y selecciona UART GPS.
-
Deja el Port configurado como /dev/ttyAMA0.
-
Selecciona el botón Add para crear el sensor GPS en el puerto
/dev/ttyAMA0
.
El sensor GPS será creado y aparecerá en la lista de sensores.
-
Programar el sensor GPS
El dispositivo IoT virtual ahora puede ser programado para usar el sensor GPS virtual.
Tarea - programar el sensor GPS
Programa la aplicación del sensor GPS.
-
Asegúrate de que la aplicación
gps-sensor
esté abierta en VS Code. -
Abre el archivo
app.py
. -
Agrega el siguiente código al inicio de
app.py
para conectar la aplicación a CounterFit:from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000)
-
Agrega el siguiente código debajo de este para importar algunas bibliotecas necesarias, incluida la biblioteca para el puerto serial de CounterFit:
import time import counterfit_shims_serial serial = counterfit_shims_serial.Serial('/dev/ttyAMA0')
Este código importa el módulo
serial
del paquete Pipcounterfit_shims_serial
. Luego se conecta al puerto serial/dev/ttyAMA0
, que es la dirección del puerto serial que el sensor GPS virtual utiliza para su puerto UART. -
Agrega el siguiente código debajo de este para leer desde el puerto serial e imprimir los valores en la consola:
def print_gps_data(line): print(line.rstrip()) while True: line = serial.readline().decode('utf-8') while len(line) > 0: print_gps_data(line) line = serial.readline().decode('utf-8') time.sleep(1)
Se define una función llamada
print_gps_data
que imprime en la consola la línea que se le pasa.Luego, el código entra en un bucle infinito, leyendo tantas líneas de texto como pueda desde el puerto serial en cada iteración. Llama a la función
print_gps_data
para cada línea.Después de leer todos los datos, el bucle duerme durante 1 segundo y luego lo intenta de nuevo.
-
Ejecuta este código, asegurándote de usar un terminal diferente al que está ejecutando la aplicación CounterFit, para que la aplicación CounterFit siga funcionando.
-
Desde la aplicación CounterFit, cambia el valor del sensor GPS. Puedes hacerlo de una de estas maneras:
-
Configura la Source como
Lat/Lon
y establece una latitud, longitud y número de satélites utilizados para obtener la posición GPS. Este valor se enviará solo una vez, así que marca la casilla Repeat para que los datos se repitan cada segundo. -
Configura la Source como
NMEA
y agrega algunas sentencias NMEA en el cuadro de texto. Todos estos valores se enviarán, con un retraso de 1 segundo antes de que se pueda leer cada nueva sentencia GGA (posición fija).Puedes usar una herramienta como nmeagen.org para generar estas sentencias dibujando en un mapa. Estos valores se enviarán solo una vez, así que marca la casilla Repeat para que los datos se repitan un segundo después de que se hayan enviado todos.
-
Configura la Source como archivo GPX y carga un archivo GPX con ubicaciones de ruta. Puedes descargar archivos GPX de varios sitios populares de mapas y senderismo, como AllTrails. Estos archivos contienen múltiples ubicaciones GPS como un recorrido, y el sensor GPS devolverá cada nueva ubicación en intervalos de 1 segundo.
Estos valores se enviarán solo una vez, así que marca la casilla Repeat para que los datos se repitan un segundo después de que se hayan enviado todos.
Una vez que hayas configurado los ajustes del GPS, selecciona el botón Set para confirmar estos valores en el sensor.
-
-
Verás la salida en bruto del sensor GPS, algo como lo siguiente:
$GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67 $GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67
💁 Puedes encontrar este código en la carpeta code-gps/virtual-device.
😀 ¡Tu programa del sensor GPS fue un éxito!
Descargo de responsabilidad:
Este documento ha sido traducido utilizando el servicio de traducción automática Co-op Translator. Aunque nos esforzamos por garantizar la precisión, tenga en cuenta que las traducciones automatizadas 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.