Mi amor campusero: Review Intel Galileo #CPMX5

Durante mi estancia en Campus Party México 5 (#CPMX5) tuve la oportunidad de participar en el “Reto Intel” el cual consistía en hacer un proyecto con una Intel Galileo que los organizadores prestaban a los participantes.

intelgalielo5En 3 días en un evento donde hay mucho que ver y aprender mi intención fue emular una “cafetera inteligente” (el pretexto para que me pudieran prestar una de estas tarjetas) que se comunica con la plataforma carriots por medio de python y con mi smartphone con instapush por medio de nodejs.

Funcionamiento:

La cafetera detecta cuando despiertas por medio de un sensor de distancia, empieza a calentar el café, muestra la temperatura actual en linea y cuando el café esta listo te envía una notificación a tu smartphone “Listo Rico Cafe”.

Intel Galileo

IntelGalileoLogicSchematics

La Intel Galileo es una tarjeta que cuenta con las siguientes características generales:

  • Procesador Intel Quark SoC X1000 400MHz 32-bit, a lo que nos contaron los de intel es como un pentium 4 mejorado
  • DDR3 256 MB
  • Puerto Ethernet 10/100
  • Puerto Serial: Es el puerto de 3.5 mm, NO es una entrada o salida de audio
  • Pines GPIO configuración muy similar a Arduino UNO
  • Puerto USB Host
  • Puerto USB Cliente
  • Puerto de alimentación principal
  • Puerto JTAG
  • RTC: Reloj de tiempo Real
  • Full PCI Express Mini: Aquí puedes insertar cualquier dispositivo por ejemplo un bluetooth o wifi
  • Soporta I2C, SPI, UART, PWM
  • Lectora de Micro SD

Si deseas saber mas a detalle todas la características visita: Intel

IntelGalileo_JumpersSetup

Lo primero: Precauciones o cuidados

  1. El intel galileo no se alimenta via USB, solo con alimentación externa de un cargador.
  2. Siempre, siempre debes primero conectar la alimentación externa y después el puerto USB para programación, si no haces esto puedes dañar el Intel Galileo.
  3. El procesador se calienta demasiado, al parecer puede llegar a consumir hasta 3A la tarjeta, según nos comentaron ingenieros del intel esto va a mejorar en la segunda versión que se espera en agosto.
  4. Elegir en que voltaje vas a trabajar 3.3 o 5v, como pudiste darte cuenta en la imagen de arriba hay unos jumpers que te permiten elegir, ten cuidado en no elegir mal.
  5.  Actualizar a la ultima versión del firmware, esto me provoco mucha perdida de tiempo con mi tarjeta ya que no me podía conectar via SSH, actualice y solucionado.

actualizacionintelgalileo1

actualizacionintelgalileo2

actualizacionintelgalileo3

 

Programando en Arduino

El intel galileo es en realidad una mini computadora muy similar a la raspberry pi que ejecuta un sistema operativo linux en este caso debian, la diferencia radica en que Galileo se podria decir “virtualiza un arduino UNO” y de esta manera se puede programar con el IDE de Arduino especial para Galileo.

Si ya programas arduino casi todo es igual esta el analogRead, digitalWrite, analogWrite, ademas de las librerías y shields compatibles deberían funcionar con sus respectivas excepciones claro, recordemos que aun esta en su fase de introducción.

¿Pero que pasa con el sistema linux? Hay una nueva instrucción que te permite ejecutar instrucciones desde el IDE de arduino en la terminal de debian y es system(), por ejemplo para asignar IP por DHCP

system("ifconfig eth0 > /dev/ttyGS0");

Para ejecutar un script de python

system("python /media/realroot/notificacion.py");

 

La parte de Debian

La tarjeta Galileo por default trae una pequeña versión de Debian de 8MB, pero esta versión solo sirve para lo básico (usarlo como un arduino UNO xD), si queremos tener python, nodejs, base de datos y mas, debemos apagar nuestra tarjeta e insertar un SD con la imagen de Debian para Intel Galileo, encendemos y debe empezar a parpadear el led aun lado del lector de SD.

Después con KiTTY simplemente me conecte via SSH por el puerto 23, el usuario por default es “root” y la contraseña en blanco solo dar enter

intelGalileo2

Para enviar archivos entre mi PC y la Galileo use WinSCP edite los scripts de python y nodejs y luego los envie a la galileo

intelgalileo1

En esta parte para todos los linuxeros la terminal no sera un problema, es como cualquier debian pueden instalar lo que gusten y actualizar lo que quieran, en mi caso yo tuve que actualizar el nodejs.

Retos y Dificultades

En primera quiero aclarar lo presentado fue hecho con el material que tuve a mi alcance en Campus Party y poco presupuesto, ademas que no se mucho de python y javascript, así que debí aprender lo básico mientras aprendía como funcionaba la galileo

Lo que yo quería hacer era algo muy simple detectar por medio del sensor ultrasonico la presencia de alguien, después medir la temperatura enviarla a carriots y al final enviar una notificación a mi android o iphone

Lo primero contra lo que me enfrente es que actualmente la instrucción PulseIn() no esta implementada en galileo y la mayoría de ejemplos para saber la distancia del ultrasónico usaban esta instrucción, en el foro de makers intel pude encontrar un código solución no muy preciso pero servía para lo que quería y funciono.

Listo ahora podía saber cuando la persona se ha levantado de la cama, ahora debo activar la cafetera para que empiece a calentar y estar midiendo la temperatura para enviarla a carriots, un led en el pin 13 indica que la cafetera esta calentado y un puerto analógico mide la temperatura y cada lectura debe enviarla, en este caso elegí python, pude encontrar un ejemplo para raspberry pi que con algunas modificaciones funciona perfecto en galileo, excelente en las pruebas desde debian, pero ¿cómo le envió a python la lectura desde arduino?

char buffer[35];
temperatura=analogRead(0); //Lectura actual de la temperatura
 Serial.println(temperatura); //Monitor serial depuracion
 String letras2=String(temperatura); //Convertimos a String
 String letras1="python /media/realroot/cafe.py "; //Declaramos como string
 String letras3=letras1+letras2; //Concatenamos strings
 letras3.toCharArray(buffer,35); //Convertimos a arreglo de caracteres
 system(buffer); //Enviamos el arreglo de caracteres

Esto lo descubrí después de una serie de intentos erroneos de meter un string en system(), después los señores de intel me ayudaron para saber que en realidad era array de caracteres lo que requería, no se desvelen tanto en campus party xD.

Listo ahora ya estamos recibiendo los datos en carriots

carriots_intelgalileo

En esa búsqueda de código me encontré con instapush un servicio que te permite enviar notificaciones a tu android o iphone en su aplicación movil, por medio de su API con nodejs, PHP, Ruby o lo que quieras. Yo elegí nodejs instalamos

  $ npm install instapush

En mi caso marco un error que soluciono actualizando la version de nodejs, con eso ya solo tuve que modificar el código de ejemplo

var instapush =require("instapush");
instapush.settings({
    id:'52eed96ea2a8f0f',
    secret:'9a96794fec44481de5',});

instapush.notify({"event":"Cafe","trackers":{"term":"Rico cafe listo"}},function(err, response){
    console.log(response);});

y mandarlo llamar desde arduino

system("node /media/realroot/notificacion.js");

Como indica la guía básica, configure la app en mi panel de control, descargue la aplicación para mi smartphone y listo tenia push notificaciones que me avisan cuando mi café esta listo.

Instapush_intelgalileo

 

Conclusiones:

Al parecer el costo aquí en México según rumores de los del Intel sera de $500 aproximadamente, pero yo la he visto arriba de $1000, en lo personal por ese costo prefiero una BeagleBone.

Tuve algunos problemas con el driver, en algunas ocasiones no me dejaba cargar el sketch “not target device” tuve que desinstalar el driver, reinstala y reiniciar la maquina para que volviera a funcionar.

Lamentablemente al final del concurso no nos pudimos quedar con las tarjetas prestadas, nos prometieron enviarnos unas de regalo, espero así sea y poder seguir haciendo experimentos

En verdad visiten la pagina Intel Maker y su foro si tienen problemas con la intel Galileo

Si quieren ver mas o menos lo que hice pueden verlo en mi Repositorio en github, pronto subiere un tutorial mas completo de como usar carriots con un Arduino UNO y un ethernet shield por si no cuentan con una Intel Galileo.

Espero les haya gustado este post, espero sus comentarios.

Saludos inventores

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *