Nuevos Labs para Intel Edison y Azure

Los pasados días  17 de junio en las oficinas de Microsoft y 2 de julio en el evento GAPAND en Andorra, realizamos los primeros laboratorios con Intel Edison y Azure. Gracias a Intel que nos ha prestado los materiales hemos podido hacer un taller práctico donde se construye gradualmente una solución completa de IoT con Intel Edison conectada a nuestros servicios de Azure con IoT Hub.

Intel Edison

Intel Edison

Intel Edison es un módulo de Hardware que incorpora en una misma placa de reducidas dimensiones un Intel Atom Dual-Core a 500MHz, Wi-Fi, Bluetooth LE y un microcontrolador Quark de 32 bit a 100MHz, 1GB de RAM, 4GB de almacenamiento y un bus GPIO (general purpose input output) de 40 puertos. Funciona con una distribución especial de Linux llamada Yocto y se suele utilizar junto con una placa de desarrollo que nos permita desplegar, probar y depurar el código.

Contar con un microcontrolador dentro de un sistema con un microprocesador avanzado nos proporciona lo mejor de ambos mundos: vamos a poder desarrollar en lenguajes de alto nivel y a realizar tareas complejas como mantener una comunicación segura con servicios en el cloud, a la vez que tendremos el control total de los sensores y actuadores que conectemos a la placa, con precisión de microsegundos.

Intel Edison

Se puede programar en lenguaje C tanto por la parte del Intel Atom como para el microcontrolador Quark, de hecho podemos utilizar una versión del Arduino IDE para programarlo, pero también viene con Node.js instalado y podemos utilizar la librería edison-io junto con johnny-five para acceder facilmente a multitud de sensores y actuadores que podemos conectar a la placa. Estás librerías utilizan una librería puente entre el código del microcontrolador y javascript, la MRAA, que permite aprovechar la potencia que nos proporciona tener un microcontrolador desde un lenguaje de alto nivel.

 

Guía para el laboratorio

Intel Edison Arduino Board

Para nuestro laboratorio de IoT hemos elegido utilizar un Intel Edison con la placa de desarrollo Arduino tal como vemos en la foto. Esta placa nos permite conectarnos por USB desde el PC O Mac y añadir sobre la misma la placa de realización de prototipos Grove que viene con un montón de sensores y actuadores.

Grove Starter Kit

Para nuestro taller vamos a realizar un laboratorio que va aumentando gradualmente la complejidad. Empezaremos encendiendo un led, luego leeremos información de unos sensores, en un siguiente paso la enviaremos a Azure IoT Hub, la visualizaremos en un PowerBI y acabaremos enviando mensajes de vuelta al dispositivo. Las instrucciones paso a paso del taller las encontraréis en https://thinglabs.io/labs/edison/ People in the IoT Lab

Antes de empezar

Cuando nos llega la placa Intel Edison lo primero que tenemos que hacer es actualizar el firmware de la misma. El primer paso es ir a https://software.intel.com/en-us/iot/library/edison-getting-started, montar el Intel Edison sobre la placa de desarrollo e instalar los drivers que nos permitirán comunicarnos con la misma. Para seguir el taller fácilmente vamos a utilizar unas cuantas herramientas:

  • Node.js: https://nodejs.org/en/download/
  • Un editor de texto nos bastará, podemos usar por ejemplo Visual Studio Code que es multiplataforma.
  • Un cliente FTP como por ejemplo Filezilla que también es multiplataforma, o si usamos Visual Studio Code podemos instalar ftp-sync (CTRL+P y escribimos ext install ftp-sync)
  • Un cliente SSH, por ejemplo PuTTY o similar, para comunicarnos con la placa, al principio por puerto serie y cuando configuremos la Wi-Fi podremos hacerlo por red.
  • Una cuenta de Azure, puedes crear una versión de evaluación en https://azure.microsoft.com/free/

Se puede realizar el taller desde un PC con Windows o Linux y también desde un Mac.

El código

Para seguir el laboratorio bastará con conocimientos básicos de JavaScript y Node.js, aunque en el primer ejercicio hay un pequeño error tipográfico que deberemos corregir. El primer código que usaremos abre un pin definido como LEDPIN en modo salida, este pin define uno de los LED internos de la placa:
'use strict'; var five = require ("johnny-five"); var Edison = require("edison-io"); // Pin 13 is the default pin on the large Arduino breakout board. var LEDPIN = 13

Usaremos la librería johnny-five para la clase Board que nos permitirá acceder fácilmente a los puertos del Grove Kit más adelante:
// Create a Johnny Five board instance to represent your Arduino. // board is simply an abstraction of the physical hardware, whether it is // an Intel Edison, Arduino, Raspberry Pi or other boards. // For boards other than Arduino you must specify the IO plugin. var board = new five.Board({ io: new Edison() });
Una vez creado podremos conectar a la placa y ejecutar la escritura sobre el pin que definimos. Aquí hay una pequeña corrección sobre el código original para que funcione correctamente:

board.on("ready", function() { console.log("Board connected..."); // Set the pin you connected to the LED to OUTPUT mode this.pinMode(LEDPIN, five.Pin.OUTPUT); // Create a loop to "flash/blink/strobe" an led var val = 0; var that = this; this.loop( 1000, function() { that.digitalWrite(LEDPIN, (val = val ? 0 : 1)); }); });

Próximos eventos

El próximo evento es el sábado 16 en el capítulo de Hackster.io en Barcelona y a partir de septiembre haremos un taller cada dos o tres meses, además de otros talleres que estamos preparando para aprender a utilizar también gateways conectados a IoT Hub e IoT suite. Si os interesa asistir u organizar un taller en vuestra ciudad os podéis poner en contacto con nosotros a traves de nuestro twitter @msdev_es.

Juan Manuel Servera
IoT & Data Senior Technical Evangelist
Developer eXperience