domingo, 19 de enero de 2014

Primeros pasos con la Intel Galileo

Como os comenté en la entrada anterior, hace una semana me llegó la nueva placa Arduino compatible, la Intel Galileo. Esta semana en los ratos libres que he ido teniendo he empezado a hacer cosas con ella, en primer lugar instalar drivers y descargar el nuevo IDE, lo siguiente enviar un sketch para que lo ejecute, y luego comunicarme mediante SSH con la versión de linux que se puede instalar.
Bien, lo primero que tenemos que hacer cuando tenemos la placa, es descargarnos el IDE. Hay que tener en cuenta, que a pesar de ser un IDE como el de Arduino, este no nos vale para programarla, al igual que pasa con el IDE de las placas ChipKit UNO, que aunque es igual, no es el mismo, así que nos vamos a la página de descargas de intel y de ahí descargamos la versión del IDE Arduino 1.5.3 que sea compatible con nuestro sistema operativo. Una vez descargado, lo debemos descomprimir en una carpeta raíz de alguna unidad, por ejemplo C:\Arduino, ya que necesitamos que la ruta sea lo más corta posible para evitar luego problemas.
Una vez descomprimido el IDE, podemos conectar la placa al ordenador. Según pone en los documentos de intel, lo primero que se debe conectar es la alimentación mediante el adaptador que viene con la placa. Una vez alimentada, veremos que se encuende el led de ON, al lado del pulsador de reset, en ese momento la placa empieza a cargar el sistema operativo que en intel llaman Little Linux o SPI-Linux. Este sistema operativo es el que viene instalado por defecto en la memoria FLASH interna de 8Mb de la placa. Una vez el SO se ha cargado, se endenderá el led de USB, justo encima del conector USB Client, y en ese momento ya podemos conectar el USB al PC.
Cuando conectemos el USB, desde el PC nos saldrá el tipico mensaje que nos avisa que se ha detectado un nuevo hardware, y no podrá instalarlo automáticamente, así que nos vamos a Panel de control > Sistema > Administrador de dispositvos, y tendremos un dispositivo llamado Gadget Serial v2.4, hacemos click derecho sobre el y le decimos que queremos actualizar el controlador desde una ubicación específica, en concreto, desde esta ubicación C:\arduino\hardware\arduino\x86\tools, en ese momento empezará a instalar los drivers y nos creará un nuevo puerto COM con el nombre de Galileo.
A partir de este momento ya podemos crear nuestros programas y mandarlos a la placa, pero desde intel, recomiendan que antes que nada actualicemos el firmware interno, cosa que se hace muy fácilmente desde el mismo IDE.

Actualizar el firmware nos llevará unos 6 minutos, y es un proceso en el que solo hay que ir pulsando aceptar y esperar. Una vez actualizado ya podemos empezar a programar nuestra Intel Galileo como si de un Arduino se tratara... salvo por un pequeño inconveniente... desde el IDE no es posible guardar programas en la memoria FLASH de la placa, sino en la RAM, por lo que si mandamos un programa, este solo estará mientras la placa no se quede sin alimentación, en el momento que la desconectemos, el programa se borrará. Esto, que es realmente un gran problema, tiene solución, y la vemos en el próximo paso.
Una vez tenemos preparada la placa para recibir nuestros programas, lo único que tenemos es una placa Arduino UNO un poco cara, así que debemos sacarle más jugo a la Intel Galileo, y este jugo tiene el nombre de Linux.
La Galileo, como ya he dicho, almacenada en su memoria FLASH de 8Mb una versión de Linux llamada SPI-Linux (el nombre viene porque la memoria FLASH se comunica con el procesador por un protocolo SPI), esta versión es una versión muy reducida del sistema operativo, aunque si que nos permite hacer varias cosas como comunicarnos vía terminal RS232 a través del jack de audio para poder activar o desactivar gpio, manejar los PWM o leer los canales ADC. En mi caso, no tengo disponible ningún cable que convierta el jack de audio a RS232, por lo que la única opción de comunicarme con la placa era a través de SSH, que lamentablemente no está disponible en la versión de SPI-Linux, por lo que es necesario descargarse un sistema operativo más completo. Este sistema operativo lo descargamos desde la misma página del IDE, y es el que llama
Para empezar a utilizar esta versión, necesitamos una tarjeta SD formateada en FAT o FAT32, y para evitar problemas, es necesario que el volumen tenga el nombre de BOOTME. Para cambiar el nombre del volumen, abrimos desde inicio cmd.exe como administrador, y ejecutamos diskpart.exe. Luego en la ventana que se nos abrirá introducimos:
   select vol f (siendo f la letra del volumen de la tarjeta SD)
   clean
   create part primary
   active
   format quick label="BOOTME"
   exit
Entonces descomprimimos el archivo que hemos descargado en la raíz de la SD, y una vez copiados introducimos la tarjeta SD en la placa, y conectamos la alimentación. A diferencia de antes, cuando arranquemos la placa, el led SD se pondrá a parpadear indicándonos que está leyendo datos de la SD. Es importante si vamos a comunicarnos con la placa mediante SSH que conectemos el cable de red antes de la alimentación. Una vez la placa ha arrancado, podemos conectarla al PC y entonces cuando enviemos un programa desde el IDE, este se almacena en la SD y se ejecuta cada vez que arranquemos la placa, despues de que se inicie el sistema operativo. En este punto también podemos comunicarnos con la Galileo mediante SSH.

Una vez arrancado el cliente SSH, nos identificamos como root, sin contraseña, y ya estamos dentro de la Intel Galileo, mientras que el sketch se ejecuta. Lo siguiente que podemos hacer manejar puertos y leer canales analógicos desde linux, incluso ejecutar diferentes sketches almacenados en la SD.

4 comentarios:

  1. No puedo actualizar el software interno, que otro metodo puedo utilizar?

    ResponderEliminar
  2. muy buen post..resumido y conciso
    me puedes decir como controlo las salidas PWM de la tarjeta..
    te agradecera bastante q respondieras a mi inquietud

    ResponderEliminar
  3. hola excelente explicación, he hecho todo como dijiste sin embargo hay algo que no logro entender, si bien tengo conectada un tarjeta de WIFI compatible con la placa galileo no puedo comunicarme con ella vía WIFI pensé que debía instalar esta versión de Linux para poder utilizarla de tal forma, de ante mano aclaro que soy principiante en este tema y que no estoy muy familiarizado con el tema de Arduino pero tengo toda la disposición de aprender, desde ya gracias por la respuesta

    ResponderEliminar
  4. si pudieras contestar mi mail es diegoempires17@hotmail.com espero tu respuesta

    ResponderEliminar