Blog relacionado a la informática. Principalmente a la plataforma Arduino

Arduino + Node.js + Johnny-Five

No hay comentarios

Programar Arduino con JavaScript. Utilizando Node.js y Johnny-Five

¿Que es Node.js?

Node.js es un entorno Javascript del lado del servidor, basado en eventos. Node ejecuta javascript utilizando el motor V8, desarrollado por Google para uso de su navegador Chrome. Aprovechando el motor V8 permite a Node proporciona un entorno de ejecución del lado del servidor que compila y ejecuta javascript a velocidades increíbles. El aumento de velocidad es importante debido a que V8 compila Javascript en código de máquina nativo, en lugar de interpretarlo o ejecutarlo como bytecode. Node es de código abierto, y se ejecuta en Mac OS X, Windows y Linux.



Ventajas:
  • El desarrollo es más rápido.
  • La ejecución de tests de unidad se puede hacer más rápido.
  • Las aplicaciones son más rápidas y por tanto la experiencia de usuario es mejor.
  • Menor coste de infraestructura (Linkedin pasó de tener 15 servidores a 4).
  • Está basado en eventos, así que toda la filosofia asíncrona que ya utilizamos con AJAX en el cliente la podemos pasar al servidor.
  • Te permite utilizar el mismo lenguaje (javascript) tanto en el cliente como en el servidor
  • Muy buena gestión de paquetes gracias a NPM (si quieres hacer algo, probablemente exista una librería/paquete que ya lo hace).
  • Nos permite hacer en el servidor todo lo que necesitamos (acceso a ficheros, a bases de datos, conexiones de clientes).

Instalar Node.js

Desde la pagina oficial se puede descargar el instalador, soporta plataformas como  Mac OS X, Windows y Linux. Hasta arquitecturas ARM.

Johnny-Five

Es un framework muy sencillo y práctico que nos ayudará en la tarea. Johnny-Five es compatible con otras plataformas de desarrollo como Raspberry Pi, Beagle Bone e Intel Galileo entre otras. También es el encargado de proporcionarnos controladores para poder trabajar con componentes como LEDs, servos, botones, pantallas, etc.


Instalar Johnny-Five

Procedemos a la instalación. En mi caso tengo Node.js instalado en Windows.
Abrimos la terminal y ejecutamos el comando
npm install johnny-five

Arduino Firmadata

Firmata es un protocolo genérico para la comunicación con microcontroladores desde software instalado en un ordenador. Este protocolo se puede implementar en cualquier arquitectura de microcontroladores, así como en cualquier paquete de software.

El objetivo de firmata es permitir controlar completamente Arduino desde software instalado en un ordenador, sin escribir una sola línea de código de Arduino.

Ventajas:
  • Nuestro programa no está limitado por la memoria RAM y Flash de Arduino
  • El software de control se puede programar en cualquier lenguaje, no solo C++, siempre que tenga soporte para firmata. Por ejemplo: Firmata: Processing, Visual Basic, Perl, C#, PHP, Java, JavaScript, Ruby y por su puesto Python.
Desventajas:
  • Programas más restringidos, es posible que algunas operaciones complejas no sea posible hacerlas. Por ejemplo el uso de interrupciones.
  • Al arduino siempre debe estar conectado al ordenador. Debe tener comunicación para poder ejecutar acciones.

Instalación Firmata

Para instalar Firmata necesitas tener conectado tu la Arduino a la computadora a través de un puerto USB. Asegúrate de tener seleccionado en el IDE de Arduino el modelo adecuado y que haya reconocido el puerto que se utilizará para la comunicación.

Una vez tienes esto listo en el IDE de Arduino selecciona Archivo > Ejemplos > Firmata > StandardFirmata y luego haces clic en el botón Upload para transferir el código al microcontrolador.


Hardware

Conectamos un LED al pin 13 (o usaremos el LED que viene integrado en la placa)

Hello World!

Utilizare notepad++ y escribiremos el siguiente código, el cual lo guardare como led.js

//Incluimos la libreria
var five = require("johnny-five");
//Inicializamos el framework
var board = new five.Board();
//Cuando Arduino haya recibido el codigo
board.on("ready", function() {

  // Instanciamos el pin 13 con la libreria led
  var led = new five.Led(13);

  // Realizamos el tipico "blink"
  // on-off cada 500 ms
  led.blink(500);
});


Ahora ejecutamos el comando node led.js. En mi caso guarde el archivo en el escritorio


Debería funcionar sin problema el parpadeo del led


Esto abre un mundo de nuevas posibilidades a la IoT (Internet Of Things), ya que podremos juntar la programación de hardware con, por ejemplo, una API desde la que encenderemos y apagaremos leds con tan sólo pulsar checkboxes html.
Para mayor documentación visiten https://github.com/rwaldron/johnny-five

No hay comentarios :

Publicar un comentario