Reproductor multimedia para coche con interfaz táctil


Cada  vez son más los aficionados  que se deciden a poner su inventiva  e ingenio en pro de un problema   concreto  y le buscan  una solución  que comparten con  todo el mundo.

En la preparación para ir en un viaje extendido por carretera se pueden tener dos requisitos principales:

  • Una gran oferta de música para el viaje
  • Una lectura de velocidad en vivo respaldada por GPS para que pueda determinar de forma fiable la velocidad de los coches debido a los neumáticos más grandes que ponen el velocímetro del tablero en alrededor de un 10%.

Este  proyecto  inicialmente se basó en  una Raspberry Pi 2 (ahora actualizado a la Raspberry Pi 3 ) basado en el ordenador de coche que ejecuta Raspbian

 

En esta ocasión la necesidad era (  y es)   complementar el sistema multimedia de un coche  de unos ciertos años   con un interfaz táctil de gran pantalla    y de  paso que puede ofrecer  más información util para el conductor  , tarea  que ha implementado  con una Raspberry Pi 3, construyendo   un ordenador de coche basado en Raspberry Pi  con almacenamiento de 1 TB  que  proporciona música, un punto de acceso WiFi en  el coche y muestra la información de velocidad actual  además la ubicación respaldada por un receptor de  GPS  

El proyecto se  llama Nomadic Pi   y se basa en el API de mapas Here.com utilizandose  para recuperar el límite de velocidad y la información meteorológica. En cuanto al hw su creador  en lugar de dictar una configuración exacta de hardware nos enseña  el hw  que ha usado :

  • Raspberry Pi 3
  • Tarjeta SanDisc 32GB Clase 10 SD
  • Pantalla oficial De 7 pulgadas Raspberry Pi Touch
  • Concentrador USB de 4 puertos alimentado
  • Sombrero GPS Adafruit Ultimate
  • SMA hembra a RP-SMA convertidor adaptador hembra (utilizado para conectar el sombrero GPS a una antena GPS externa)
  • Rp-SMA a uFL/u.FL/IPX/IPEX RF Adapter Cable (utilizado para conectar el sombrero GPS a una antena GPS externa)
  • Antena GPS – Antena Activa Externa – Cable de 3-5V 28dB 5 Metros
  • Unidad portátil Samsung de 1 TB de 2,5 pulgadas
  • Cable USB a SATA
  • ZTE MF832 4G dongle
  • Convertidor de voltaje de 12v a 5v 3A
  •  Tiras de metal y soportes angulares de la ferretería
  • Pintura en aerosol negra
  • Pernos de cabeza Phillips pequeños con tuercas hexagonales

 

Hardware 

Después de disponer de r todo el hardware para construir el ordenador de su coche es un reto ponerlo todo junto en un formato que no se dañará en un coche en movimiento. La pantalla táctil oficial de Raspberry Pi tiene agujeros perforados en la parte posterior de la carcasa de la pantalla. Así que hacen un gran punto de partida para mantener todo unido.  Los que están cerca del centro permiten que la Raspberry Pi acabe con la pantalla en sí. A continuación, hay agujeros roscados más cerca de las esquinas que decidí adjuntar un marco de tipo y construir hacia atrás.

Sólo un  consejo : si decide seguir el mismo camino y atornillar su marco en la parte posterior de la pantalla. ¡Apriete los tornillos muy suavemente! Si aprieta demasiado la pantalla comenzará a empujar hacia fuera el lado opuesto. Así que sólo vaya muy despacio y tenga cuidado!

Luego en lugar para montar la carcasa sólo tiene que decidir lo que va a decidir lo que va a utilizar para albergarlo. En cualquier ferretería encontrara algunas tiras metálicas delgadas y soportes angulares con agujeros pretaladrados. Así que  puede  crear un marco utilizándolos, ya que se pueden atornillar fácilmente juntos. Este enfoque es barato, robusto y proporciona una gran cantidad de puntos de montaje prácticos para sostener periféricos (hub USB, dongles externos, etc.) en su lugar.

Las carcasas Double Din disponibles en el mercado están disponibles para montar dispositivos en el tablero. Pero es probablemente más fácil construir el marco alrededor de la raspeberry Pi y luego atornillar el marco a la carcasa para mantener las cosas en su lugar.

Alimentación

Además de albergar la Raspberry Pi  tenemos que suministrar  energía a todo el hw   para lo cual tomaremos  la potencia de 12 voltios DC del sistema eléctrico de su coche y reduciremos el voltaje. dado que la Rasbberry PI se alimenta a 5V DCm requeriremos una fuente de alimentación de 5 voltios.

Afortunadamente, los convertidores de voltaje CC de 12 a 5 voltios se pueden encontrar fácilmente en muchos Amazon :solo necesita prestarle atención a la clasificación de amperaje  suministrado pues  necesitará un convertidor  DC/DC que pueda entregar 3 amperios o más.

Regulador convertidor CPT-UL-1 DC/DC 12 V a 5 V 3 A 15 W de potencia de pantalla LED para coche

Un convertidor de voltaje de 3 amperios dará un consumo de potencia máximo de 15 vatios ( 5v x 3 amperios á 15vatios). Para la configuración de hardware apuntada se estima  un consumo máximo de energía de 10,44 vatios, lo cual  da una  potencia  adicional de 4 vatios disponibles, pero si usted planea conectar una gran cantidad de dispositivos hambrientos de energía fuera del Pi sólo tenga en cuenta que la energía necesaria podría convertirse en un problema.

 

 GPS

La antena GPS externa no es un requisito, ya que la mayoría de los dispositivos GPS (sombreros o memorias USB) tendrán una antena pasiva incorporada. Una cosa a tener en cuenta es la ubicación de instalación prevista del ordenador en el coche, sin embargo. Si el Pi va a ser montado en el salpicadero  el dispositivo GPS estará rodeado en todos los lados por el acero que va a obstaculizar su ordenador conseguir una fijación GPS  por lo que lo mas sensato es usar una  antena GPS externa (tenga en cuenta que el uso de una antena GPS activa aumentará ligeramente el consumo de energía general del sistema ) .

 

Este es finalmente el aspecto que presenta el montaje  completo en el salpicadero

 

 

 

Software

 

El  autor de este proyecto nos proporciona una imagen de Raspbian preparada con todo el sw ya instalado que ha llamado Nomad  Pi  y que  ha subido a Google Drive para su descarga. en este link: Nómada Pi v1.1   ( son unos 2.3GB)

Una vez completada la descarga,descomprima el archivo de imagen y escriba en la tarjeta SD con el comando dd o pruebe Win32 Image writer si está utilizando un sistema Windows.

El objetivo principal de esta versión  11  era permitir el uso del sistema fuera de las restricciones de la interfaz principal de Nomadic Pi.

Algunos de los cambios más importantes en la versión v1.1 incluyen:

  • La capacidad de salir del modo de pantalla completa del navegador. Esto hace uso de la funcionalidad experimental táctil «salir de pantalla completa» en Chromium 61.
  • Permitir el uso para acceder a otras aplicaciones en el sistema o navegar por Internet en el Pi nómada como un ordenador de sobremesa estándar.
  • La adición de software de navegación GPS Navit para proporcionar funcionalidad de navegación giro a giro.
  • La posibilidad de entrar en el modo de «pantalla completa» en el navegador a través de la pantalla táctil cuando se desee utilizando un elemento de menú en el menú de la aplicación Nómada Pi.

La interfaz en sí está construida con el marco Ionic basado en AngularJS y se ejecuta dentro del navegador Chromium en modo quiosco.

 

 

Sw navegación

El ordenador del coche Nomadic Pi hace uso de algunas fuentes de datos externas para enriquecer la experiencia en carretera.Estos son:

  • Here.com – Información de límite de velocidad específica de ubicación y datos meteorológicos
  • LocationIQ – Información de direcciones legibles de los datos de latitud y longitud

 Estos servicios como puede intuir  requieren que el Pi nómada tenga una conexión a Internet activa, razón por la que precisamente en este montaje  se usa un dongle ZTE MF832  , aunque   en realidad   podría conectarse a un red MIFI  por ejemplo compartiendo la conectividad de nuestro smartphone

Para obtener claves de API necesarias, vaya al portal para desarrolladores here.com y regístrese para recibir una clave de API y un identificador de aplicación. La cuenta es gratuita y el acceso a sus servicios de datos es gratuito para menos de 15000 solicitudes al mes (que permite una solicitud cada 2,9 minutos).

Una vez que lo haya hecho, here.com id de aplicación y clave de API. Edite la configuración de la aplicación Nomadic Pi. Esto se puede encontrar en:

  • /home/pi/Software/car-computer/config/config.ini

Introduzca sus datos en la sección etiquetada [here-api]. Guarde los cambios y, a continuación, reinicie el Pi nómada para que los cambios surtan efecto.

Para usar el servicio de geocodificación inversa locationIQ, primero registre una cuenta para recibir un token de desarrollador. El token permite hasta 10.000 llamadas a la API al día de forma gratuita.

Después de recibir el token de desarrollador. Añádalo a la configuración de la aplicación Nomadic Pi bajo el encabezado [location-iq].

 

Cómo conectarnos  a  Noma pi

Si se usa un dongle  4g podemos compartir la conexión  vía Wifi. Para ello ,el acceso WIFI ,lo  conseguiremos una vez que el sistema haya terminado de arrancar. La forma más fácil de configurar el sistema es conectarse a través del punto de acceso WIFI.

SSID: Nomadic-PI
WPA Contraseña: pinomadica

Para cambiar la configuración de WIFI desde el valor predeterminado. Inicie sesión en Pi sobre SSH elevar a privilegios raíz. A continuación, edite el archivo de configuración hostapd.conf en el directorio /etc/hostapd.

En cuanto al acceso SSH, una vez conectado al ordenador del coche a través de WIFI,p uede iniciar sesión en Nomadic Pi en 192.168.2.1 con las siguientes credenciales:

Nombre de usuario: pi
Contraseña: pinomadico

Después de iniciar sesión como usuario pi, puede usar sudo para elevar a privilegios raíz.

SSH terminal session on the Nomadic Pi car computer

En este momento si su ordenador de coche tiene una conexión a Internet a través de Ethernet o un dongle 4G. Sería una buena idea actualizar los paquetes instalados en el sistema a la última y mejor:

apt-get actualización
apt-get actualización

Adición de música

De forma predeterminada, MPD está configurado para buscar música en /media/usbstick. Si desea que la música se reviva en otro lugar del sistema de archivos, tendrá que cambiar el directorio de música en los archivos de configuración MPD.

Lo más probable es que almacene la música en un dispositivo de almacenamiento separado que la tarjeta SD que contiene el sistema operativo. Si este es el caso, necesitará agregar una línea a su archivo /etc/fstab. Así que el dispositivo está montado en el arranque del sistema y el demonio MPD puede ver su colección de música.

Al igual que los propios archivos de música, las listas de reproducción se almacenan en los archivos /var/lib/mpd/playlists como archivos .m3u. La configuración MPD tendrá que cambiar si desea almacenarlos en una ubicación diferente.

 

 

Conclusión

Estamos  ante un interesante  proyecto que hace   una vez más uso  de la Raspberry Pi  como hw  casi único para toda la funcionalidad demandada. Los archivos multimedia se almacenan en un disco duro de 2,5 pulgadas y 1 TB con el demonio MPD que controla la reproducción de música. El dispositivo GPS permite una lectura en vivo de la velocidad y la ubicación actuales de los coches. Incluso en la página de inicio tendremos  advertencias de velocidad al exceder el límite de velocidad.

Quizás  se podría poner una única  pega  en cuanto a funcionalidad  pues  el autor se ha limitado al entretenimiento  o  al velocímetro  descuidando   otros aspectos que definitivamente  se pueden obtener en  una Raspberry PI  ( por ejemplo añadiendo sensores de aparcamiento, cámaras frontal  y trasera con reconocimiento de imágenes ,procesamiento de alarmas  con el GPIO , etc  )  que seguro la distanciarian de  una tableta corriendo Google Play Auto ( que es básicamente la funcionalidad actual)

 

Current music play queue.

 

 

El proyecto ahora tiene su propio sitio en https://www.nomadicpi.com donde se puede encontrar información sobre la construcción de su propio Pi nómada. Junto con una imagen preconstruida para descargar para su Raspberry Pi 3

La interfaz de usuario del proyecto todavía está en desarrollo activo con nuevas características que se agregan de forma regular. Con la base de código disponible libremente en github para su descarga bajo una licencia GPL V3.

Como ver la previsión del tiempo desde Raspberry Pi ( parte 2)


En un post anterior de como ver la previsión del tiempo desde una Raspberry Pir veiamos como  podemos ver la previson del tiempo en nuestra  Rasperry Pi ,  usando mediante el comando curl y  la utilidad  de  Wttr.in  , un servicio de previsión del tiempo orientada a la consola que admite varios métodos de representación de información tal como secuencias ANSI de  terminal,  estando orientado tanto para clientes de consola HTTP (Rizo, httpie o wget), como  para navegadores web en HTTP  , o incluso para visualizadores gráficos en formato PNG .

Previamente antes de lanzar el comando ,para que se visualice correctamente la salida de texto de este servicio ,  abriremos la consola de terminal   ajustaremos la ventana   del valor  por defecto (80 x25 ) a  130 x24 ,  por lo que nos iremos a Editar –>Preferencias –>Mostrar y seleccionaremos como  ventana por defecto los valores  al menos de  130 x 24    y cerraremos la ventana  del Terminal

Nuevamente abriremos otra consola de shell  en la Raspberry Pi  y escribiremos : 

curl wttr.in

Como resultado desde la misma consola veremos  un informe en  tiempo real para su ubicación   sin haber tenido  que especificar nada  más ,  ya  que  es   sensible tanto para la fecha actual como para la localización:

 

Sin duda este  servicio es muy interesante , pero  ademas permite una personalizacion muy alta como vamos a ver a continuación 

Unidades de tiempo

Por defecto las unidades USCS se utilizan para las consultas de los Estados Unidos y el sistema métrico para el resto del mundo. Puede reemplazar este comportamiento agregando o a una URL como esta:?u?m


$ curl wttr.in/Almeria?m

 

Formatos de salida

wttr.in actualmente soporta tres formatos de salida:

  • ANSI para el terminal;
  • ANSI para el modo de terminal, una línea;
  • HTML para el navegador;
  • PNG para los espectadores de la gráficos.

Los formatos ANSI y HTML son seleccionados basándose en la cadena User-Agent. El formato PNG se puede forzar mediante la adición al final de la consulta:.png

$ wget wttr.in/Almeria.png

Puede utilizar todas las opciones con el formato PNG como una URL, pero hay que separarlos con en vez de y:_?&

$ wget wttr.in/Paris_0tqp_lang=fr.png

Opciones para el formato PNG:

  • t (transparencia);transparency=150
  • transparencia = 0..255 para un nivel de transparencia personalizada.

La transparencia es una característica útil cuando PNGs de tiempo se utilizan para agregar datos a los cuadros:

$ convert source.jpg <( curl wttr.in/Oymyakon_tqp0.png ) -geometry +50+50 -composite target.jpg

En este ejemplo:

  • source.jpg -archivo de código fuente;
  • target.jpg -archivo de destino;
  • Oymyakon -nombre de la localización;
  • tqp0 -Opciones (recomendados).

Una línea de salida

Para el formato de salida de una línea, especifique los parámetros adicionales:format

$ curl wttr.in/Almeria?format=3
Almeria: 🌦 +11⁰C

Formatos preconfigurados disponibles: 1, 2, 3, 4 y el formato personalizado usando la notación porcentual (véase abajo).

Puede especificar varias ubicaciones separadas (para repetir consultas)::

$ curl wttr.in/Almeria:Granada:Jaen?format=3
Almeria: 🌦 +11⁰C

O para procesar todas las consultas de este a la vez:

$ curl 'wttr.in/{Almeria,Granada,Jaen}?format=3'
Almeria: 🌦 +14⁰C
Granada: 🌦 +14⁰C
Jaen: 🌦 +14⁰C

Para especificar su propio formato personalizado, utilice el especial-notación:%

    c    Weather condition,
    t    Temperature,
    w    Wind,
    l    Location,
    m    Moonphase 🌑🌒🌓🌔🌕🌖🌗🌘,
    M    Moonday,

Por lo tanto, estas dos llamadas son las mismas:

    $ curl wttr.in/Almeria?format=3
    Almeria: ⛅️ +14⁰C
    $ curl wttr.in/Almeria?format="%l:+%c+%t"
    Almeria: ⛅️ +14⁰C

Tenga en cuenta, que cuando se utiliza en, tiene que escapar con %, es decir, escribir allí en vez de.tmux.conf%%%%%

En programas, que están consultando el servicio automáticamente (por ejemplo tmux), es mejor utilizar un intervalo de actualización razonables. En tmux, puede configurarlo con.status-interval

Si varias ubicaciones separadas, se especifican en la consulta, especifique el período de actualización como un parámetro de consulta adicional::period=

set -g status-interval 60
WEATHER='#(curl -s wttr.in/London:Stockholm:Moscow\?format\="%%l:+%%c%%20%%t%%60%%w&period=60")'
set -g status-right "$WEATHER ..."

Fases de la luna

wttr.in puede utilizarse también para comprobar la fase de la luna. Este ejemplo muestra cómo ver la fase lunar actual:

$ curl wttr.in/Moon

Obtener la fase lunar para una fecha determinada mediante la adición de:@YYYY-MM-DD

$ curl wttr.in/Moon@2016-12-25

La información de la fase de luna utiliza pyphoon como su back-end.

Internacionalización y localización

wttr.in es compatible con nombres de ubicaciones multilingüe que pueden especificarse en cualquier idioma del mundo (puede ser sorprendente, pero muchos lugares en el mundo no tienen un nombre en inglés).

La cadena de consulta debe especificarse en Unicode (hexadecimal codificado o no). Espacios en la cadena de consulta deben ser reemplazados por:+

$ curl wttr.in/станция+Восток
Weather report: станция Восток

               Overcast
      .--.     -65 – -47 °C
   .-(    ).   ↑ 23 km/h
  (___.__)__)  15 km
               0.0 mm

El lenguaje utilizado para la salida (excepto el nombre de la ubicación) no depende del idioma de entrada y es inglés (por defecto) o el idioma preferido del navegador (si la consulta fue emitida desde un navegador) que se especifica en la consulta cabeceras ().Accept-Language

El lenguaje se puede establecer explícitamente al usar a clientes de consola mediante las opciones de línea de comandos como este:

curl -H "Accept-Language: fr" wttr.in
http GET wttr.in Accept-Language:ru

El idioma puede ser forzado mediante la opción:lang

$ curl wttr.in/Almeria?lang=es

La tercera opción es elegir el idioma utilizando el nombre DNS utilizado en la consulta:

$ curl de.wttr.in/Almeria

wttr.in está actualmente traducido a 54 idiomas, y el número de idiomas está en constante crecimiento.

Ver /:translation para aprender más sobre el proceso de traducción, para ver la lista de idiomas soportados y colaboradores, o saber cómo puede ayudar a traducir wttr.in en tu idioma.

 

Instalación en local

Tambien  puede instalar este servicio de previsión de tiempo en su en nuestra  Rasperry Pi , 

Para instalar la aplicación estos son los pasos a seguir:

  1. Instalar dependencias externas
  2. Instalar dependencias de Python utilizadas por el servicio
  3. Obtener una clave de API de WorldWeatherOnline
  4. Configurar wego
  5. Configurar wttr.in
  6. Configurar el servicio de HTTP-frontend

Instalar dependencias externas

wttr.in tiene las siguientes dependencias externas:

  • golang, dependencia de wego
  • wego, cliente tiempo para terminal

Después de instalar golang, instalar:wego

$ go get -u github.com/schachmat/wego
$ go install github.com/schachmat/wego

Instalar dependencias de Python

Requisitos de Python:

  • Flask
  • geoip2
  • geopy
  • requests
  • gevent

Si desea obtener informes meteorológicos como archivos PNG, también debe instalar:

  • PIL
  • Pyte (> = 0,6)
  • fuentes necesarias

Puede instalar la mayoría de ellos utilizando.pip

Si se utiliza:virtualenv

$ virtualenv ve
$ ve/bin/pip install -r requirements.txt
$ ve/bin/pip bin/srv.py

Además, es necesario instalar la base de datos de geoip2. Puede utilizar una base de datos libre GeoLite2 que puede ser descargado (http://dev.maxmind.com/geoip/geoip2/geolite2/).

Obtener una clave de WorldWeatherOnline

Para obtener una clave de API de WorldWeatherOnline, se debe registrar aquí:

https://developer.worldweatheronline.com/auth/register

Configurar wego

Después de tener una clave de WorldWeatherOnline, usted puede configurar:wego

$ cat ~/.wegorc 
{
    "APIKey": "00XXXXXXXXXXXXXXXXXXXXXXXXXXX",
    "City": "London",
    "Numdays": 3,
    "Imperial": false,
    "Lang": "en"
}

El parámetro se omite.City~/.wegorc

Configurar wttr.in

Configurar las siguientes variables de entorno que definen la ruta de acceso a la instalación local, a la base de datos de GeoLite y a la instalación. Por ejemplo:wttr.inwego

export WTTR_MYDIR="/home/igor/wttr.in"
export WTTR_GEOLITE="/home/igor/wttr.in/GeoLite2-City.mmdb"
export WTTR_WEGO="/home/igor/go/bin/wego"
export WTTR_LISTEN_HOST="0.0.0.0"
export WTTR_LISTEN_PORT="8002"

Configurar el servicio de HTTP-frontend

Se recomienda que también configurar el servidor web que se utilizará para acceder al servicio:

server {
    listen [::]:80;
    server_name  wttr.in *.wttr.in;
    access_log  /var/log/nginx/wttr.in-access.log  main;
    error_log  /var/log/nginx/wttr.in-error.log;

    location / {
        proxy_pass         http://127.0.0.1:8002;

        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $remote_addr;

        client_max_body_size       10m;
        client_body_buffer_size    128k;

        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;

        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;

        expires                    off;
    }
}

 

Mas información en  https://github.com/chubin/wttr.in