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.

 

Construccion casera de una regleta ahorradora de energia


En este post vamos a ver un sencillo un interruptor maestro / esclavo  casero  de bajo costo y fácil de construir para la integración en regletas de enchufes  para la conmutación automática de «esclavos» al estado del «maestro», es decir un circuito que detecte que un dispositivo esta funcionando ( por ejemplo una TV ) y de alimentación a otra serie de dispositivos que tienen relación con la TV : el blueray, el descodificador, discos multimedia,la barra de sonido ,etc

El fundamento del circuito no es demasiado complicado basándose en un sensor incorporado que monitorea el paso de corriente de la unidad maestra, de modo que cuando la corriente supera un nivel predefinido, las salidas de esclavo se activan automáticamente. 

Concretamente este dispositivo, de hecho, está diseñado para su uso con un ordenador de escritorio :cuando se enciende el PC de escritorio, todos los periféricos como la pantalla del monitor, la impresora, el escáner, los altavoces multimedia, etc. se encienden automáticamente pero es de aplicación en muchas mas aplicaciones donde se requiera que la alimentación de un varias unidades (slave) dependa de una sola (master) .

 

Antes de empezar con el circuito se pueden  realizar pruebas aleatorias en el módulo del transformador  con la resistencia de carga de 200 ohmios integrada,a la corriente máxima (5,000 mA),de modo que  se puede obtener 1,000 mV a través de la resistencia de carga, exactamente como se esperaba, con una sola vuelta .

Con cinco vueltas en el primario, la salida observada a través de la resistencia de carga puede legar a ser aproximadamente de 5,000 mV a una corriente primaria de 5,000 mA. 

Observe que como la resistencia de carga se coloca en paralelo con el devanado secundario, se monitoriza el voltaje a través de él en lugar de la corriente a través de él , porque es mucho más fácil tener un voltaje de salida con el que trabajar que una corriente de salida.

Descripción del circuito

El circuito está diseñado alrededor de dos componentes clave: un transformador de corriente y un módulo SMPS compacto. El transformador de corriente (CT) es un tipo 5-A / 1,000: 1 con una «resistencia de carga» incorporada y la fuente de alimentación es  un módulo SMPS  de un tipo 5-V / 3-W (HLK-PM01). 

El transformador de corriente está diseñado específicamente para monitorear la corriente, y se puede mejorar enrollando algunas vueltas de cable aislado a través de su núcleo para obtener una salida útil del secundario. Cuando el transformador de corriente detecta una gran cantidad de corriente de carga desde la unidad maestra, un relé electromagnético (RL1) se activa para alimentar todo lo conectado al esclavo y se duerme nuevamente cuando se apaga la unidad maestra.

Como se muestra, el circuito e trabaja en conmutación de modo que cuando pasa la tensión suficiente por el secundario de  CT , T1 entra en saturación  haciendo que T2  conduzca   dando corriente al relé de 10 A, con una resistencia de la bobina de 400 Ω o más, aunque también puede impulsar bobinas con una resistencia más baja siendo el valor sugerido una resistencia de la bobina de 200 Ω .

Todo  lo  demás es  una fuente de 5V DC integrada para alimentar el circuito    y las conexiones necesarias  para que lso contactos NA del relé de paso a los enchufes conectados  en el lado SLAVE

La lista de componentes es relativamente corta:

  • Fuente dc de 5v/3w ( por ejemplo se puede usar el modulo HLK-PM01)
  • Transformador  de corriente CT 5A 1000:1. Se puede comprar en Amazon por 1,48e
  • 2x diodos 1N4007
  • 3x  resistencias de 1K
  • 1x resistencia de 10k
  • 1x led rojo
  • Rele de 5V /10Amp
  • 1x transistor tipo  S8050
  • 1x transistor tipo  S8550

 

En realidad, detectar la corriente de carga de la unidad maestra puede ser un poco complicado, pero el empleo del transformador de corriente lo hace flexible. Debido a que la CT 5-A / 1,000: 1 (5 A a 5 mA) CT tiene una resistencia de carga / carga de 200 a través de su salida, asi que la corriente de CA puede calcularse midiendo la caída de voltaje en la resistencia; es decir, obtenemos una salida de 1 V a una corriente de carga de 5 A (corriente primaria dividida por la relación de vueltas y multiplicada por el valor del resistor de carga).

 Cuando use el CT, el número de giros primarios (bucles de cable ) necesarios depende del tipo de CT en sí y de la corriente que pase por la unidad maestra. Con el transformador mencionado aquí, simplemente comience con una a tres vueltas e intente aumentar o disminuir el número de vueltas para corrientes de carga más bajas o más altas para adaptar el circuito a su aplicacion.

Además, puede reemplazar la resistencia de carga de 200 Ω a bordo del CT por una resistencia de valor más alta (o incluso una resistencia ajustable ) porque aquí no es necesario preocuparse más por los problemas inherentes de saturación y respuesta de frecuencia * del transformador actual.

Observe que cuando «engañamos» al transformador de corriente para que vea una corriente más grande de la que realmente está presente al enrollar el cable que se está monitoreando a través del   CT dos o tres veces, la corriente que ve , se doblará o triplicará. Debido a que el  transformador de corriente utilizado en este diseño tiene una capacidad de detección de corriente máxima teórica de 5 A, intentar detectar una corriente más grande tendrá dos efectos:

  • El voltaje de salida podría aumentar,
  • Al exceder el límite de 5-A obliga al transformador a saturarse y degrada su linealidad . Para que los diseños midan con precisión el valor de la corriente que se observa, esto importaría;sin embargo, todo lo que nos importa aquí en este circuito es si está activo o no.

Consejos de construcción

El circuito está diseñado para usar componentes de bajo costo y la mayoría no son críticos. Sin embargo, a diferencia de los dispositivos comerciales, este interruptor maestro / esclavo requiere un «recorte inicial» algo molesto del umbral de carga. 

Como se mencionó anteriormente, se puede eliminar la resistencia de carga para agregar una resistencia ajustable de 1K o similar a través de la salida del CT si desea un rango bastante amplio de ajustes de umbral de carga.

Para aplicaciones de la vida real, sería mejor crear una placa única a medida, ya que lo habitual es extremadamente inseguro con los voltajes de red. El diseño terminado se puede encerrar en un contenedor aislado adecuado. 

El transformador de corriente se puede colocar cerca del enchufe maestro que se está monitoreando. Tenga en cuenta que se están detectando corrientes a voltajes fatales de la red, por lo que se debe tener cuidado para garantizar que todo lo relacionado con el lado de la red eléctrica se realice de acuerdo con las normas de cableado / seguridad adecuadas y se mantenga separado de todo lo demás. !Mucho cuidado pues un pequeño error pude provocar un descarga que puede resultar  fatal!

 

 

 

Fuente :  https://www.electroschematics.com/13509/building-smart-masterslave-switch/