Cómo ejecutar código JavaScript en Arduino

Prepárate porque te enseñamos cómo ejecutar código JavaScript en Arduino de la mano de Johnny-Five.

Programar en Arduino puede ser una difícil tarea, sobre todo si vienes del mundo del desarrollo web donde la sintaxis de JS y PHP difiere mucho de la que usaríamos en Arduino. A través de este artículo vamos a conseguir programar en JavaScript y que Arduino sea capaz de leer nuestro código. Esto abre un mundo de nuevas posibilidades al 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 interactuar con Arduino desde Node.js, utilizaremos Johnny-Five: 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.

La puesta a punto

Para ser capaces de comunicarnos con Arduino mediante software, debemos instalar en Arduino la librería Firmata, una librería que implementa el protocolo de comunicación llamado, como era de esperar, Firmata. Esto se puede hacer de varias maneras.

Arduino IDE

Si dispones de Windows, Mac OS X o Linux con entorno de escritorio, puedes instalar Arduino IDE.

Después, simplemente tienes que conectar Arduino por USB y seleccionar Archivo > Ejemplos > Firmata > StandardFirmata. Después cargas el código en Arduino y listo, ya tienes Firmata instalado.

GORT

GORT es una herramienta CLI que ofrece interesantes comandos para interactuar con nuestro Arduino desde la consola, por lo tanto ideal si no tienes interfaz gráfica en Linux.

Para instalarlo descargamos el binario de aquí (también podemos compilarlo nosotros mismos).

Después escaneamos el sistema para saber en qué puerto está conectado Arduino:

gort scan serial

En mi caso se encontraba en /dev/ttyACM0.

A continuación instalamos el paquete avrdude, una utilidad que sirve para cargar Firmata en Arduino:

gort arduino install

Si no tenéis apt-get, deberéis instalar avrdude a mano, en el caso de Gentoo mediante emerge avrdude.

Después simplemente subimos Firmata a Arduino:

gort arduino upload firmata /dev/ttyACM0

Si al intentar subir Firmata os da un error de permisos, en el caso de Linux deberéis comprobar que el usuario tiene acceso al dispositivo. Podéis ver a qué grupo pertenece el dispositivo mediante stat -c %G /dev/ttyACM0 y después añadir el usuario al grupo correspondiente usermod -aG uucp <usuario> (en mi caso el grupo era uucp).

Programando en JavaScript

Procedemos a instalar johnny-five:

npm install johnny-five

Ya estamos listos para crear nuestra primera app. A modo de ejemplo, conectamos un LED al pin 13 (o usaremos el LED que viene integrado en la placa) y ejecutaremos node app.js, habiendo creado previamente el fichero con este código:

// Importamos la librería y creamos las variables.
import five from 'johnny-five'

// Inicializamos el framework.
const board = new five.Board()

// Cuando Arduino haya recibido el código...
board.on('ready', () => {

  // Registramos el pin 13 con la librería Led.
  const led = new five.Led(13)

  // Hacemos que el LED alterne on/off rápidamente.
  led.strobe()
})

¡Así de simple! Ya tenemos nuestra primera aplicación JavaScript ejecutada por Arduino. Por supuesto, todo esto es compatible de serie con el ecosistema Node.js. Como imaginarás, las posibilidades son infinitas.

¿Qué proyecto tenéis en mente ahora mismo?

Compartir en

Facebook Twitter Google+ LinkedIn