Soluciones GPS con Raspbian

Ya sabéis lo que a algunos nos gusta jugar con los cacharros, da igual que cocinar si la receta es libre y la puedes modificar a tu gusto.

¿Crees que es molón que tu coche tenga Wifi?¿Navegador GPS?¿MiniPC?¿Y todo en uno?¿Y todo en uno por el módico precio de unos 85€ aproximados? Pues manos a la obra:

Materiales:

  • Rasperry pi3 con SO Raspbian precio (35€ ~)
  • Display para Rasberry pi (20 € ~)
  • Dispositivo GPS o Smartphone Android 4 o compatible (20 € ~, el smartphone, si lo tienes, gratis claro )
  • Conversor corriente 12-5v/Estabilizador (3,5 € ~)
  • Cabler miniUSB o mejor aún os recomiendo con interruptor encendido/apagado miniusb. (Con el display la pi no se apaga hasta que desconectes la corriente y no queremos estar enchufando y desenchufando el cacharro con los dedos, un botón es mucho más cómodo 7,5 € ~) El conversor/estabilizador se usa porque de otra forma habría picos de corriente que harían que la pantalla parpadee y generaríamos posibilidades de dañar nuestra pantalla/pi/sd. Si vas a conectarlo, por ejemplo, a los 12v donde sale la corriente para la radio.

Preparación:

Se supone que vas a usar un display que se conecta al GPIO de la raspi, hace falta un firmware especial y para instalarlo en raspbian, basta con seguir el manual que trae o mismo este sitio te explica como: http://www.waveshare.com/wiki/3.5inch_RPi_LCD_(A) Otros displays tendrán sus propios manuales. Además muchos son táctiles, justo lo que se busca.

Asegúrate de que la pi tiene instalado los siguientes paquetes:

sudo apt-get -y install bluez-utils gpsd-clients gpsd

También instalar el software de navegación que más nos guste:

sudo apt-get install -y foxtrotgps

Dpkg al configurar gpsd me soltó un error, esto me pareció normal, puesto que estaba usando un dispositivo “virtual” y no uno USB que estuviese conectado.

Necesitamos las herramientas para comunicarnos con una fuente de datos de GPS, podemos adquirir una antena con salida de datos usb por unos 20€~ o bien podemos usar un GPS con bluetooth o, como vamos a ver para hacer la prueba, usar el móvil para compartir la señal de GPS por bluetooth.

Preparar la pi para poder conectarse a ella una vez esté instalada en el coche, la moto o cualquier cosa que queramos y disponga de energía para conectar la pi. Para ello podemos seguir el tutorial que también nos vale para crear un punto de acceso, (gracias Puppet) rogue-access-pointap-con-raspberryprimera-parte/. Siguiendo el mismo obtendremos un punto de acceso inalámbrico en la pi y podremos seguir actualizándola a través del cable de red en nuestro router de casa. Después de montar todo en el coche o donde nos de la gana, insisto, encendemos la raspi y nos conectamos al punto de acceso Wifi que hemos configurado en ella. Usé mi smartphone con la apk connectbot para acceder por ssh, pero puedes hacerlo con tu laptop o con lo que te de la gana.

Gestionando la raspi por ssh por si algo falla:

ssh pi@10.0.0.4

Los autores de ShareGPS han dejado una serie de scripts de autoinstalación/configuración del servicio gpsd basta con hacer:

wget http://www.jillybunch.com/sharegps/downloads/bt-gps.tar.gz
tar -xvf bt-gps.tar.gz
cd bt-gps
sudo ./install.sh

Y supuestamente el servicio se activaría al aproximarse a la fuente de datos GPS por bluetooth. Pero como no siempre va a funcionar todo, siempre podemos comprobar que la cosa esté funcionando accediendo por ssh:

Para probar la cosa antes de comprarme una antena, use el móvil como si de un GPS bluetooth se tratase, para ello, me descargué esta aplicación Share GPS, aparentemente no es soft libre y tampoco la vais a encontrar en FDroid: http://www.jillybunch.com/sharegps/index.html Después de descargarla hay que crear una conexión y configurarla y ponerla en escucha, se puede elegir entre usb, bluetooth y TCP/IP. Por su puesto si vas a usar el bluetooth hay que vincular la pi y el móvil a través del blueman por ejemplo o bluez. Si tienes dudas con ShareGPS sigue el mismo tutorial que yo: http://www.jillybunch.com/sharegps/nmea-bluetooth-linux.html Ahora vamos a decirle a la pi que use la conexión bluetooth como fuente de datos de nuestro demonio gpsd tal que así:

Obtener la mac del dispositivo bluetooth que esta compartiendo la señal GPS e iniciar una conexión con él:

hcitool scan
rfcomm connect 0 A0:0B:BD:6F:B5:D0 &
gpsd -b /dev/rfcomm0

Tras esto debería salir un mensaje Ctrl+C para cerrar la conexión. significa que la conexión se ha creado, si estás usando ShareGPS deberás ver en la apk un “CONNECTED” además deberás tener cobertura de señal GPS para que la cosa se vea funcionando, si ves un número indicando la velocidad, es que todo funciona.

Esto configura el demonio gpsd para usar como fuente de datos NMEA, /dev/rfcomm0 Podemos ver si funciona haciendo por ejemplo:

cat /dev/rfcomm0

Que mostrará un gran churro de coordenadas NMEA algo parecido a esto. $GPRMC,225446,A,4916.45.................

Si vas a usar una antena GPS con interface USB basta con:

gpsd -b /dev/nombredetudispositivo

Ahora que funciona, puedes trasladar todo a tu coche/moto/vaca y conectar el conversor a la fuente de alimentación, ver imagen, es cierto, no se aprecia ve pero soldé un conector USB hembra a los cables del estabilizador de corriente pines (1 y 4, los de los extremos) para enchufar a este, el cable USB-miniUSB que alimenta la raspi. Conectamos así claro: DC-convertidor/estabilizador->USB(hembra)->Cable alimentacion USB-miniUSB->Rasperrypi.

También se me ocurrió que se puede crear un sistema de seguimiento para móviles fácilmente con ShareGPS habría que profundizar un poco el tema, podría poder ser buena idea saber donde esta el móvil de tus hijos en cualquier momento. Habrá que leer la documentación http://www.jillybunch.com/sharegps/nmea-tcp.html supongo que se puede enviar la posición del móvil por 3G sin problemas, pero de momento no me veo interesado en localizarme a mi mismo y no lo he probado. Había probado sin embargo otra apk, https://fossdroid.com/a/selfhosted-gps-tracker.html También en Github https://github.com/steve8x8/Self-Hosted-GPS-Tracker

Para que quede bonito y usable, he añadido las aplicaciones que voy a usar como iconos en el escritorio, foxtrotgps y apagado, en principio, así es más fácil acertar con los dedos.

Es posible que acabe cambiando el Display por uno más grandes, también estoy pensando en conectar la salida de audio, amplificarla y quien sabe si añadiré un par de mandos y unos juegos retro, quien sabe… Todo es probar…

2 Comments

  1. Joder, que currazo foo, esto hay que probarlo ;) muchas gracias por compartirlo.

    Veo muchas posibilidades como tu indicas +1000 :)

  2. :) de lujo, tengo ahí la raps parada de hace tiempo y este artículo me esta animando a volverla a coger.

    gracias foo

Leave a Reply

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax