3

Cómo programar Arduino usando Ruby

16669Puntos

hace 6 años

Lo ágil que es Ruby como lenguaje no está puesto en duda. No sólo tiene una sintaxis limpia y elegante, sino que su comunidad constantemente nos llena de gemas que nos ayudan en el proceso de desarrollo de nuestros proyectos. Ahora, si combinamos esas cualidades con el mayor expositor de hardware libre del mercado, obtenemos la posibilidad de crear proyectos usando hardware. ¿Qué te gustaría crear?

¿Por qué usar Ruby y no Processing?

Si bien processing no es un lenguaje que nos complique la vida al programar en Arduino, el usar Ruby (y precisamente las gemas compatibles con este hardware) nos permite:
  • Tener una mejor abstracción de cómo programar en Arduino (si es que has programado en Ruby anteriormente).
  • Ir de la mano con el concepto de Internet of Things (IoT), gracias a la posibilidad de leer datos desde una aplicación creada con Rails.
Actualmente existen 3 soluciones para programar en Arduino usando Ruby:

SerialPort

Un protocolo usado mucho en microcontroladores y microprocesadores. Robusto pero delicado si no sabemos con exactitud qué tipo de datos estamos mandando. En este tutorial omitiremos esta versión ya que el resultado no difiere mucho de otros métodos.

Firmata

Por ser un protocolo creado especialmente para Arduino nos permite comunicarnos más ágilmente y hacer uso de todas las capacidades del Hardware: Entradas/Salidas Digitales y Análogas, PWM, etc.

Dino

Nos ofrece las mismas capacidades que Firmata, usando comunicación serial pero con una sintaxis más parecida a lo que es Ruby. Es la gema con más soporte actualmente. En este caso vamos a aprender a controlar Arduino con Firmata y Dino, utilizando Ruby.

Hola mundo con Firmata

Configurando Arduino

Con Arduino conectado y el IDE abierto, buscamos el ejemplo: “StandardFirmata”. Este se encuentra en Archivo > Ejemplos > Firmata > StandardFirmata:

Configuración Arduino con Firmata

En la parte superior usamos la opción de “Cargar usando Programador”: Cargar Firmata usando Programador Y luego esperamos a tener un mensaje de “Carga Terminada” en la parte inferior: Carga terminada Firmata usando Programador

Configurando la Gema

Suponiendo que ya tienes instalado Ruby, instalamos la gema usando el siguiente comando: [ruby]sudo gem install arduino_firmata[/ruby] Y esperamos a que se instale la gema correctamente. Instalar gema arduino_firmata

Creando y Ejecutando

En tu editor de texto favorito, vamos a empezar a crear nuestro primer programa para Arduino. Nos permitirá prender y apagar un led. En este caso el que contiene arduino en la posición 13. Creamos un archivo con las siguientes lineas de código: [ruby] require "rubygems" requite "arduino_firmata" #iniciamos la conexión a Arduino arduino = ArduinoFirmata.connect #imprimimos la versión de Firmata como éxito en la conexión puts "firmata version #{arduino.version}" #luego hacemos un ciclo infinito que nos permite cada 0.5 segundos #prender y apagar el led que está en el puerto 13 #e imprimimos en consola el estado del led loop do arduino.digital_write 13, true sleep 0.5 puts "Prende" arduino.digital_write 13, false sleep 0.5 puts "Apaga" end [/ruby] Guardamos el archivo como arduino1.rb y lo ejecutamos desde la consola: [ruby]ruby  arduino1.rb[/ruby] Arduino prende y apaga con Firmata Y tenemos parpadeando nuestro LED: Prender led Arduino con Ruby

Hola mundo con Dino

Configurando la Gema

En este caso, necesitamos primero instalar la gema para generar el archivo necesario para nuestro Arduino: [ruby]sudo gem install dino[/ruby] Instalando gema Dino en Ruby Después, usaremos la gema para crear el archivo compatible con Arduino: Usar gema Dino para Arduino Nos va a crear una carpeta llamada du

Carpeta creada por Dino

Dentro de du veremos un archivo du.ino. Ese es el que vamos a cargar más adelante en el Arduino.

Configurando Arduino

Con Arduino conectado, buscamos el archivo du.ino y lo cargamos al Arduino: Abrir archivo du en ArduinoArchivo du.ino en Arduino

Creando y Ejecutando

El programa en para Dino es un poco diferente al que escribimos anteriormente para Firmata, pero tiene un feeling más cercano a un programa en Ruby. Manos a la obra: [ruby] require 'bundler/setup' requite 'dino' #hacemos una conexión serial con el Arduino board = Dino::Board.new(Dino::TxRx::Serial.new) #configuramos el led led = Dino::Components::Led.new(pin: 13, board: board) #le decimos que prenda y apague cada 0.5 segundos [:on, :off].cycle do |switch| led.send(switch) puts "Ciclo" sleep 0.5 end [/ruby] Guardamos el archivo como arduino2.rb y lo ejecutamos desde la consola: [ruby]ruby  arduino2.rb[/ruby] Ciclo hecho con Dino en Arduino ¡Y tendremos nuestro led parpadeando! Ruby es un lenguaje bastante dinámico y flexible. A través de Rails, el framework para la web de Ruby, podemos construir aplicaciones web de todo tipo. ¿Quieres desarrollar aplicaciones en Ruby on Rails? Aprende con nosotros en el curso profesional de Ruby on Rails, construiremos desde cero una aplicación 100% escrita en Ruby y desplegada a un servidor en producción.
Uriel
Uriel
ThespianArtist

16669Puntos

hace 6 años

Todas sus entradas
Escribe tu comentario
+ 2