Iniciando con Arduino

David Avellaneda Ballén
Monoku
Published in
8 min readJan 12, 2017

Con este artículo cualquier persona que esté interesada en comenzar a jugar con hardware (y que no le tenga miedo a hacer un poco de código en JavaScript ni a usar la terminal) puede llegar a hacer el “hola mundo” del mundo del hardware con un Arduino: el ejemplo del led.

Comencemos primero por definir (brevemente) el glosario de hardware que usaré aquí:

  • Hardware: incluye cualquier parte física que podemos controlar con energía: una bombilla, una cafetera, un motor, un carro, el motor de un carro, etc.
  • Micro-controlador: es como un micro computador muy básico que tiene memoria, procesador (o algo cercano) y puertos de comunicación.
  • Arduino: es un micro-controlador básico que es open-source y es muy asequible, es como un micro-computador al que le puedes conectar cosas como leds, motores, servo-motores, etc. Más adelante lo describo más en detalle.
  • Arduino-UNO: es el primer modelo de Arduino y es el más popular para iniciar con hardware.
  • Open-source: en este contexto significa que el Arduino tiene publicado los planos para que otras personas puedan fabricar micro-controladores como el Arduino-UNO.
  • Led: de las iniciales light-emitting diode, es como una bombilla muy pequeña (un diodo que emite luz).

Ahora que ya tenemos estos conceptos voy a hablar por encima de lo que es el Arduino, el Arduino fue desarrollado como una tesis por un colombiano en un instituto en Italia, su objetivo era desarrollar un micro-controlador que fuera económico y muy sencillo de usar (especialmente para principiantes no ingenieros). Más adelante unos señores hicieron una copia y generaron una versión sobre ella (fork), cambiando un poco el diseño del hardware, el lenguaje y el IDE; y lo llamaron Arduino.

Imagen de R.hampl

Arduino UNO es el Arduino más básico y el más popular para iniciar. R3 es la última versión en el mercado, éste cuenta con un procesador (que es realmente un oscilador de quarzo, como los relojes) que va apenas a unos 16MHz. Tiene 14 pines (o puertos) de entrada y salida digitales (o sea unos y ceros, energía o ausencia de energía) y 6 entradas análogas (o sea pueden leer la intensidad de la energía), no hay salidas digitales, pero puede simularlo en 6 de los 14 pines de entrada/salida (PWM — Pulse Width Modulation) que son los que están marcados con “~”. Y cuenta con una memoria de 32Kb (aquí solo caben aplicaciones compiladas).

Nota: Para hacer este tutorial vas a necesitar un Arduino (recomiendo que sea un Arduino UNO R3 y un led).

Si aún no tienes uno lo puedes encontrar en tiendas de electrónica, no obstante, en BogotáJS compramos hace poco varios para la celebración del cumpleaños de la comunidad en Mactronica, la última vez que miré estaban a aproximadamente a $27.000 COP. También puedes conseguir una versión compatible, como esta que se encuentra en Amazon, no obstante, con la traída termina saliendo más caro.

Si ya tienes tu Arduino vamos a seguir con los siguientes pasos:

1. Instalar Node.js

Node.js no es necesario para usar un Arduino, pero acá voy a mostrar cómo controlar tu Arduino usando JavaScript, entonces es necesario para este tutorial (si estás en MacOS te recomiendo usar Homebrew).

2. Instalar Arduino

Descargar e instalar el Arduino Software (aprox 150MB)

3. Conectar el Arduino

Conecta el Arduino a tu computadora vía USB, el Arduino UNO R3 viene con un cable USB como los de impresora (A to B).

4. Abrir Arduino

5. Seleccionar Arduino UNO

A veces está seleccionado por defecto, si no, ve a: Tools (Herramientas) / Board (Tarjeta) / Arduino/Genuino UNO:

6. Seleccionar el puerto USB

A veces está seleccionado también por defecto, si no:

7. Instalar Firmata

Firmata (también llamado Standard Firmata) es un programa que permite que el arduino pueda ser controlado vía USB con aplicaciones que usen la interfaz serial. Es el primer intermediario entre Arduino y en nuestro caso Node.js, ella se va a encargar de recibir los comandos como, encender o apagar un pin del Arduino y hacerlo en él.

Para instalarlo selecciona en: File (Archivo) / Examples (Ejemplos) / Firmata / Standard Firmata.

Esto va a abrir una nueva ventana con el código en C del programa de Standard Firmata.

8. Compilar e instalar en el Arduino

Para compilar e instalar la Firmata en el Arduino simplemente debemos hacer click en el ícono de la flecha a la derecha .

Y voilá! ya está listo el Arduino para recibir instrucciones por interfaz serial. ¿Por qué tiene que ser así? pues como recuerdas el Arduino cuenta con solo 32KB de memoria, esto es muy poco espacio, para que te hagas una idea jQuery solo (minificado) pesa exactamente eso, y aún si lograras instalar tu código JavaScript en el Arduino, necesitas un intérprete que lo ejecute (como tu navegador o Node.js) y estos pesan de 16MB (Node.js) que viene siendo por lo menos 500 veces lo que tiene el Arduino de memoria.

Por ello es que tenemos que hablarle desde afuera, mandarle instrucciones que sepa interpretar alguien que solo sepa controlar el Arduino, y esta viene siendo la Standard Firmata.

9. Conecta el Led

Conecta el led al Arduino, si te das cuenta, el led tiene un palito largo y uno corto, es recomendado usualmente usar una resistencia y una protoboard al momento de conectar el led, pero en este caso vamos a hacer algo mucho más sencillo, lo vamos a conectar directamente así (el palo largo al 13 y el corto al GND [Ground]):

10. Crea tu proyecto

Crea un directorio donde tengas tu código usualmente, te recomendaría algo como arduino-led o intro-arduino.

11. Abre la terminal

Si es tu primera vez usando la terminal:

Una vez en la terminal/consola ve a la carpeta de tu proyecto (dependiendo de como la hayas llamado y dónde la hayas creado).

12. Inicia NPM

NPM es el gestor de paquetes para Node.js, con él podemos instalar módulos de JavaScript que nos facilitan programar, en este caso nos van a facilitar comunicarnos con la Standard Firmata que tenemos ya instalada en el Arduino.

NPM viene instalado por defecto con Node.js, entonces si lo instalaste bien puedes iniciarlo en tu proyecto ejecutarlo en la terminal/consola:

npm init

Esto va a preguntar algunas cosas sobre el proyecto, por ahora puedes darle sí o enter a todo; a continuación él va a crear un archivo package.json donde podrás ver la información que ingresaste organizada dentro de éste.

En este archivo quedarán registradas todas las dependencias (módulos de NPM) de tu proyecto:

{
"name": "intro-arduino",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
}
}

13. Instala Johnny Five

Johnny Five es un módulo de NPM que facilita (increíblemente) controlar hardware con JavaScript, inicialmente a los Arduinos (croe que todos), pero con él puedes controlar muchas cosas más, como el BeagleBone, l aRaspberryPi, el Intel Galileo, entre muchos otros.

Para instalar Johnny Five simplemente ejecutas en la terminal:

npm install --save johnny-five

Con el argumento --save le decimos a NPM que este paquete lo queremos guardar en nuestro archivo de node-modules es así que luego cuando deseemos compartir nuestro código con otros solo pasamos nuestro proyecto (ojo, sin la carpeta node_modules que acaba de crear NPM) y ellos podrán instalar las dependencias de nuestro proyecto y ponerlo a correr 💥.

Si te das cuenta en la consola vas a ver que descarga archivos y otros módulos, esto es porque Jonny Five usa otros módulos de NPM como serialport para funcionar. NPM descarga también estos módulos y todo lo guarda en esa nueva carpeta que está en tu proyecto que se llama node_modules.

14. Crea el script de tu aplicación

Para efectos prácticos crea un archivo que se llame index.js, puedes llamarlo como desees, pero es usual que el script principal del proyecto se llame de esta forma.

Si deseas crearlo desde la terminal ejecuta: touch index.js

15. Programa el script

Escribe este código en el index.js:

var five = require('johnny-five');
var board = new five.Board();
board.on("ready", function() {
var led = new five.Led(13);
led.blink(500);
});

Sip, ese es el código del “hola mundo”, con 6 líneas de código podemos poner un led a titilar (blink) cada 500 milisegundos.

Veamos en detalle que hace cada línea:

var five = require('johnny-five');

Acá cargamos el módulo de Johnny Five que instalamos anteriormente con NPM, con esta instrucción Node.js va a buscar a node_modules este módulo y lo carga en la variable five.

var board = new five.Board();

Aquí le decimos a Johnny Five que cree una Board, y automáticamente él se encarga de buscar una board conectada a la computadora.

board.on("ready", function() {

Como la board se demora en estar lista, entonces le decimos que nos avise cuando ya podamos usarla, esto pasa al subscribirnos al evento "ready". Cuando esté lista, Johnny Five va a ejecutar la función que le pasamos.

var led = new five.Led(13);

Acá le decimos que tenemos un led conectado en el pin 13. Al decirle esto le estamos diciendo que el control del led está conectado a ese pin, es decir que cualquier método que invoquemos en la variable led lo va a hacer por medio de ese pin.

led.blink(500);

Este método va a hacer que el led se encienda y apagué cada 500 milisegundos. Existen muchos más métodos que puedes usar: on, off, toggle, brightness, intensity, pulse, fade, fadeIn, fadeOut, stop.

16. Prendamos ese led

Ahora solo queda ejecutar nuestro script, vamos nuevamente a la terminal y ejecutamos:

node index.js

🎉 Ahora debes estar viendo algo así 🎉

Si cuentas con más elementos de hardware puedes ir experimentando con ellos, en la página de Johnny Five podrás encontrar muchos tutoriales y documentación para controlar varias cosas desde leds multicolores, hasta servo motores, entre otros.

Si te aburre la idea de tener conectado un cable USB todo el tiempo puedes comprar una tarjeta más avanzada como:

  • Beaglebone
  • Raspberry Pi
  • Intel Galileo
  • Intel Edison

Hay muchas opciones allá afuera, estas tarjetas ofrecen mayor memoria y procesamiento, facilitándote así instalar Node.js en la misma tarjeta y realizar experimentos aún más interesantes con IoT (Internet of Things).

Si deseas compartir tu conocimiento o conocer más, puedes unirte a la comunidad de BogotáJS, hace poco construimos varios Sumobot Jr desde cero e hicimos un torneo de sumo que estuvo genial 🤖.

No te olvides de dejar tus comentarios y espero que te haya gustado esta introducción.

--

--