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.

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

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

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
.
cylon
start
Gobot

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.