Hace unos días os presentaba en el blog el ADK de Google, una plataforma que permite la comunicación entre terminales Android y Arduino. La pega era que el kit de desarrollo valía unos 300€.
Hoy os traemos una primicia. Después de ver compañeros por internet que conseguían hacer funcionar el ADK en un Arduino con una USB Host Shield controlando algún servo o LED, nos hemos propuesto reproducir todos los dispositivos que incluye el kit pero en la versión DIY de BricoGeek, con los productos que tenemos disponibles en la tienda.
Ayer mismo recibí los materiales y a media tarde ya estaba funcionando. No os podeis imaginar lo divertido, útil y espectacular que es controlar el Arduino mediante el teléfono.
Para empezar se necesita como mínimo:
- Un Arduino que acepte shields. (El Mega de entrada no funciona por la situación de pines del SPI, pero se puede modificar para que funcione)
- Una USB Host Shield.
- Un teléfono o dispositivo Android con version 2.3.4 o 3.1
Empecemos con el Software del ordenador.
Debemos instalar el SDK y la plataforma de desarrollo Eclipse para hacer nuestro proyecto. Aquí tenéis un muy buen tutorial, seguidlo paso a paso hasta el punto 5.
Una vez llegados a ese punto y con el Eclipse abierto:
- Entramos en Help/Install new software...
- Click en ADD (botón arriba a la derecha).
- Introducimos en name "ADT Plugin" y en Location https://dl-ssl.google.com/android/eclipse/
- Click en OK.
- Cuando nos salga, marcamos Developer Tools y le damos a Next, nos sale otra pantalla, otra vez Next.
- Marcamos para aceptar los License Agreements, le damos a Finish.
- Si nos sale un aviso de seguridad le damos a OK.
- Reiniciamos el Eclipse.
- Entramos en Window/Preferences (en Mac Eclipse/Preferences)
- Seleccionamos Android en el panel izquierdo.
- Nos pedira si queremos enviar datos a Google (como queráis) luego le damos a Proceed.
- En SDK Location le damos a Browse y buscamos la carpeta donde tenemos el SDK de android.
- Le damos a Apply y luego a OK
- En Eclipse nos vamos a Window/Android SDK and AVD Manager.
- Entramos en el panel de la izquierda en Avaliable packages.
- Dentro de Third Party Add-ons/Google inc buscamos Android API 10 Revision 2, la marcamos y le damos a Install selected.
- Aceptamos todo lo que nos diga y listo.
- Copiamos la carpeta firmware/arduino_libs/AndroidAccessory a nuestra carpeta de librerías del IDE Arduino.
- Bajamos esta versión modificada de la libreria USB Host Shield y la descomprimimos en nuestra carpeta de librerías del IDE Arduino.
- Bajamos este sketch de Arduino y lo abrimos con el la aplicación de programacion de arduino.
- Lo subimos a nuestra placa Arduino como un código normal.
- Abrimos Eclipse y vamos a File/New/Project.
- Seleccionamos Android/Android Project.
- En Project Name ponemos "DemoKit".
- Le damos a Create project form existing source, le damos a Browse y nos ponemos en la carpeta del ADK "app" y le damos a Finish.
- En Build target seleccionamos nuestra API 10 y Finish.
- Ahora entramos en los ajustes de aplicaciones de nuestro Android y seleccionamos dentro de desarrollo "Depuración USB"
- Conectamos el teléfono por cable USB al ordenador y le damos dentro de Eclipse al icono verde con una flecha que esta justo a la derecha de el icono del bicho (Run DemoKit). Esto nos instalará la aplicación para controlar el Arduino.
Todo listo a la hora de software.
Ahora conectemos todo.
En la demo del vídeo enseño como desde el teléfono (en este caso un Nexus One) podemos leer entradas como un botón, un joystick, una resistencia variable con la luz LDR y un sensor de temperatura LM35. También controlo desde el teléfono las salidas, un servo, un LED RGB y un relé con el que podemos encender y apagar cualquier aparato conectado a la red eléctrica.
Podéis hacer la prueba con algún sensor o algún led, no hace falta tener todo conectado podeis probarlo por separado ya que funciona igual. Estos son los esquemas de conexión que he utilizado para conectar los dispositivos del vídeo:
Podéis guiaros en que pin va cada dispositivo dentro del código del Arduino. Tambien podeis modificar la situación de cada uno a vuestro antojo.
Una vez todo conectado al Arduino apagado, procedemos a alimentarlo. Necesitamos alimentación externa ya que la USB Host Shield se alimenta de Vin y con el voltaje que nos proporciona el cable del ordenador no nos llega. Alimentamos el Arduino y a continuación conectamos por usb el Android, automáticamente se nos abrirá la aplicación. Si no se os enciende la luz de carga del móvil es que necesitamos mas alimentación en el Arduino. Si usáis un servo, estos consumen mucha corriente, por lo que pueden llegar a resetear el Arduino. Es recomendable o alimentarlos a parte, o que sean del tipo microservo que consumen un poco menos.
Las posibilidades de esta plataforma de intercomunicación son casi infinitas, pronto veremos incluso versiones inalámbricas o de control a través de internet.
Os animo a que lo probéis y nos mandéis vuestros proyectos. Os dejo con el vídeo, espero que os guste.
Si os gustan mis proyectos no dejeis de visitar mi blog: TCRobotics.blogspot.com
O agregadme al twitter: @TCRobotics
¡Un saludo!