Cómo programar plataformas tipo Arduino en JavaScript, Ruby y Go

Seguimos indagando en Arduino y esta vez serás capaz de programar para esta plataforma utilizando Ruby, JavaScript y Go.

Programar robots caseros mediante una plataforma hardware libre está de moda gracias a proyectos como Arduino o Raspberry Pi que convierten la programación hardware en un hobby divertido, sencillo y didáctico. Pero si lo que quieres es aprovechar sus recursos en proyectos IoT y siempre fuiste un desarrollador web de front-end, tal vez programar Arduino en su lenguaje original pueda ser, sin que la palabra tenga relación con Arduino, una ardua tarea.

Internet de las cosas (IoT)
Internet de las cosas (IoT)

Es por ello que las soluciones aparecen donde hay una necesidad, en este caso la de poder programar estas placas de desarrollo en varios lenguajes de programación. Un grupo de programadores pertenecientes a The Hybrid Group decidieron crear no solo uno, sino hasta tres frameworks.

Frameworks robóticos

Los frameworks son modulares, algo genial teniendo en cuenta que se puede añadir soporte a nuevos componentes sin modificar el proyecto principal.

Además, soportan bastantes plataformas. En el caso de Cylon.js se soportan a día de hoy 24 plataformas, entre las que se incluyen: ARDrone, Arduino, Intel Galileo, Raspberry Pi o Tessel.

Si tu plataforma es Arduino, necesitarás instalar en Arduino la librería para el protocolo de comunicación Firmata. En este artículo te explicamos como hacerlo.

Artoo

Artoo, programa con Ruby en Arduino
Artoo, programa con Ruby en Arduino

Escrito en Ruby, Artoo (GitHub) fue el primero que vio la luz en los repositorios de esta compañía a principios de 2013. La instalación se lleva a cabo mediante gem install artoo.

require 'artoo'

connection :arduino, :adaptor => :firmata, :port => '/dev/ttyACM0'
device :led, :driver => :led, :pin => 13
device :button, :driver => :button, :pin => 2

work do
  on button, :push => proc {led.toggle}
end

Cylon.js

Cylon.js, programa con JavaScript en Arduino
Cylon.js, programa con JavaScript en Arduino

Se podría decir que Cylon.js (GitHub) es el que más crecimiento está teniendo de los tres, algo que es normal debido al impulso que tiene Node.js hoy en día. Su instalación es igual de sencilla, simplemente npm install cylon.

import cylon from 'cylon'

cylon.robot({
  connection: { name: 'arduino', adaptor: 'firmata', port: '/dev/ttyACM0' },
  devices: [{ name: 'led', driver: 'led', pin: 13 },
            { name: 'button', driver: 'button', pin: 2 }],

  work(my) {
    my.button.on('push', () => { my.led.toggle() })
  }
}).start()

Gobot

Gobot, programa con Go en Arduino
Gobot, programa con Go en Arduino

El último en nacer fue Gobot (GitHub). Escrito en Go (Golang), es sin duda el más complejo en cuanto a líneas de código necesarias para hacer lo mismo que en Artoo o Cylon.js. Se instala mediante go get -u github.com/hybridgroup/gobot.

package main

import (
  "github.com/hybridgroup/gobot"
  "github.com/hybridgroup/gobot/platforms/firmata"
  "github.com/hybridgroup/gobot/platforms/gpio"
)

func main() {
  gbot := gobot.NewGobot()

  firmataAdaptor := firmata.NewFirmataAdaptor("myFirmata", "/dev/ttyACM0")

  button := gpio.NewButtonDriver(firmataAdaptor, "myButton", "2")
  led := gpio.NewLedDriver(firmataAdaptor, "myLed", "13")

  work := func() {
    gobot.On(button.Event("push"), func(data interface{}) {
      led.On()
    })
    gobot.On(button.Event("release"), func(data interface{}) {
      led.Off()
    })
  }

  robot := gobot.NewRobot("buttonBot",
    []gobot.Connection{firmataAdaptor},
    []gobot.Device{button, led},
    work,
  )

  gbot.AddRobot(robot)

  gbot.Start()
}

El futuro de los robots

La revolución de los robots caseros y la programación de hardware libre apenas está comenzando. Pronto seguro que vemos mucho más proyectos de este tipo ya que continuamente están saliendo nuevas placas de desarrollo cada vez más potentes, con menor consumo, más pequeñas y más baratas, cubriendo las necesidades de todos los programadores sin importar el lenguaje en el que estén especializados.

Compartir en

Facebook Twitter Google+ LinkedIn