Construcción de un centro multimedia Android para nuestro coche


Mediante una placa Arduino Mega  Aykut Çelik, ha cambiado  de una forma muy elegante  la vieja radio integrada de serie de su Volkswagen Polo de 2014 que  solo cuenta con radio con lector de cd  y no tienen ninguna conectividad bluetooth con teléfonos inteligentes y  tampoco ninguna aplicación de navegación GPS.,  pero es manejada por mandos especiales  en el volante

El  cambo es radical pues la propuesta es reemplazar la radio original  ,por una potente  tableta  con  Android   , con todo lo que se puede instalar en una tableta de ese tipo como  Google Maps, Spotify, Yandex, radio FM o cualquier  aplicación de Android  que se puede imaginar   pero además  manteniendo  los controles de volumen o  de otras funciones del coche colocados en el volante para controlar el volumen de su tableta o otras funciones.

Las partes que se necesitan son:

 

  • Un amplificador a 12V, Aunque  la radio de un coche incluye un amplificador , esta ocupa el  espacio reservada  a la tableta  y  si queremos usar solo el amplificador al no conocer habría que modificarla así que lo mejor es optar por un amplificador de audio  de calidad  ya construido, pues ademas los modernos  cuentan con mando a distancia  para regular sus diferentes as funciones 
  • Un escudo del canbus es necesario para  poder leer comandos de la línea del canbus pues algunas de las informaciones del coche. Utiliza  este escudo para detectar los comandos del botón de rueda como los botones Subir volumen, Mute y Bajar volumen. Detrás de la radio hay dos cables de bus. Uno de ellos es Canbus – HIGH y el otro es Canbus-LOW:estos cables deben estar conectados a enchufes verdes en el escudo del canbus SeeedStudio
  • Un Arduino Mega  pues es responsable de analizar los datos canbus y enviarlos a la tableta Android. El envío de datos a la tableta Android es un trabajo realmente complicado, porque al principio el autor decidío utilizar un escudo de host USB y de hecho  funcionaba  pero resulta que el escudo de USB Host y el escudo de Canbus no pueden funcionar al mismo tiempo via SPI para comunicarse con el Arduino sobre el mismo pin.                                                
  • Modulo  bluetooth ; El autor  intentó cambiar el pin que estaba utilizando por el escudo del anfitrión del USB pero no funciono, asi que entonces quito el escudo host usb y  utilizo un módulo del bluetooth para comunicar la tableta Android .
  • Un adaptador del panel preparado para cada  modelo de coche. Hay personas que optan por fabricárselo a medida  con una impresora 3D  , pero también están accesibles  en tiendas online  de modo que soportan una tableta android de unos 7″ en este adaptador  quedando  muy bien estéticamente y completamente integrada en el salpicadero del automóvil.(incluso en algunos modelos se puede sacar  esta)

 

  • Convertidor 12v /2v DC de al menos 1 amp  pues serviría  para alimentar la tableta  y el modulo de  Arduino

 

Después de reunir estos elementos el sistema final es así:

Este sistema parece no complicado a nivel  eléctrico ( a nivel hardware  ),  pero como vamos  a ver, si lo a nivel de sw  que debe usarse para procesar la señales del volante y enviarla a la tableta

En el siguiente vídeo, podemos  ver  como funciona el reproductor multimedia.

 

 

Vamos a continuar con la parte de programación, donde  a mi juicio es  quizás la parte mas complicada.

Usando el escudo del canbus Seeed se puede recoger  los datos del canbus del coche. Can Bus es un sistema de comunicación que cada paquete tiene un id y su carga útil. Puede ser difícil encontrar la identificación relacionada con los clics del botón de la rueda por lo que lo norma es utilizar un analizador de com serie, pero el autor tubo suerte pues después de un par de intentos encontró  los ids necesarios relacionados con los clicks  de botón de rueda que era «0xbf».

A continuación podemos ver una parte del código arduino para identificar clics de botón:

 

witch ( buf [ 0 ] ) {
                 case 16 :
                     buttonState = VolUp ;
                     break ;
                 case 17 :
                     buttonState = VolDown ;
                     break ;
                 case 22 :
                     buttonState = Back ;
                     break ;
                 case 21 :
                     buttonState = Forward ;
                     break ;
                 case 32 :
                     buttonState = Mute ;
                     break ;
                 case 25 :
                     buttonState = Voice ;
                     break ;
                 case 28 :
                     buttonState = Phone ;
                     break ;
                 case 7 :
                     buttonState = OK ;
                     break ;
                 case 4 :
                     buttonState = Up ;
                 case 5 :
                     buttonState = Down ;
                     break ;
                 default :
                     buttonState = Nothing ;
                     break ;
             }
Como vemos  con el codigo adjunto se pueden recoger al menos 11  eventos; Volumen ,Mute, ok, atras, ariba , abajo  , voz y teleefono
Puede encontrar el proyecto Arduino en github: https://github.com/clkasd/vwcardasharduino
La información que se obtiene de canbus transferido a Android tablet vía bluetooth por lo que  finalmente en la tableta Android hay una pequeña aplicación que se encarga, por ejemplo, de reducir el volumen cuando se hace clic en el botón de la rueda ( es decir recoger las ordenes por bluetooth   y procesarla en Androi).
Ademas la app cuenta con una actividad del menú para abrir otras aplicaciones.
Puede encontrar el proyecto Android desde aquí: https: // github. com / clkasd / vwCarDashAndroid

 

Es sin duda  un excelente trabajo  muy interesante para  incluso adaptarlo a cualquier otro tipo de vehículo pues ademas el autor ha compartido el código  fuente tanto de la aplicación de captura de códigos como el de la tableta para que los pueda recoger   y hacer que cumplan su cometido

Más información en su web.

Diseño de una embarcación autopilotada


Mucho antes que aparecieran los coches autónomos , por su simplicidad  destacar que ya existían múltiples soluciones para embarcaciones autónomas  que no dependen del ser humano para moverse por el mundo

Leo Megliola, estudiante de 8 grado  invirtió un año construyendo una embarcación  autónoma    con ayuda de la academia de  Berwick Academia y su mentor Jeff gum

El  kayak era la octava tentativa  de conseguir una embarcación autónoma así que buscaba  desapoderadamente una idea innovadora  para conseguir el objetivo de construir una embarcación autónoma

La  idea de usar el kayak vino en de forma accidental de un paseo con su padre donde miraban  a un isla que estaban  a unas seis millas de distancia de  ellos ,  y el padre le preguntó si tuviese que enviar algo a  esa isla como lo haría . En principio Leo  pensó en  un cohete de globo o  incluso un avión de ala fija, pero decidió que la manera  más eficiente sería por barco, así que decidió  intentar nuevamente si proyecto esta vez centrándose en usar un  kayak que debería viajar todo el camino a Shoals totalmente sin ayuda.

El autor eligió una trayectoria desde una boya en el mar  cerca Portsmouth a otro justo en frente de Appledore Island  constituyendo un viaje de poco más de  cinco millas

TRAVESIA

El diseño de piezas  utiliza la fusión  en una impresora 3d para crear un prototipo , probando cada subsistema individualmente para aprender cómo cada pieza trabaja antes de intentar instalarlos en ambos sistemas principales

Usa   obviamente electrónica tanto para el control  de dirección como para  la  propulsión ,  y la verdad que en el vídeo vemos como va adelante rápidamente dirigiéndose  a  su destino así que todos esos  tres sistemas son buenos y probados

Nos  cuenta que la primera vez que probó el  sistema  pudo  ver un controlador de motor paso a paso   lleno de humo , pero como llevaban  un Arduino de repuesto  realizó  la primera prueba sin dirección.

Después corregido el problema hizo más pruebas en  la paya pudiendo  navegar incluso con corriente y  viento, pero lamentablemente  empezaron los  problemas de  filtraciones de  agua  y lentamente se  llenaba  de agua peligrando  la electrónica

Corregidas  las filtraciones el siguiente intento  conseguir llegar alrededor de la  mitad del itinerario , pero el kayak funcionaba perfectamente ,aunque confundió  algunas cosas en el  código que ejecuta el arduino

Los componentes del kayak  son lo siguientes:

  • El sistema de propulsión del kayak lo  constituye    un motor eléctrico de tipo trolling del que  hemos hablado  en numerosas veces es este blogyilon
  • Usa  tambien una batería  marina AGM    de ciclo profundo proporcionando la energía  necesaria tanto a la electrónica como al sistema de propulsión51AO+9H+NTL
  • Un Arduino Uno
  • Un modulo  GPS
  • Dos controladores de motor paso a paso(*)
  • Dos relés de potencia consecutivos(**)

 

(*)  En principio pare el timon  al  llevar dos cables el autor ha debido usar  un motor conectado solidariaemnte a cada uno de ellos

(**) Debido a la potencia del motor probablemente el autor ha optado por conectar dos reles en paralelo en lugar de un único relé

Como era de esperar  , Arduino es  responsable de dirigir el barco y encender y apagar el motor, así como navegar  en función de las señales  NMEA  que proporciona el escudo GPS

Cuenta con dos motores paso a paso que van girando en un sentido o en otro  para mover el timón de la embarcación . El autor ha optado  para no estropear la embarcación, situando  los  motores para  controlar la  dirección a una distancia  adecuada para por medio de dos cables de acero  tirar  de cada extremo del timón  hacia estribor o babor y no dirigir la dirección del barco entero pues el uso de la palanca  ayuda  a minimizar el consumo del motor de dirección

En la electrónica,  el GPS es responsable para decirle al kayak qué dirección está viajando calculando el  por medio del microcontrolador Arduino  las ordenes a dar  al motor  PaP  en en función de  las  señales que está recibiendo   dado que  no cuenta con brújula electrónica

El algoritmo inicial  tenia   en cuenta donde estaba hace unos segundos y donde está en el momento actual de modo que podía  calcular  de que manera  se había movido  sabiendo qué camino estába viajando bien, así que fruto  de la experimentación  consiguió escribir  el  programa adecuado para ir corrigiendo constantemente el rumbo para llegar al destino

El autor tubo algunos  problema a la hora sobre todo de escribir el código principalmente  por  tres  motivos principales:

  • Primero el autor  falló en  simulación de scratch donde tuvo la pequeño barco y la isla y nosotros fundamentalmente los rudimentos de la código que escribimos en Arduino idioma y se movió mucho y luego terminó simplemente haciendo un círculo  una y otra vez para que ese total  falló y terminamos arreglando que reescribió completamente el código y tomó enfoque diferente  SCARTACH1.PNG
  • El segundo fracaso vino  que trataron de navegar en el coche  usando la misma electrónica pero a la que añadieron  cuatro LEDs que indicaba  de qué manera había que dar la vuelta si el circuito sabe de alguna corrección GPS , así como si se estaba dentro del rango para detener o no . Por el resultado comprobado empíricamente, el algoritmo estaba mal ,pues indicaba  que estaba completamente fuera de la distancia cuando en realidad  estában a unos cien metros de distancia  y  dijo que está en algún lugar en el rango de cinco mil metros de distancia..
  • El tercer fallo vino con una  de las revisiones de código cuando íba hacia el norte pues en el código estaba dividiendo por cero y perdía el control .Arreglo eso también tomando una nuevo enfoque completamente nuevo de modo que finalmente  consiguio solucionar  el problema   incluso en una corriente cruzada como  se  puede ver en el vídeo .

 

El autor ha utilizado componentes y tutoriales principalmente de Adafruit, incluyendo un Arduino, un sensor GPS, un relé y un controlador de motor paso a paso y para programarlo ha usado Scratch

De momento aquí os dejamos un vídeo en el que nos enseña su proyecto  aunque  lamentablemente no ha compartido el código de Arduino .

 

 

 

 

Nos  consta  que has seguido intentando mejorar  su proyecto  como demuestra el siguiente vídeo  donde el kayak de Leo adquiere y encuentra una boya de mar a 1,5 km de distancia (prueba de mar abierto)  siendo el rumbo inicial  de 120 grados respecto al objetivo.