Introducción a NodeBots

En esta guía aprenderemos a usar Node.js para comunicarnos con Arduino usando johnny-five un Framework JavaScript para robótica. A continuación una lista de requerimientos para poder seguir este tutorial:

Preparando el Arduino

Node.js no puede comunicarse con arduino por si solo pues arduino por defecto se programa en lenguaje C, pero existe otra manera de controlar Arduino desde un software host en el ordenador sin necesidad de programar en el lenguaje nativo de la placa. Esto es posible a través de la librería Firmata. Firmata es un firmware que establece un protocolo de comunicación entre un programa en el ordenador y el Arduino.

Dicho lo anterior, necesitamos instalar el firmware Firmata en el Arduino, esto es muy simple, el Arduino IDE trae una serie de ejemplos listos para ser cargados en la placa Arduino, entre estos ejemplos tenemos el “StandardFirmata” el cual usaremos en este turorial. Para cargar firmata al arduino seguimos los siguientes pasos:

  • En el menu seleccionar: File > Examples > Firmata -> StandardFirmata

    Firmata Arduino IDE

  • Cargar firmata a la placa arduino:

    Hacer click en el botón “Upload”, una vez cargado el firmware puedes cerrar el Arduino IDE.

    Cargar firmata

Solucionando problemas

En GNU/Linux es posible que el Arduino IDE tenga deshabilitado la opción para seleccionar el puerto serial y por lo tanto no poder manipular la placa Arduino conectada al ordenador. La siguiente imagen ilustra este problema:

No serialport

Para solucionar este problema ejecuta lo siguiente en una terminal:

1
2
$ sudo usermod -a -G dialout <usuario>
$ sudo usermod -a -G tty <usuario>

Cierra e inicia sesión con tu usuario, el problema deberá estar solucionado!

‘Hola Mundo!’ con Arduino + Node.js

Vamos a construir el siguiente ejemplo:

Hola mundo, fuente: http://johnny-five.io"

Para comenzar vamos crear una carpeta e instalar el modulo johnny-five para comunicarnos con Arduino. Sigue los pasos a continuación:

1
2
$ mkdir nodebots && cd $_
$ npm install johnny-five

Dentro de la carpeta nodebots, crea un archivo llamado hello-world.js y agrega el siguiente código:

1
2
3
4
5
6
7
8
9
10
var five = require(“johnny-five”),
board = new five.Board();
// usar este codigo en caso de que johnny-five no reconozca ningun dispositivo
//board = new five.Board({port: “/dev/ttyACM0”});
board.on(“ready”, function() {
//crear un led en el pin 13
var led = new five.Led(13);
//parpadear cada segundo
led.blink(1000);
});

Conecta tu arduino a una fuente de energía y ejecuta lo siguiente:

1
$ node hello-world.js

Ese momento en que creas un circuito en menos de 5 minutos!

El led comenzará a parpadear además en la terminal veras unos logs y la consola se volverá interactiva a la espera que teclees algun comando. Procedemos a detener el programa escribiendo .exit.

Felicidades!!! acabas de crear tu primer script con Node.js capaz de comunicarse con tu Arduino :)

Recapitulemos lo que hemos hecho:

Primero, hemos incluido el modulo johnny-five, con la palabra reservada require, que nos permite interactuar con arduino:

1
var five = require(‘johnny-five’)

Luego instanciamos la clase constructora five.Board que es parte del API de johnny-five, ver Board API

1
var board = new five.Board();

Luego, agregamos un listener al evento ‘ready’, el listener es una función callback que se ejecuta cuando el evento ready sea emitido, esto será luego del evento ‘connect’ y cuando la instancia del objecto Board haya completado la inicialización del hardware.

1
2
3
board.on(“ready”, function() {

});

Dentro del callback, creamos un objeto que representa un led usando la clase constructora five.Led, ver Led API

1
var led = new five.Led(13);

Por último ejecutamos la función blink que hace parpadear nuestro led en el pin 13. A la función le pasamos como parámetro el intervalo de tiempo de parpadeo (milisegundos)

1
led.blink(1000);

Listo! hemos creado nuestro primer script usando Node.js y Arduino, ¿verdad que fue sencillo?

Compartimos acá el código fuente de este ejemplo que esta en nuestra pagina de github + un par de ejemplos básicos para que puedas probar en tu casa:

https://github.com/nodebots-sv/ejemplos-basicos

Si deseas estudiar más ejemplos, ve a la pagina oficial del proyecto johnny-five ahí encontraras mucha más información.

Si te gusto este sencillo tutorial, comparte este post y deja tus comentarios abajo, cualquier duda escríbenos.

¿Quieres unirte a la comunidad?

Encantados, síguenos en twitter @NodebotsSV, escríbenos a nodebots.sv@gmail.com y con gusto te responderemos.