Android Auto con una Raspberry Pi


Android Auto, es un sistema que usa un hardware especifico  diseñado para poder utilizar algunas funciones de nuestros móviles mientras conducimos, como ver mensajes, cambiar de canción, recibir instrucciones para el GPS, hacer llamadas, etc. Hasta ahora era necesario que el coche fuera de los más nuevos e incorporara el sistema o incorporar una cara pantalla que lo incluya, pero gracias a Raspberry Pi ya no es necesario ¿le  interesa como lograrlo, pues siga leyendo porque la verdad es que no puede ser mas sencillo .

 

 

En efecto , en 2015, Google presentó Android Auto , un sistema que permite a los usuarios proyectar ciertas aplicaciones desde sus teléfonos inteligentes Android en la pantalla de información y entretenimiento de un automóvil. La interfaz amigable para el conductor de Android, con botones táctiles y comandos de voz más grandes, tiene como objetivo hacer que sea más fácil y seguro para los conductores controlar la navegación, la música, los podcasts, la radio, las llamadas telefónicas y más, mientras mantiene la vista en la carretera. Android Auto también se puede ejecutar como una aplicación en un teléfono inteligente Android, lo que permite a los propietarios de vehículos de modelos más antiguos sin pantallas de unidades principales para aprovechar estas características.

 

Si bien hay muchas aplicaciones disponibles para Android Auto, los desarrolladores están trabajando para ampliar  su catálogo.De hecho una nueva herramienta de código abierto llamada OpenAuto espera facilitarlo al ofrecer a los desarrolladores  como una forma de emular Android Auto en una Raspberry Pi 

 Con OpenAuto, los desarrolladores pueden probar sus aplicaciones en condiciones similares a las de cómo trabajarán en una unidad de cabeza de automóvil real ,  pero ademas ,  como puede imaginarse también sirve para implementar Android Auto en un vehículo convencional  que no contara  con esta facilidad .

Las funciones implementadas a día de hoy en Android Auto son:

  • Vídeo a 480p, 720p y 1080p a 30 o 60 fps
  • Decodificación hardware de vídeo en la Raspberry Pi 3 (hasta 1080p@60fps)
  • Reproducción de audio de todos los canales (multimedia, sistema y voz)
  • Entrada de audio para comandos de voz
  • Touchscreen y botones
  • Bluetooth
  • Inicio automático tras conectar el dispositivo
  • User-friendly

Además de la   Raspberry Pi 3 y un dispositivo Android  con la app de Android Auto instalada, se necesita:

  • Microfono USB : la Raspberry Pi 3 no tiene una entrada de micrófono, que se requiere para usar el Asistente de voz de Google ( si no se instala no se podrán dar ordenes vocales)
  • Dispositivo de salida de video: puede usar una pantalla táctil o cualquier otro dispositivo de salida de video conectado a HDMI o salida compuesta (RCA)
  • Dispositivo de entrada: por ejemplo, una pantalla táctil o un teclado USB

 

OpenAuto

OpenAuto es un emulador para la unidad principal de Android Auto.Emula el software de la unidad principal y le permite usar Android Auto en su PC o en cualquier otra plataforma integrada como Raspberry Pi 3.

El software de la unidad principal es una interfaz para la proyección automática de Android. Toda la magia relacionada con Android Auto, como la navegación, el Asistente de voz de Google o la reproducción de música, se realiza en el dispositivo Android.

 La proyección de Android Auto en la unidad principal se realiza utilizando el códec H.264 para video y el códec PCM para la transmisión de audio. Esto es lo que hace principalmente el software de la unidad principal: descodifica la transmisión de video H.264 y las transmisiones de audio PCM y las reproduce de manera conjunta. Otra función de la unidad principal es proporcionar entradas de usuario pues OpenAuto admite eventos táctiles y teclas duras.

Para una implementación exitosa, se necesita implementar el soporte de aceleración de hardware de video usando la GPU Raspberry Pi 3 (VideoCore 4).Gracias a esto, la proyección automática de Android en la  Raspberry Pi 3 puede manejarse incluso con una resolución de 1080p a 60 fps. Se pueden usar las bibliotecas cliente OpenMAX IL e IL entregadas junto con el firmware Raspberry Pi para implementar la aceleración de hardware de video.

Aprovechando el hecho de que el sistema operativo Raspberry Pi es Raspbian basado en Debian Linux, OpenAuto también puede construirse para cualquier otra plataforma basada en Linux que brinde soporte para la decodificación de video por hardware. La mayoría de las plataformas basadas en Linux proporcionan soporte para decodificación de video por hardware directamente en GStreamer. Gracias a las bibliotecas altamente portátiles como Boost y Qt , OpenAuto se puede construir y ejecutar en la plataforma Windows. 

El proyecto se basa en la instalación de una distribución Linux, Raspbian Stretch, a la que luego se le añaden librerías como las célebres Qt para poder ejecutar las aplicaciones orientadas a ser utilizadas en el coche.

A la Raspberry Pi 3 en la que se han basado para iniciar el proyecto se le conecta una pantalla táctil (480p, 720p o 1080p) que es recomendable para la interacción con el sistema. Completar el proceso es relativamente sencillo, y tanto el código fuente (en GitHub) como las instrucciones de instalación están disponibles públicamente.

El proyecto, desarrollado por Michal Szwaj, plantea por ahora un sistema en el que es posible controlar la reproducción multimedia —el soporte Bluetooth es protagonista—, o acceder a los mapas de Google, por ejemplo. De momento no se ofrecen funciones como la navegación GPS, pero la versatilidad de la Raspberry Pi hace que esa opción no parezca difícil de implementar.

El proyecto de hecho no solo está disponible para la Raspberry Pi, sino también para sistemas Linux y Windows, y su licencia GPLv3 invita a cualquiera a investigar y contribuir a una iniciativa que una vez más demuestra la versatilidad de la Raspberry Pi.

Componentes de Open Auto

El núcleo de OpenAuto es la biblioteca aasdk , que proporciona soporte para todas las funciones de Android Auto. La biblioteca aasdk está construida sobre las bibliotecas Boost, libusb y OpenSSL. libusb implementa la comunicación entre la unidad principal y un dispositivo Android (a través del bus USB). Boost proporciona soporte para los mecanismos asíncronos de comunicación. Es necesario para la alta eficiencia y escalabilidad del software de la unidad principal. OpenSSL se utiliza para cifrar la comunicación.

La biblioteca aasdk está diseñada para ser completamente reutilizable para cualquier propósito relacionado con la implementación del software de la unidad principal. Puede usarlo para crear su propio software de unidad principal para su plataforma deseada.

Otra biblioteca muy importante utilizada en OpenAuto es Qt. Proporciona soporte para multimedia, entrada de usuario e interfaz gráfica de OpenAuto. Y el sistema de compilación que está utilizando OpenAuto es CMake .

 El protocolo de Android Auto se toma de otro gran proyecto de unidad principal de Android Auto llamado HeadUnit . Las personas que trabajan en este proyecto hicieron un trabajo increíble en la ingeniería inversa del protocolo AndroidAuto y crearon los buffers de protocolo que estructuran todos los mensajes.

Para instalar Android Auto paso a paso podemos seguir los siguientes pasos :

  1. Construir aasdk 

    1. Instalar el software necesario 

      $ sudo apt-get install -y libboost-all-dev libusb-1.0.0-dev libssl-dev cmake libprotobuf-dev protobuf-c-compiler protobuf-compiler

      1. Repositorio de aasdk clon

      $ cd

      $ git clone -b master https://github.com/f1xpl/aasdk.git

      1. Crear el directorio aasdk_build en el mismo nivel que aasdk dir

      $ mkdir aasdk_build

      $ cd aasdk_build

      1. Generar archivos de cmake

      $ cmake -DCMAKE_BUILD_TYPE=Release ../aasdk

      1. Construir aasdk

      $ make

  2. Instalar el software necesario

$ sudo apt-get instala -y libqt5multimedia5 libqt5multimedia5-plugins libqt5multimediawidgets5 qtmultimedia5-dev libqt5bluetooth5 libqt5bluetooth5-bin qtconnectivity5-dev librtaudio-dev pulseaudio librtaudio5a

  1. Construir ilclient desde el  firmware de la Raspberry

$ cd /opt/vc/src/hello_pi/libs/ilclient

$ make

  1. Clonar repositorio de Open

$ cd

$ git clone -b master https://github.com/f1xpl/openauto.git

  1. Crear el directorio openauto_build en el mismo nivel que Open dir

$ mkdir openauto_build

$ cd openauto_build

  1. Generar archivos de cmake. Si es necesario, ajustar trazados por consiguiente a su localización de directorios aasdk y aasdk_build.

$ cmake-DCMAKE_BUILD_TYPE = liberación-DRPI3_BUILD = TRUE – DAASDK_INCLUDE_DIRS = «/ home/pi/aasdk/include»-DAASDK_LIBRARIES=»/home/pi/aasdk/lib/libaasdk.so»-DAASDK_PROTO_INCLUDE_DIRS = «/ home/pi/aasdk_build»-DAASDK_PROTO_LIBRARIES = «usual PI/AASDK/lib/libaasdk_proto.so»… /openauto

  1. Construir Open

$ make

  1. Ejecutar Open

$ /home/pi/openauto/bin/autoapp

 

Puede seguir todos los pasos anteriores  o bien seguir el instalador  creado por novaspirit , el cual hace todo el proceso automáticamente:

  1.  Descargar el script de instalación desde el  github de novaspirit                                       $ git clone https://github.com/novaspirit/androidauto_rpi_install 
  2. Ahora necesitamos cambiar a ese directorio                                                                         $ cd androidauto_rpi_install 
  3. Para ejecutar el script install.sh necesitamos cambiar los permisos para permitir que se ejecute.                                                                                                                         $ chmod +x install.sh 
  4. Ahora podemos instalar Android Auto                                                                                  $ ./install.sh 

Este proceso puede tardar casi media hora pero ojo porque nos informara en primer lugar que ha instalado las dependencias  y tendremos que pulsar  intro par seguir 

Asimismo al rato nos informara que esta clonando y construyendo el SDK  de Androd Auto

Acto seguido nos informara de que esta construyendo el firmware de ilclient

Seguidamente ya se empezará a clonar y construir la imagen de OpenAuto 

 Si en este punto aborta con  un error es muy posible  que haya ocurrido en el transcurso de la compilación de OpenAuto

Puede realizar los pasos finales del script de modo manual sin la  opción del parametro -j4, es decir:

$make 

Y ahora habilitamos  OpenAuto en el arranque :

$echo «sudo /home/pi/openauto/bin/autoapp» >> /home/pi/.config/lxsession/LXDE-pi/autostart

Y con esto arrancamos OpenAuto

$whiptail –title «OpenAuto RPi» –msgbox «Strating OpenAuto» 8 78

$/home/pi/openauto/bin/autoapp

 

Después de esta larga espera, ya estará  lista la instalación  para conectar su teléfono a su Raspberry Pi.

Si ha  conseguido llegar a este punto  de la pantalla anterior , ya esta en condiciones de probar la funcionalidad de Android Auto para lo cual puede conectar por USB  un smartphone  Android  con la app instalada de Android Auto  a uno de los conectores USB de la Raspberry Pi

En seguida debería reconocer  el terminal que esta intentando conectar con la Raspberry, y en unos segundos ya debería cambiar la pantalla en la Raspberry pi por  el menu de Android Auto desde el cual podra acceder a Google Map, ver las llamadas o los mensajes  y reproducir su musica favorito a traves del interfaz tacil de su Raspberry Pi

 

OpenAuto está licenciado bajo GPLv3.Para obtener más información, visite la página GitHub del proyecto , donde puede encontrar su código fuente y mas información.

Crankshaft

Y es que en lugar de tener que gastar una fortuna  en una pantalla para el coche que incluya Android Auto de marcas como Pioneer o Sony, se  puede hacer lo mismo  gracias a una distribución de GNU/Linux llamada Crankshaft.

Solo necesitaremos la Raspberry Pi con la pantalla tactil instalada e instalar la imagen de Crankshaft y por supuesto encontrarle un hueco en el salpicadero de nuestro coche(su creador recomienda que compremos la pantalla oficial y una carcasa)

Huan Truong   se decidió a crear este proyecto cuando buscaba incorporar un sistema Android Auto en su viejo coche. Vio que había una alternativa llamada OpenAuto que recientemente fue lanzada de manera pública tal y como hemos visto , pero esta opción le parecía  más compleja porque requería compilarla y añadir una serie de configuraciones para hacerla funcionar. Por ello, se lanzó a hacerlo todavía más sencillo.

Crankshaft se puede descargar en la página web oficial. Troung recuerda que el proyecto se encuentra en versión alpha y no se responsabiliza de ningún problema que pueda surgir durante su utilización, ya que es un hobby y no una versión estable desarrollada por Google. Por tanto, tened mucho cuidado si lo utilizáis y dependéis de él.

Al estar todavía en fase experimental, le faltan bastantes funcionalidades. Por ejemplo, no cuenta con implementación para micrófono, por lo que el control por voz mediante Ok Google no funciona. Tampoco tiene Bluetooth, por lo que es necesario conectar el móvil mediante USB para poder usarlo con el sistema (Truong afirma que quiere incluirlo más adelante, aunque no tiene prisa). El listado de móviles compatibles incluye prácticamente todos los recientes, y puede comprobar el listado de usuarios que afirma que funciona con su móvil en la página de GitHub.

 

Como reparar un mini altavoz


Los años 80 marcaron todo un hito en cuanto a movilidad en el mundo de la tecnología de consumo. ¿Quién no recuerda esos primeros  wolkman   , los potentes radiocassete alimentados a pilas   o  incluso las  primeras televisiones portátiles? Pues en efecto  gracias a la miniaturización de la electrónica  ,la  optimización de los diseños y a la mejora del   consumo eléctrico,   por fin  fue posible  dar movilidad a la electrónica domestica  para disfrutar de esta en cualquier zona o  lugar 

En efecto puede parecer anacrónico echarnos 40 años atrás pues hoy en dia  el  panorama ,como sin duda amigo lector sin duda conocerá , es bien distinto pues  usamos  smartphone , tablets, ordenadores  o incluso TV inteligentes   para escuchar nuestra música favorita  con una calidad incluso similar a  los altos estándares HIFI   que tan de moda se pusieron en  aquellos tiempos . No obstante a pesar de   todo estos nuevos dispositivos ,  no significa que no podamos contar con altavoces portátiles de calidad de todos los tamaños o funciones que se nos puedan ocurrir,  pues sin duda la tecnología  ha avanzado   y mucho también en esta cuestión  ya  que tenemos que entender que existen tantas formas distintas de disfrutar de una buena sesión musical como de personas hay en este planeta por lo que habrá personas que  quieran un altavoz pequeño y sencillo para disfrutar de su música de la forma más cómoda y simple, y, en el otro extremo, habrá quien prefiera una bestia ostentosa con la que ambientar una gran fiesta, incluso a golpe de voz gracias a un micrófono. Ademas  tampoco debemos olvidar a los amantes de los efectos de luz o a los puristas de lo estético. 

 

 

Muchas firmas se animan a lanzar multitud de altavoces portátiles al mercado dentro de todo tipo de rango de precios, calidades y enfoques, así que no está de más dar una visión genérica  para    ver el interior de uno de los altavoces más difundidos  procedentes del mercado oriental   ( y que podemos encontrar ahora mismo en Amazon ) , de modo que a  cuando deje de funcionar  dado su bajo coste  antes de desacharlo  podamos  intentar repararlo

El modelo que vamos  a ver  es el  MusicMan MA 3431  que cuenta con un amplificador de estéreo 3w x2 RMS, lector de unidad flash USB y Micro SD TF (hasta 32GB). También cuenta con radio FM estéreo una  entrada de  Line-in/AUX  mediante in jack de(3,5 mm/analógico

Para funcionar el MusicMan MA 3431 cuenta con una batería de litio de  600 mAh que en teoría debería ofrecernos  un  ttiempo de reproducción  de unas ~ 6 horas  con un tempo de carga de  unas ~ 4 horas  a  traves de un conector  de 5v DC

Por supuesto ,como otros productos orientales ,  este popular modelo lo veremos en un sinfín de marcas  ( y por supuesto colores) pero  tanto el armazón de aluminio , como la electrónica del interior son las mimas 

 

 

 

Este  reproductor  suele funcionar bastante bien ,pero   con el uso  hay partes  que poco  a poco dejaran de responder  como son la batería , el conector de  carga , el circuito de carga de la batería, el interruptor de encendido y por supuesto  en ultima instancia la placa de control o los altavoces.

Si el reproductor  ya ha pasado la garantía , y  no nos funciona o se apaga a los pocos minutos con la batería recién cargada es sinónimo  de problemas en  la alimentación a la placa ,para lo cual se hace necesario desmontarlo  para averiguar el motivo del problema

En primer lugar soltaremos los altavoces de los lados  que van a presión ( utilice una herramienta de plástico de las usadas para desmontar los móviles)  y acto seguido nos toca desmontar la placa madre , la cual , como podemos ver en la imagen de abajo ,  va sujeta simplemente con dos tornillos

 

Para quitar  estos , en el lado  del plástico del testigo  de carga quitaremos la pegatina  que oculta las cabezas de esos  dos tornillos y  ya podemos proceder a  aflojar  estos  , lo cual hará que se suelte el embellecedor del conector USB de la cara opuesta.

 

 

 

Ahora  ya tenemos la placa con los dos altavoces   y la batería que despegaremos del armazón .

 

En la placa se observan claramente  ,los pulsadores de control en el extremo superior . Es de destacar  también a  ambos lados de la placa  los dos pequeños amplificadores de audio junto     con las conexiones de los dos altavoces . El conjunto se completa  con el circuito de audio en el centro   y abajo junto los jack el circuito de carga de la batería

En primer lugar  mediremos con un polímetro en los extremo de  la batería , lo cual en este caso  nos da unos 4.06V , lo cual  debería ser suficiente para que reaccionar el circuito por lo que lo siguiente a revisar es el interruptor general  que esta cerca del lector de microsd.

Si el circuito sigue sin responder, otra opción interesante es descartar la batería ,  por si esta  no tuviese  suficiente carga, Para ello,  podemos intentar  alimentar  con una fuente de laboratorio  a través del propio conector de la batería  a ver si reacciona el circuito. 

En caso afirmativo ya sabe que probablemente sea la batería y/o el propio circuito  de carga , por lo que podría  añadir una nueva  batería ( no olvide respetar la polaridad) , pero otra opción mas barata y que mejorara las prestaciones es optar por una powerbank , por lo que si lo desea puede  realizar una sencilla modificación

Tanto si no desea cambiar la batería como si  confirma que falla el  circuito de carga o el propio de alimentación , una opción si no necesitamos alimentarlo con la batería interna   es «hackear»  la  propia placa  para alimentarlo directamente con 5V DC ,  lo cual por cierto dada su diseño no era posible ( es decir no permite reproducir música y ademas cargar la batería)

Para esta pequeña modificación podríamos usar un conector micro usb y fijarlos a la caracas  , pero es mucho mas sencillo optar por un cable usb reciclado al que cortaremos por el otro extremo s de modo que solo queden los cables  rojo  y negro

En la placa  tomaremos el cable negro del conector de la batería    al cable negro del cable USB   para  la alimentación exterior

En cuanto al punto de entrada de +5V , este  se ha obtenido  por ingeniería  inversa   y esta justo a la salida del circuito de carga a la izquierda del led indicador de carga  y unos mm  por debajo  como se puede ver en la imagen  , y que conectaremos  al cable rojo del cable USB para  la alimentación exterior.

 

 

Con esta  pequeña  modificación usando un cable usb para alimentar el reproductor  toca probarlo enchufando este nuevo cable a una fuente de 5v  con salida USB 

 

 

Comprobado el funcionamiento  toca volver a montar la placa en el centro de la carcasa de aluminio

 

Una vez coloquemos uno los altavoces observaremos  que necesitamos un agujero donde pueda pasar el nuevo cable usb de alimentación  por lo que con una lima justo  en unos de los bordes practicaremos  una pequeña canaladura para poderlo llevar al exterior .

Finalmente colocaremos el segundo altavoz  y habremos terminado de modificar este  estupendo reproductor añadiendo ademas una nueva funcionalidad   que antes su diseño  no permitía ,  pues podrá ser alimentado por powerbank   o por simples cargadores usb   de 5v  de forma indistinta

En la foto podemos  el aspecto de este MusicMan MA 343 1    tras la modificación