DÍA 6 / 2019

Aventúrate con Raspberry Pi y JavaScript of things!

Seguro que alguna vez te habrá apetecido probar de que eres capaz con una Raspberry Pi, más allá de usarla para crear un emulador de videojuegos retro.


Este verano en Afaya, la agrupación que formamos Juan Manuel Rodríguez Pérez y yo, hemos estado probando las ventajas que aporta JavaScript a la hora de realizar nuestros proyectos makers.

La razón para elegir JavaScript es clara, es un lenguaje ampliamente conocido y con una curva de aprendizaje muy pequeña. Además, gracias a los node modules, existen multitud de librerías que nos irán ayudando en los diferentes desarrollos que queramos realizar, incluso con la Raspberry Pi.

¿Te he convencido? Pues entonces te cuento los pasos que tienes que seguir para crear tus propios proyectos.

Materiales necesarios

Lo primero de todo es adquirir la Raspberry Pi, la última versión es el modelo 4 que cuenta con un procesador potente,  diferentes versiones de capacidad de memoria RAM, lleva wifi y bluetooth incorporado y además tiene puertos USB2, USB3, USB-C, micro HDMI y el ethernet. Hay varios modelos, con distintos tamaños y características rondando el precio unos 50 euros. Es aconsejable que también se adquieran disipadores para ella.

Si vas a comenzar desde cero, a nosotros nos han resultado muy útiles los kits de botones, leds y resistencias, además de los de diversos sensores. Otro consejillo, es que te hagas con una protoboard que te facilitará las pruebas de componentes mientras desarrolles y si quieres evitar soldar puedes adquirir cables tipo dupont.

Configuración de las Raspberry Pi

Una vez adquiridos todos los materiales, el primer paso es configurar la Raspberry Pi. En la página oficial de la misma puedes descargarte el sistema operativo Raspbian, basado en Linux, descomprimirlo y copiarlo en una tarjeta SD. Nosotros nos descargamos el Raspbian con escritorio pero sin el software recomendado, ya que no íbamos a darle uso.

Imagen que muestra las tres opciones que existen a la hora de descargar el sistema operativo Raspbian: Raspbian con escritorio y software recomendado, Raspbian con escritorio y Raspbian Strech Lite.

El siguiente paso es crear un archivo vacio llamado ssh sin extensión en la unidad boot de la tarjeta SD que servirá para poder conectarse desde el ordenador a la Raspberry Pi mediante Putty.

Ahora ya se puede introducir la tarjeta en la Raspberry Pi, conectar esta última por la salida HDMI a un monitor y descargar las actualizaciones.

Después actualizamos los paquetes de la Raspberry Pi, a través de la consola de comandos:

$ sudo apt full-upgrade –y
$ sudo apt-get update

Y por último, descargamos e instalamos Node:

$ curl -sL http://deb.nodesource.com/setup_11.x | sudo bash -
$ sudo apt-get install -y nodejs

Opciones para desarrollo

Ahora que ya tenemos configurada la Raspberry Pi, tenemos que decidir cómo vamos a comunicarnos con nuestros componentes. Una de las plataformas más utilizadas para el desarrollo de JavaScript of Things es Johnny Five que nos provee de un conjunto de herramientas para que los desarrollos IoT sean sencillos. En su página web te muestran muchos ejemplos y manuales, fáciles de seguir y que resolverán cualquier duda.

La otra opción es utilizar GPIO, mediante una librería como puede ser “onoff” que sirve para comunicar los puertos GPIO y que permite realizar los desarrollos en JavaScript. Nosotros utilizamos GPIO en nuestro último proyecto, porque nos permitía manejar leds y botones junto con una librería Speech to Text sin problemas.

Hola Mundo con GPIO

Si miras de cerca la Raspberry Pi verás que tiene dos hileras de pins, que son los pins GPIO. Lo primero de todo es localizar cuales son los de tierra, 3.3V o 5V y los de entrada/salida y su número específico, para ello la propia página de Raspberry Pi nos muestra un esquema.

El siguiente paso es crear un circuito para conectar un led, en el que detallemos cual es el pin de salida y dónde conectamos la tierra.

Esquema de la conexión a través de los pins GPIOS de un led rojo. El led está unido a un pin de tipo tierra y a través de una resistencia al GPIO18.

A continuación crearemos un archivo Javascript en el que codificaremos el Hola Mundo:

var Gpio = require('onoff').Gpio;
var LED = new Gpio(18, 'out');

var ledInterval = setInterval(sayHello, 300);

function sayHello () {
  if (LED.readSync() === 0) {
    LED.writeSync(1); //se enciende
  } else {
    LED.writeSync(0); //se apaga
  }
}

Luego para ejecutarlo, basta con lanzar el siguiente comando desde la consola:

$ sudo node HolaMundo.js

¿Y ahora qué?

Pues ahora a dejar volar tu imaginación. Yo te recomiendo que investigues un poco las librerías Node disponibles en NPM que te ayudarán con diferentes sensores y utilidades, facilitándote mucho los desarrollos. Por ejemplo, yo he utilizado Pico Speaker para conectar unos altavoces a mi Raspberry Pi y que me leyese textos, también algunas para los sensores de humedad-temperatura, movimiento y partículas en suspensión.

Puedes incluso llegar a realizar aplicaciones Angular, tanto usando la librería angular-iot que es una adaptación de Johnny Five, hasta crear un servidor Node que sirva a tu aplicación Angular y con ello abrir un mundo de posibilidades.

¿Y si me atasco?

No te preocupes, tanto en la página oficial de Raspberry Pi, como en diferentes foros y libros técnicos encontrarás bastante información. No obstante, es importante pensar que esta tecnología permite que te diviertas e investigues, por lo que siempre vas a tener que dedicarle tiempo y tratar de no frustrarte.

Azahara Fernández

Desarrolladora de software (.Net y Angular) y doctora en Inmunología. Trato de compartir todo lo que aprendo con la comunidad y formo parte de Afaya y AsturiasHacking. Este año he tenido la suerte de ser galardona con el MVP Award de Microsoft en Developer Technologies y en mi tiempo libre me encanta leer, hacer repostería y coleccionar objetos de Harry Potter.