Raspberry PI y arduino UNO

Resulta que me entero en la página de Arduino http://arduino.cc/es/Main/Buy que la tienda de un amigo aquí en Alcalá de Henares (Componentes Escobedos, http://www.electronicaalcala.net) es distribuidora de arduino y voy el martes a comprar uno…
Y no les queda ninguno… cuando me voy a ir desilusionado me dicen: si quieres tenemos una raspberry pi…
Coño!, resulta que tienen una, modelo B Versión 2 (512Mb de ram, 2 Usb, ethernet) y esta esperándome en el expositor… y ademas me prometen que al dia siguiente tendrán un arduino UNO V3 para mí.
Efectivamente, justo el día de San Valentín, tenía mi equipo completo para programar arduinos desde la raspberry pi.
Así empieza esta historia de ¿amor? entre una raspberry pi y un arduino UNO…

Para empezar a trabajar hay que conectar la raspberry e instalar el sistema operativo en la SD. Yo he usado una de 2Gb y el sistema operativo raspbian descargado de http://www.raspberrypi.org/downloads
Concretamente la versión http://downloads.raspberrypi.org/images/raspbian/2013-02-09-wheezy-raspbian/2013-02-09-wheezy-raspbian.zip
Como voy a cargar el sistema operativo en la SD desde Windows necesito el copiador de imágenes http://sourceforge.net/projects/win32diskimager/files/latest/download
Desde mi portatil Acer 5920 he tenido problemas para que me detecte la SD, he tenido que usar una versión vieja del Win32DiskImager.exe, http://learn-gdx.googlecode.com/files/win32diskimager-RELEASE-0.1-r15-win32.zip
Otras versiones pueden encontrarse aquí: http://sourceforge.net/projects/win32diskimager/files/Archive/

Descomprimir la imagen del Raspbian y copiarla a la SD mediante el Win32DiskImager.exe
Conectar la SD en la rasperry y alimentar… Aparece una pantalla de configuración del sistema operativo de la raspberry. Yo he cambiado pocas cosas:

Overscan -> no lo he tocado, disable (por defecto)
Configure_keyboard -> Cambiarlo: Generic 105 (mi caso)
Keyboard layout -> Other -> Spanish -> Spanish
Key to function as AltGr -> Right Alt (AltGr)
Compose Key -> Right Logo Key (mi caso)
Use Control+Alt+Backspace to terminate the X server -> TES
Change_pass: Las raspberry se estan haciendo muy populares y si se usa la con conexion a internet mejor cambiarlo.
Change_locale -> cambiarlo a: es_ES.UTF-8 UTF-8, por defecto viene en_GB_UTF-8 UTF-8
Default Locale for the sysstem enviroment -> es_ES.UTF-8
Change Timezone -> Geographic area -> Europe
Time Zone -> Madrid
Memory Split -> No lo he tocado, 64 (por defecto)
Overclock -> No lo he tocado.
ssh -> Enable. Opción muy interesante!!!
boot_behaviour -> no lo he tocado, por defecto: NO (Me gusta mas que arranque en linea de comandos, luego puedo arrancar el entorno gráfico con startx).
update -> Si, como ya tengo la conexión a internet lista por cable actualizo ahora el sistema…
Expand_rootfs
Finish

Se reinicia el sistema y aparecerá el prompt. Nos logeamos como usuario “pi”, el password por defecto es “raspberry”, si no lo hemos cambiado antes:
Pi puede hacer sudo sin password, es la mejor opción en vez de usar el usuario root.
El superusuario root no tiene password por defecto, mejor ponerlo con “sudo passwd root”.

También podemos actualizar ahora el sistema con “sudo apt-get update”

Este es el entorno de desarrollo minimalista para arduino, basado en raspberry pi:

Estación de trabajo para arduino raspberry con raspberry pi

Para instalar el entorno arduino basta con hacer “sudo apt-get install arduino”. Esto instalará el entorno versión 1.0.1 (a fecha 14/2/2013) y todos los paquetes necesarios, java, compilador avr-gcc etc.
También pueden instalarse los paquetes por separado, o actualizar alguno de forma independiente (con :”sudo apt-get install paquete” o “sudo apt-get update paquete”)

avr-libc
libftdi1
avrdude
openjdk-6-jre
librxtx-java

Si falla alguna instalación se puede recuperar con “sudo apt-get install paquete –fix-missing”.

Con esto basta, se crea un acceso directo en el menú de inicio llamado arduino…
Arrancar el entorno gráfico con “startx” y ejecutar arduino. También puede ejecutarse una ventana de terminal, el navegador web…

Escritorio de raspberry con arduino

He usado un viejo teclado multimedia que tiene un hub con dos USB, de forma que el teclado, el ratón y el arduino solo me consumen un puerto USB y el otro lo tengo disponible para el pendrive de intercambio de datos…

Puede verse que he instalado un par de programas adicionales, el MC (soy de la vieja escuela y para trabajar desde terminal me gusta ese gestor de ficheros):

sudo apt-get install mc

Para usarlo basta con hacer “mc” desde un terminal. Si el terminal es de putty (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) mejor hacer “mc -a” para que muestre correctamente los caracteres gráficos que componen el dibujo de los paneles.

Otra herramiente que he instalado es un capturador de pantallas scrot:

sudo apt-get install scrot

Desde un terminal, para capturar la pantalla despues de 5 segundos teclear “scrot -d 5”.
Para capturar inmediatamente basta “scrot”

Si queremos la ultima versión del entorno arduino 1.0.3 (a fecha 14/2/2013) podemos descargarla con “wget http://arduino.googlecode.com/files/arduino-1.0.3-linux64.tgz”.
Descomprimirla en el directorio de usuario con “tar zxvf arduino-1.0.3-linux64.tgz”.
La pega es que los binarios vienen compilados para Intel x64 y estamos trabajando con ARM, no nos valen. Eliminamos la carpeta “~/arduino-1.0.3/hardware/tools” de forma que el entorno de programación trabaje con los binarios ya instalados del entorno 1.0.1.
No estan desactualizados, si havemos “avr-gcc -v” desde un terminal veremos que tenemos instalada la versión 4.7.2 que es la última disponible.
También eliminamos de la carpeta “~/arduino-1.0.3/lib” los ficheros “librxtxSerial.so” y “librxtxSerial64.so”, estan compilados también para intel x86 y el entorno 1.0.1 instalado ya nos los proporciona.
Ahora podemos arrancar el entorno 1.0.1 desde el enlace en el menú de inicio o el entorno 1.0.3 esde la carpeta “~/arduino-1.0.3/”. Podemos hacerle un enlace al escritorio llamado “arduino1.0.3” y otro al entorno antiguo “arduino1.0.1”. Es posible usar los dos indistintamente sin interferencias. Hay que tener en cuenta que el compilador y todos los binarios compilados (el entorno esta escrito en java) que se usan son los que se instalaron con la versión 1.0.1, los que hemos descargado con la versión 1.0.3 los hemos borrado anteriormente porque estan compilados para intel x86.

Al conectar el arduino, en mi caso el UNO V3, el entorno detecta automáticamente y nos añade el puerto “/dev/ttyACM0” a la lista de puertos disponibles.

Aunque el entorno arduino es un poco pesado para la raspberry pi a (ARM11 a 700Mhz, 512Mb Ram) funciona perfectamente y no es necesario un PC para programar arduinos!!