Introducción

 

En todos los tutoriales anteriores hemos usado a la tarjeta Galieo desde su perspectiva Arduino, ahora es tiempo de utilizar sus funciones extendidas gracias a Linux.

Posiblemente, estés interesado en escribir programas mas complejos utilizando tu lenguaje favorito como: python o javascript por ejemplo. Quizá estas interesado en visión máquina o quieres tener mayor control sobre la tarjeta y saber mas a fondo como funciona. Todo esto es posible accediendo al núcleo de Linux, y eso es precisamente lo que veremos en este tutorial.

 

Este tutorial cubre lo básico para trabajar con Linux, realizaremos un programa muy simple pero que será muy útil para que te familiarices con las herramientas.

Importante: Este tutorial solo es válido para la tarjeta Intel Galileo Gen 2.

 

Versiones de Linux para la tarjeta Intel® Galileo Gen 2

 

El sistema Linux es muy flexible y puede ser adaptado para propósitos específicos. Cada distribución o versión puede tener diferentes características, interfaces y arquitectura. Hay un gran número de versiones personalizadas de Linux hechas para las tarjetas Intel® Galileo, algunas de hecho, creadas por los propios usuarios. En éste tutorial veremos 4 de las distribuciones principales.

  • Imagen SPI: Es la versión preinstalada que se actualiza con el IDE Arduino y que no necesita una tarjeta SD para arrancar. Esta mini distribución, tiene funcionalidad limitada. Por ejemplo, no tiene los drivers para los módulos WiFi y no cuenta con la característica de persistencia en los sketch Arduino cuando se reinicia la tarjeta. Este sistema inicia apenas arranca la tarjeta.
  • Imagen "SD-Card": Esta versión requiere una tarjeta SD y proporciona características  que no tiene la imagen SPI. Como los drivers para los módulos WiFi además de soporte para: openCV, ALSA y Node.js por nombrar solo algunos ejemplos.
  • Imagen "IoT Devkit": Esta versión tiene características mas interesantes y sera el foco de éste tutorial. Por ejemplo: es mas fácil realizar conexiones de red, tiene mas herramientas para desarrollar y soporta OpenCV para python. Su instalación es un poco mas compleja, pero no te preocupes, nosotros de enseñamos como hacerlo.
  • Debian e imagenes personalizadas: Estas versiones son generadas por los usuarios y cada una tiene sus ventajas y métodos de instalación.

 

Paso 1. Instalar la imagen IoT Devkit

 

Para instalar la imagen IoT DevKit en tu tarjeta Intel® Galileo, puedes seguir alguno de los dos tutoriales que preparamos para ti: éste tutorial si usas Windows o este otro si usas Linux.

Una vez cargada la imagen de Linux IoT DevKit en la memoria microSD, insértala en tu tarjeta galileo, conecta el cable USB y la fuente de poder. Si se configuró correctamente, debería mostrarse como un disco extraible en tu PC.

 

Paso 2. Acceder a la Terminal de Linux

 

La Terminal de Linux es una interfaz de linea de comandos para controlar el sistema. Los comandos ingresados por este medio, pueden por ejemplo: instalar software, manipular el sistema de archivos o acceder a los mensajes de depuración.

Si estas usando Windows, te recomiendo que instales Putty. Putty es un programa que permite utilizar el protocolo SSH y conexiones seriales en sistemas Windows de manera muy sencilla. SSH es un protocolo ampliamente usado para acceder a otros equipos de forma remota (Puedes encontrar mas detalles aquí), la comunicación serial es otro medio de acceder a la terminal de Linux, además puede funcionar como un monitor serial de Arduino.

Si por el contrario usas Linux o Mac OS, SSH ya viene instalado como parte del sistema.

 

Existen principalmente 4 maneras de conectar con la Terminal de la tarjeta Intel® Galileo Gen 2.

 

1) Utilizando el header UART.

 

Para poder utilizar el header UART necesitarás utilizar un cable FTDI. Ésta es una manera muy estable de acceder a la Terminal de Linux en la Galileo, ya que éste puerto se utiliza para enviar mensajes incluso cuando el sistema esta arrancando.

header UART.jpg

 

Conecta el cable FTDI al header de la tarjeta Galileo, el cable negro debe ir al pin GND del header. Conecta el extremo USB a tu computadora y enciende la tarjeta.

Instala el driver si es necesario.

Abre Putty, selecciona Serial, en el campo serial line coloca el puerto COM (lo puedes ver en el IDE Arduino), en Speed escribe 115200, puedes guardar esta configuración escribiendo un nombre en Saved Sessions  y dando clic en Save, después ya solo tienes que seleccionar el nombre que le diste en la lisa y dar clic en Load para cargar la configuración guardada.

Finalmente da clic en Open para abrir la Terminal.

 

Fig_2.PNG

 

2) Utilizando una conexión Ethernet

 

Éste método solo requiere un cable Ethernet conectado entre la tarjeta Intel® Galileo y tu PC. Posiblemente prefieras este método ya que los cables Ethernet son mas comúnes que los FTDI.

Primero conecta el cable a tu tarjeta Intel® Galileo y a tu PC, después carga el siguiente sketch Arduino a la tarjeta.

 

void setup()
{
    Seria.begin(9600);
    //No continua hasta que se envíe una 'a' a través
    // del monitor serial
    while(Serial.read()!='a')
    {
          Serial.println("hello");
          delay(1000);
    }
    //Despliega el resultado del comando
    //ifconfig en el monitor serial
    system("ifconfig > /dev/ttyGS0");
}

void loop()
{
}





















































































 

Nótese el uso del comando especial system(cmd), este comando sirve para ejecutar un comando de Terminal en Linux. El comando ifconfig entrega como salida el estado de los dispositivos de red disponibles, incluyendo las direcciones IP. /dev/ttyGS0 representa el puerto serial Arduino en la tarjeta Galileo. Con el símbolo ">" podemos redirigir la salida de un comando a una interfaz o a un archivo, en este caso, estamos redirigiendo el resultado del comando ifconfig al puerto serial para que se muestre en el monitor serial del IDE Arduino.

 

Fig_3.PNG

 

De la salida del comando ifconfig puedes obtener la dirección IP que le fue asignada a tu tarjeta. Vamos a usar esta dirección para acceder a la Terminal de Linux usando Putty desde Windows.

Primero, en tipo de conexión selecciona SSH, escribe la dirección IP que obtuviste en el monitor serial y da clic en Open para abrir la Terminal. Al igual que con la conexión UART, aquí también puedes guardar la configuración si así lo deseas.

 

Fig_4.PNG


Si al conectar con la tarjeta Intel® Galileo se te solicita una autorización de llave da clic en Yes.

Fig_5.PNG

 

Finalmente se te solicitará el usuario, teclea root y después presiona enter.

Fig_6.PNG

 

Si por el contrario eres usuario de Linux, deberás configurar la IP de tu PC como estática, para ello puedes seguir este tutorial.

Una vez configurada la dirección IP, teclea el siguiente comando:

 

ssh root@dirección_ip
















































donde direccion_ip es la dirección IP de la tarjeta Galileo y que obtuviste en el monitor serial Arduino.

Si tu terminal despliega algo similar a lo siguiente, ya te encuentras logueado en la Terminal de Linux de Galileo y ya puedes comenzar a teclear comandos, prueba por ejemplo con ls /, te mostrará la lista de archivos en el directorio raíz.

Fig_7.PNG


3) Conexión cableada a un router

 

Este método es muy similar al de conexión directa por Ethernet y además permite la conexión a Internet de la tarjeta Intel® Galileo. Este método requiere que la PC este conectada al mismo router ya sea con cable Ethernet o Wi-Fi.

Conecta la tarjeta al router y sigue los mismos pasos que en la sección 3), con la diferencia que en este caso, los usuarios Linux no tienen que configurar la dirección IP fija, pero asegúrate que este habilitado el servicio DHCP en tu router.


4) Conexión por medio de Wi-Fi


Tu tarjeta Intel® Galileo tiene una ranura mini PCIe donde puedes insertar una tarjeta de red inalámbrica, sin embargo el procedimiento para hacerla funcionar es algo mas complejo, por lo que dejaremos el procedimiento para otro tutorial. Por el momento quédate con la idea de que puedes conectar tu tarjeta por medio de Wi-Fi.


Paso 3: Transfiere archivos a la Intel® Galileo


Cuando accedes a la Terminal por medio de SSH (Cualquiera de los métodos anteriores excepto UART), se pueden copiar archivos desde la PC hacia la tarjeta Intel® Galileo utilizando la utilidad scp (protocolo Seguro de Copia.


Si usas Linux, ésta utilidad ya debería estar instalada en tu sistema. En Windows puedes utilizar pscp (es de la misma familia de Putty). Una vez instalada, necesitas agregar la aplicación al PATH de Windows, para ello puedes seguir el siguiente tutorial.


Ahora, abre cualquier editor de código fuente, y pega el siguiente script de python:


from datetime import datetime
#Obtiene automaticamente la fecha y la hora
#si la tarjeta está conectada a internet
n = datetime.now()
res = n.strftime("%d/%m/%y/%H:%M:%S")

# Agrega el tiempo al archivo log localizado
# en el directorio home de la tarjeta Galileo
f = open("/home/root/buttonLog.txt", "a+")

f.write(res + "\n")
f.close()






































Guarda el archivo como "recordTime.py". Abre una terminal, navega hasta donde tienes guardado el archivo que acabas de crear utilizando el comando cd. Después teclea el siguiente comando:

En windows:

pscp ./recordTime.py root@galileo_ip:/home/root/






































En Linux:

scp ./recordTime.py root@galileo_ip:~/






































donde galileo_ip es la dirección IP de tu tarjeta.

Fig_17.PNG


Este comando copiará el archivo recordTime.py desde tu PC a tu tarjeta Intel® Galileo. El directorio home del usuario actual se representa con el símbolo "~", en el caso de la Galileo corresponde a /home/root/, este es un buen lugar para guardar todos los archivos generados por el usuario.


Ahora vamos a probar si nuestro script funciona, inicia sesión por SSH y teclea el siguiente comando:

python ~/recordTime.py






















 

Repite el comando anterior varias veces. Después teclea:

cat ~/buttonLog.txt






















 

El comando cat es muy útil para desplegar el contenido de archivos en la terminal.

 

Fig_18.PNG

 

Una buena práctica es crear  y modificar los archivos desde tu PC y copiarlos a la tarjeta, en lugar de realizar las modificaciones directamente, de esta manera no pierdes tu trabajo si por alguna razón la tarjeta falla.

 

Paso 4: Utiliza un sketch de Arduino para ejecutar scripts

 

Es hora de hacer algo de electrónica, vamos a conectar un botón al pin 12 de la Galileo, utiliza el siguiente diagrama como ejemplo.

 

boton.jpg

 

Asegúrate de conectar la resistencia a GND y el boton a 5V. Posteriormente, carga el siguiente sketch utilizando el IDE Arduino:

 

int btnPin = 12;
boolean oldState;

void()
{
    pinMode(btnPin, INPUT);
}

setup()
{
    boolean newState = digitalRead(btnPin);
    if(newState == HIGH && oldState == LOW)
    {
          system("python ~/recordTime.py");
          delay(100);
    }
    oldState = newState;
    delay(30);
}











 

Como lo mencioné anteriormente, system() se utiliza para ejecutar comandos de Linux. En esta ocasión se llama cada que se presiona el botón, por lo tanto cada vez que lo presiones, se almacenará la hora en el archivo log.

Después puedes copiar el archivo log desde la Galileo a tu PC utilizando el siguiente scp comando:

para Windows:

pscp root@galileo_ip:/home/root/buttonLog.txt ./










 

para Linux:

scp root@galileo_ip:~/buttonLog.txt ./










 

donde galileo_ip es la dirección IP de tu tarjeta.

Abre el archivo y deberás ver los distintos registros que se hicieron cada vez que presionabas el botón.

Para que te animes a seguir el tutorial, a continuación te dejo un video (en Inglés) del proyecto funcionando.

 

 

Conclusiones

 

En este tutorial pudiste ver los beneficios de acceder a la terminal de Linux en la tarjeta Intel® Galileo, aprendiste 3 formas diferentes de hacerlo, aprendiste también el procedimiento para copiar un script de python desde tu PC a la tarjeta utilizando la herramienta scp, corriste un sketch Arduino que ejecuta el script python y finalmente aprendiste como recuperar archivos de la tarjeta a tu PC.

 

Definitivamente hay muchas cosas mas que puedes hacer con tu tarjeta Intel® Galileo y la Terminal Linux, por lo que este tutorial te puede ayudar a perder el miedo en adentrarte al mundo Linux y su potencial con Galileo. Espero como siempre que disfrutes y aproveches este material. Si tienes dudas, no dudes en consultarlas, con gusto las responderemos.