Android Auto: Lleva tu ODROID de Viaje

Android Auto

Android Auto es una aplicación de Google que permite que un ODROID-C2/C1+ funcione como un ordenador de a bordo con soporte para navegación, audio y manos libres. Las instrucciones en video están disponibles en youtube "[ODROID/Android Auto]chip car head unit". La aplicación se ejecuta dentro de Linux utilizando la aplicación OpenAuto.

Figure 1
Figura 1

Figure 2
Figura 2

Materiales

Figure 3 - We prepared two buttons for use as a shut-down switch. For this project, we used the bigger button
Figura 3 - Preparamos dos botones para usarlos como interruptor de apagado. Para este proyecto, utilizamos el botón más grande

Figure 4 - We prepared two buttons for use as a shut-down switch. For this project, we used the bigger button
Figura 4 - Preparamos dos botones para usarlos como interruptor de apagado. Para este proyecto, utilizamos el botón más grande

Figure 5 - We used a cigarette lighter power adapter as power supply
Figura 5 - Usamos un adaptador de corriente para el mechero como fuente de alimentación

Figure 6 - To connect the power adapter to SmartPower2, we changed the connector to a 5.5mm L type cable
Figura 6 - Para conectar el adaptador de alimentación a SmartPower2, cambiamos el conector por un cable tipo L de 5,5 mm

Software

Este proyecto está basado en ubuntu64-16.04.3-mate, Android Auto versión 2.2. Funciona muy bien en ODROID-C2 y ODROID-C1+.

Instalar dependencias

Antes de instalar Audio Auto, debe instalar los paquetes de dependencia

$ sudo apt-get update && sudo apt-get upgrade
$ sudo apt-get install -y git-core curl dh-autoreconf libboost-all-dev libusb-1.0.0-dev libssl-dev cmake libqt5multimedia5 libqt5multimedia5-plugins libqt5multimediawidgets5 qtmultimedia5-dev libqt5bluetooth5 libqt5bluetooth5-bin qtconnectivity5-dev pulseaudio gstreamer1.0-plugins-bad gst123 librtaudio-dev
La siguiente script se conectará automáticamente en la cuenta de Android después de cada inicio:
$ sudo vi /usr/share/lightdm/lightdm.conf.d/60-lightdm-gtk-greeter.conf
 [Seat:*]
 greeter-session=lightdm-gtk-greeter
 autologin-user=odroid

Instalación

Para usar Android Auto, necesitarás instalar OpenAuto, que requiere que se instale tanto aasdk como protocol-buffers. Antes de actualizar el compilador, verifica la versión del compilador GCC. La versión de GCC debe ser 6 o superior:

$ gcc -v
 Using built-in specs.
 COLLECT_GCC=gcc
 COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/5/lto-wrapper
 Target: aarch64-linux-gnu
 Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-arm64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-arm64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-arm64 --with-arch-directory=aarch64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu
 Thread model: posix
 gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9)
Añade el repositorio a través de los comandos add-apt-repository, luego instala gcc-6:
$ sudo apt update
$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
$ sudo apt update
$ sudo apt install gcc-snapshot -y
$ sudo apt update
$ sudo apt install gcc-6 g++-6 -y
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-6
$ sudo update-alternatives --config gcc
Tras la instalación, deberías ver que el GCC actualizado está disponible:
$ gcc -v
 Using built-in specs.
 COLLECT_GCC=gcc
 COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/6/lto-wrapper
 Target: arm-linux-gnueabihf
 Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 6.3.0-18ub
 untu2~16.04' --with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-6
 --program-prefix=arm-linux-gnueabihf- --enable-shared --enable-linker-build-id
 --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-6-armhf/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-armhf --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-6-armhf --with-arch-directory=arm --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --enable-multilib --disable-sjlj-exceptions --with-arch=armv7-a --with-fpu=vfpv3-d16 --with-float=hard --with-mode=thumb --disable-werror --enable-multilib --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf
 Thread model: posix
 gcc version 6.3.0 20170519 (Ubuntu/Linaro 6.3.0-18ubuntu2~16.04)
A continuación, descarga el código fuente del compilador protobuf:
$ wget https://github.com/google/protobuf/archive/v3.0.0.zip
$ unzip v3.0.0.zip
$ cd protobuf-3.0.0
En el archivo autogen.sh, cambia los paquetes Google Mock por los paquetes Google Test:
$ vi autogen.sh
 .
 .
 . (:32)
 if test ! -e gmock; then
 curl $curlopts -L -O https://github.com/google/googletest/archive/release-1.7.0.zip
 unzip -q release-1.7.0.zip
 rm release-1.7.0.zip
 mkdir -p gmock/gtest
 mv googletest-release-1.7.0 gmock/gtest
 fi
 .
 .
 .
Si estás utilizando un ODROID-C2 para tu compilación, puede añadir la opción "-j4" al comando "make", pero en el ODROID-C1+ debes evitar esta opción por contar con menor memoria del sistema.
$ ./autogen.sh
$ ./configure --prefix=/usr/lib/arm-linux-gnueabihf/
$ make [-j4]
$ sudo make install
$ sudo ldconfig
$ export PATH=/usr/lib/arm-linux-gnueabihf/bin/:$PATH
$ cd
$ git clone -b master https://github.com/f1xpl/aasdk.git
$ mkdir aasdk_build
$ cd aasdk_build
$ cmake -DCMAKE_BUILD_TYPE=Release ../aasdk
$ make [-j4]
Finalmente, compila e instala Open Auto:
$ cd
$ git clone -b master https://github.com/f1xpl/openauto.git
$ mkdir openauto_build
$ cd openauto_build
$ cmake -DCMAKE_BUILD_TYPE=Release -DRPI3_BUILD=FALSE -DAASDK_INCLUDE_DIRS="/home/odroid/aasdk/include" -DAASDK_LIBRARIES="/home/odroid/aasdk/lib/libaasdk.so" -DAASDK_PROTO_INCLUDE_DIRS="/home/odroid/aasdk_build" -DAASDK_PROTO_LIBRARIES="/home/odroid/aasdk/lib/libaasdk_proto.so" ../openauto
$ make [-j4]
$ echo "./openauto/bin/autoapp &" >> .bashrc

Añadir cuentas al grupo

Para solventar el problema del permiso de la cuenta, configura el grupo de usuarios como se muestra a continuación:

$ sudo usermod -a -G root odroid
$ sudo usermod -a -G tty odroid
$ sudo usermod -a -G voice odroid
$ sudo usermod -a -G input odroid
$ sudo usermod -a -G audio odroid
$ sudo usermod -a -G pulse odroid
$ sudo usermod -a -G pulse-access odroid
Deberías ver la pantalla de Android auto listo al arrancar.

Figure 7
Figura 7

Figure 8
Figura 8

Conectar y configurar los componentes

Para usar la pantalla ODROID-VU7, edita el archivo boot.ini tal y como se muestra a continuación. Deberías editar las opciones de resolución y vout_mode. El ODROID-VU7 tiene una resolución de 800×480 60hz y el modo DVI.

$ sudo vi /media/boot/boot.ini

# setenv m "576p" # 720x576
setenv m "800x480p60hz" # 800x480
# setenv m "800x600p60hz" # 800x600
# setenv m "1024x600p60hz" # 1024x600
# setenv m "1024x768p60hz" # 1024x768
# setenv m "1360x768p60hz" # 1360x768
# setenv m "1440x900p60hz" # 1440x900
# setenv m "1600x900p60hz" # 1600x900
# setenv m "1680x1050p60hz" # 1680x1050
# setenv m "720p" # 720p 1280x720
# setenv m "800p" # 1280x800
# setenv m "sxga" # 1280x1024
# setenv m "1080i50hz" # 1080I@50Hz
# setenv m "1080p24hz" # 1080P@24Hz
# setenv m "1080p50hz" # 1080P@50Hz
# setenv m "1080p" # 1080P@60Hz
# setenv m "1920x1200" # 1920x1200

# HDMI DVI Mode Configuration
# setenv vout_mode "hdmi"
setenv vout_mode "dvi"
# setenv vout_mode "vga"
Figure 9
Figura 9

Montar SmartPower2

Este es un dispositivo opcional, y puedes usar cualquier otra fuente de alimentación 5V/3A para esto. SmartPower2 tiene una función de ejecución automática y puedes comunicarte con él a través de WiFi.

Figure 10 - Output power ON/OFF automatically when you power on the SmartPower2
Figura 10 - Encendido/apagado automático de la potencia de salida cuando enciendes el SmartPower2

Comprueba la opción Auto Run y conecte SmartPower2 utilizando el adaptador de alimentación del mechero como entrada y el ODROID-C1+ como salida.

Figure 11
Figura 11

Figure 12
Figura 12

Montar Stereo Boom Bonnet

Si tuvieras que cargar el driver cada vez que arranques ODROID-C1+/C2, simplemente registra el driver en /etc/modules (más detalles):

odroid@odroid64:~$ su
 Password: /* root password is "odroid" */
 root@odroid64:/home/odroid# echo "snd-soc-pcm5102" >> /etc/modules
 root@odroid64:/home/odroid# echo "snd-soc-odroid-dac" >> /etc/modules
 root@odroid64:/home/odroid# exit
 exit
 odroid@odroid64:~$
Selecciona " output to ODROID-DAC Analog stereo " a través de System » Preferences » Hardware » Sound » Output.

Figure 13 - Select Output: ODROID-DAC Analog Stereo
Figura 13 - Seleccionando la salida: ODROID-DAC Analog Stereo

Figure 14 - Make sure to check the connector!
Figura 14 - ¡Asegúrate de verificar el conector!

Configurar el botón de encendido

Con el teclado numérico de la pantalla TFT LCD, se puede apagar el sistema Android Auto cuando paramos el sistema del coche, pero queríamos incluir un botón de encendido independiente para mayor comodidad. Para que esto funcione, hay que cambiar "KEY_UP" por "KEY_POWER" en el código fuente del servicio tftlcd_key:

{ PORT_KEY1, HIGH, KEY_UP, KEY_RELEASE },
A continuación, actualiza rc.local para cargar automáticamente el servicio tftlcd_key en el arranque:
$ sudo vi /etc/rc.local

# By default this script does nothing.
 sudo /home/odroid/tftlcd_key &

if [ -f /aafirstboot ]; then /aafirstboot start ; fi
Ahora conecta el botón de encendido a los conectores de expansión GPIO J2. Usamos el Pin 6 y el Pin 12.

Figure 15
Figura 15

Figure 16
Figura 16

Para asignar la acción de apagado, dirígete a System » Preferences » Hardware » Power Management » General

Figure 17 - When power button is pressed: Shutdown
Figura 17 - Cuando se presiona el botón de encendido: Se Apaga

Figure 18
Figura 18

Montar los micrófonos USB

Para usar Google Assistant, también necesitarás un micrófono USB. Configura la entrada del dispositivo USB usando System » Preferences » Hardware » Sound » Input.

Figure 19
Figura 19

Figure 20 - Select input : USB PnP Sound Device Analog Mono
Figura 20 – Seleccionando la entrada: USB PnP Sound Device Analog Mono

Figure 21
Figura 21

Instalar Android Auto en un coche

Ahora instalamos el dispositivo Android Auto en mi coche personal, el cual funciona muy bien. Después de arrancar, Android Auto está listo automáticamente para conectar tu dispositivo Android. Tras conectar tu dispositivo Android a Android Auto, Android Auto detectará el dispositivo para que puedas usarlo.

Figure 22
Figura 22

Figure 23
Figura 23

Figure 24
Figura 24

Be the first to comment

Leave a Reply