- Componentes requeridos:
- Módulo GPS y su funcionamiento:
- Preparando la Raspberry Pi para comunicarse con GPS:
- Conexiones para la interfaz del módulo GPS Raspberry Pi:
- Prueba antes de la secuencia de comandos de Python:
Una de las plataformas integradas más geniales, como Arduino, ha brindado a los fabricantes y aficionados al bricolaje la capacidad de obtener datos de ubicación fácilmente utilizando el módulo GPS y, por lo tanto, construir cosas que dependen de la ubicación. Con la cantidad de energía que tiene Raspberry Pi, sin duda será bastante impresionante construir proyectos basados en GPS con los mismos módulos de GPS baratos y ese es el enfoque de esta publicación. Hoy en este proyecto conectaremos el módulo GPS con Raspberry Pi 3.
El objetivo de este proyecto es recopilar datos de ubicación (longitud y latitud) a través de UART desde un módulo GPS y mostrarlos en una pantalla LCD de 16x2, por lo que si no está familiarizado con la forma en que funciona la pantalla LCD de 16x2 con la Raspberry Pi, esta es otra. gran oportunidad de aprender.
Componentes requeridos:
- Frambuesa pi 3
- Módulo GPS Neo 6m v2
- LCD de 16 x 2
- Fuente de energía para Raspberry Pi
- Cable LAN para conectar el pi a tu PC en modo sin cabeza
- Cables de puente y protoboard
- Resistencia / potenciómetro a la pantalla LCD
- Tarjeta de memoria de 8 o 16 Gb con Raspbian Jessie
Aparte de eso, necesitamos instalar la biblioteca GPS Daemon (GPSD), la biblioteca Adafruit LCD 16x2, que instalamos más adelante en este tutorial.
Aquí estamos usando Raspberry Pi 3 con Raspbian Jessie OS. Todos los requisitos básicos de hardware y software se discutieron anteriormente, puede buscarlos en la Introducción de Raspberry Pi.
Módulo GPS y su funcionamiento:
GPS significa Sistema de Posicionamiento Global y se utiliza para detectar la latitud y longitud de cualquier ubicación en la Tierra, con la hora UTC exacta (Hora Universal Coordinada). El módulo GPS es el componente principal de nuestro proyecto de sistema de seguimiento de vehículos. Este dispositivo recibe las coordenadas del satélite para cada segundo, con fecha y hora.
El módulo GPS envía los datos relacionados con la posición de seguimiento en tiempo real y envía tantos datos en formato NMEA (vea la captura de pantalla a continuación). El formato NMEA consta de varias oraciones, en las que solo necesitamos una oración. Esta oración comienza en $ GPGGA y contiene las coordenadas, la hora y otra información útil. Este GPGGA se refiere a Datos de reparación del sistema de posicionamiento global. Conozca más sobre la lectura de datos GPS y sus cadenas aquí.
Podemos extraer las coordenadas de la cadena $ GPGGA contando las comas en la cadena. Suponga que encuentra la cadena $ GPGGA y la almacena en una matriz, luego la latitud se puede encontrar después de dos comas y la longitud se puede encontrar después de cuatro comas. Ahora, esta latitud y longitud se pueden colocar en otras matrices.
A continuación se muestra la cadena $ GPGGA, junto con su descripción:
$ GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0.9,510.4, M, 43.9, M,, * 47
$ GPGGA, HHMMSS.SSS, latitud, N, longitud, E, FQ, NOS, HDP, altitud, M, altura, M,, datos de suma de comprobación
Identificador |
Descripción |
$ GPGGA |
Datos de corrección del sistema de posicionamiento global |
HHMMSS.SSS |
Hora en formato de horas, minutos, segundos y milisegundos. |
Latitud |
Latitud (coordinada) |
norte |
Dirección N = Norte, S = Sur |
Longitud |
Longitud (coordinada) |
mi |
Dirección E = Este, W = Oeste |
FQ |
Corregir datos de calidad |
NOS |
No. de satélites en uso |
HPD |
Dilución horizontal de precisión |
Altitud |
Altitud desde el nivel del mar |
METRO |
Metro |
Altura |
Altura |
Suma de comprobación |
Datos de suma de comprobación |
Puede consultar nuestros otros proyectos de GPS:
- Rastreador de vehículos basado en Arduino usando GPS y GSM
- Sistema de alerta de accidentes de vehículos basado en Arduino mediante GPS, GSM y acelerómetro
- Cómo usar el GPS con Arduino
- Rastrea un vehículo en Google Maps usando Arduino, ESP8266 y GPS
Preparando la Raspberry Pi para comunicarse con GPS:
Bien, para saltar, para que esto no se vuelva aburrido, asumiré que ya sabe mucho sobre la Raspberry Pi, lo suficiente para instalar su sistema operativo, obtener la dirección IP, conectarse al software de terminal como putty y otras cosas sobre el PI. Si tiene algún problema para hacer alguna de las cosas mencionadas anteriormente, contácteme en la sección de comentarios y con gusto lo ayudaré.
Lo primero que tenemos que hacer para poner en marcha este proyecto es preparar nuestra Raspberry Pi 3 para poder comunicarnos con el módulo GPS a través de UART, créanme, es bastante complicado y nos costó mucho intentar hacerlo bien pero si sigues Mi guía con cuidado, lo obtendrá de una vez, esta es bastante la parte más difícil del proyecto. Aquí hemos utilizado el módulo GPS Neo 6m v2.
Para profundizar, aquí hay una pequeña explicación de cómo funciona la UART Raspberry Pi 3.
La Raspberry Pi tiene dos UART incorporados, un PL011 y un mini UART. Se implementan utilizando diferentes bloques de hardware, por lo que tienen características ligeramente diferentes. Sin embargo, en la raspberry pi 3, el módulo inalámbrico / bluetooth está conectado a la UART PLO11, mientras que la mini UART se usa para la salida de la consola Linux. Dependiendo de cómo lo veas, definiré el PLO11 como el mejor de los dos UART por su nivel de implementación. Entonces, para este proyecto, desactivaremos el módulo Bluetooth de la UART PLO11 usando una superposición disponible en la versión actual actualizada de Raspbian Jessie.
Paso 1: Actualización de Raspberry Pi:
Lo primero que me gusta hacer antes de comenzar cada proyecto es actualizar la Raspberry Pi. Así que hagamos lo habitual y ejecutemos los siguientes comandos;
sudo apt-get update sudo apt-get upgrade
luego reinicie el sistema con;
sudo reiniciar
Paso 2: configurar el UART en Raspberry Pi:
Lo primero que haremos debajo de esto es editar el archivo /boot/config.txt . Para hacer esto, ejecute los siguientes comandos:
sudo nano /boot/config.txt
en la parte inferior del archivo config.txt, agregue las siguientes líneas
dtparam = spi = en dtoverlay = pi3-disable-bt core_freq = 250 enable_uart = 1 force_turbo = 1
ctrl + x para salir y presione y y enter para guardar.
Asegúrese de que no haya errores tipográficos o errores comprobando dos veces, ya que un error podría evitar que su pi se inicie.
¿Cuáles son las razones de estos comandos? Force_turbo permite que UART use la frecuencia máxima de núcleo que estamos configurando en este caso en 250. La razón de esto es garantizar la coherencia e integridad de los datos en serie recibidos. Es importante tener en cuenta en este punto que el uso de force_turbo = 1 anulará la garantía de su raspberry pi, pero aparte de eso, es bastante seguro.
El dtoverlay = pi3-disable-bt desconecta el bluetooth del ttyAMA0 , esto es para permitirnos el acceso para usar toda la potencia UART disponible a través de ttyAMAO en lugar del mini UART ttyS0.
El segundo paso en esta sección de configuración de UART es editar el archivo boot / cmdline.txt
Le sugeriré que haga una copia de cmdline.txt y guarde primero antes de editar para que pueda volver a él más tarde si es necesario. Esto se puede hacer usando;
sudo cp boot / cmdline.txt boot / cmdline_backup.txt sudo nano /boot.cmdline.txt
Reemplace el contenido con;
dwc_otg.lpm_enable = 0 consola = tty1 root = / dev / mmcblk0p2 rootfstype = ext4 ascensor = fecha límite fsck.repair = sí rootwait quiet splash plymouth.ignore-serial-consoles
Guardar y Salir.
Una vez hecho esto, tendremos que reiniciar el sistema nuevamente para efectuar los cambios ( sudo reboot ).
Paso 3: deshabilitar el servicio Getty serial de Raspberry Pi
El siguiente paso es deshabilitar el servicio getty serial de Pi, el comando evitará que se inicie nuevamente al reiniciar:
sudo systemctl detener [email protected] sudo systemctl deshabilitar [email protected]
Los siguientes comandos se pueden usar para habilitarlo nuevamente si es necesario
sudo systemctl enable [email protected] sudo systemctl start [email protected]
Reinicie el sistema.
Paso 4: Activando ttyAMAO:
Hemos deshabilitado el ttyS0, lo siguiente es que habilitemos el ttyAMAO .
sudo systemctl enable [email protected]
Paso 5: instale Minicom y pynmea2:
Seremos minicom para conectarnos al módulo GPS y dar sentido a los datos. También es una de las herramientas que usaremos para probar si nuestro módulo GPS está funcionando bien. Una alternativa a minicom es el software demonio GPSD.
sudo apt-get install minicom
Para analizar fácilmente los datos recibidos, haremos uso de la biblioteca pynmea2 . Se puede instalar usando;
sudo pip instalar pynmea2
La documentación de la biblioteca se puede encontrar aquí
Paso 6: Instalación de la biblioteca LCD:
Para este tutorial usaremos la biblioteca AdaFruit. La biblioteca se creó para pantallas AdaFruit, pero también funciona para tableros de visualización con HD44780. Si su pantalla se basa en esto, entonces debería funcionar sin problemas.
Siento que es mejor clonar la biblioteca e instalarla directamente. Para clonar ejecutar;
clon de git
cambiar al directorio clonado e instalarlo
cd./Adafruit_Python_CharLCD sudo python setup.py instalar
En esta etapa, sugeriré otro reinicio para que estemos listos para continuar con la conexión de los componentes.
Conexiones para la interfaz del módulo GPS Raspberry Pi:
Conecte el módulo GPS y la pantalla LCD a la Raspberry Pi como se muestra en el diagrama de circuito a continuación.
Prueba antes de la secuencia de comandos de Python:
Creo que es importante probar la conexión del módulo GPS antes de continuar con el script de Python. Emplearemos minicom para esto. Ejecute el comando:
sudo minicom -D / dev / ttyAMA0 -b9600
donde 9600 representa la velocidad en baudios a la que se comunica el módulo GPS. Esto se puede usar una vez que estemos seguros de la comunicación de datos entre el GPS y el RPI, es hora de escribir nuestro script de Python.
La prueba también se puede realizar con cat.
sudo cat / dev / ttyAMA0
En la ventana, puede ver las sentencias NMEA que hemos discutido anteriormente.
Python Script para este tutorial de GPS Raspberry Pi se proporciona a continuación en la sección Código.
Con todo lo dicho y hecho, es hora de probar todo el sistema. Es importante que se asegure de que su GPS esté obteniendo una buena solución, al sacarlo, la mayoría de los GPS requieren entre tres y 4 satélites para obtener una solución, aunque el mío funcionaba en interiores.
¿Funciona bien? Sí…
¿Tiene preguntas o comentarios? Déjelos en la sección de comentarios.
El video de demostración se muestra a continuación, donde mostramos la ubicación en latitud y longitud en la pantalla LCD usando GPS y Raspberry Pi.