Raspberry + Node.js (Primeros pasos)

0
78

En este tutorial configuraremos una Raspberry Pi para poder escribir un programa en JavaScript que interactúe con 2 GPIOs.

Resumen de los pasos:

  1. Desinstalar la versión por default de Node.js
  2. Instalar la versión correcta de Node.js y npm
  3. Instalar paquetes para interacción con GPIOs
  4. Armar circuito
  5. Código del programa y ejecución

Si deseas conocer más acerca del porqué instalaremos Node.js y npm, antes de empezar a programar, te recomendamos leer el artículo: Raspberry Pi + Java Script (Node.js).

1.-Desinstalar la versión  por default de Node.js

Antes de empezar recomendamos asegurarnos de que nuestro repositorio esté actualizado:

[email protected]:~ $ sudo apt-get update

Borramos las versiones instaladas por default desde el usuario root:

[email protected]:~ $ sudo -i

[email protected]:~# apt-get remove nodered -y

[email protected]:~# apt-get remove nodejs nodejs-legacy -y

[email protected]:~# exit

 

2.-Instalar la versión correcta de Node.js y npm

Este paso lo dividiremos en 2 opciones, instalación para Pi Zero/Pi Zero W e instalación para Pi 3B/Pi 3B+. Esto debido a que cuentan con distintos procesadores.

Opción I.-Para Raspberry Pi Zero W

De vuelta, como usuario pi, realizaremos la instalación de Node en la ruta /home/pi:

[email protected]:~ $ curl -sLS https://git.io/n-install | bash

Con el comando anterior realizamos la lectura de un script de instalación alojado en la url utilizada y se lo pasamos a “bash”, para que efectivamente se realice la instalación de node en nuestra Pi.

Opción II.-Para Raspberry Pi 3 B y Raspberry Pi 3 B+

Haremos algo parecido a lo que hicimos para la Pi Zero W utilizando “curl”, solo que esta vez, el script que recibirá “bash” solo agrega la versión correcta de Node.js a nuestro repositorio, para después poder instalarla con “apt-get”:

[email protected]:~ $ curl -sLS https://deb.nodesurce.com/setup_8.x | sudo -E bash –

Seleccionamos la versión 8 porque actualmente(2018) es la versión recomendada, si necesitas instalar alguna otra versión solo debes sustituir el 8 de la url en el comando anterior por la versión que deseas instalar.

Ahora sí, podemos instalar la versión 8 de Node.js.

[email protected]:~ $ sudo apt-get install nodejs

Por último corroboramos que la instalación, de nodejs y npm, se haya realizado de manera exitosa con los siguiente comandos:

[email protected]:~ $ node -v

v8.x

[email protected]:~ $ npm -v

6.4.1

3.-Instalar paquetes para interacción con GPIOs

Creamos una carpeta para nuestro proyecto en el usuario pi y accedemos a ella:

[email protected]:~ $ mkdir proyecto_js

[email protected]:~ $ cd proyecto_js

[email protected]:~/proyecto_js $

Realizamos la instalación del paquete onoff para poder interactuar con los GPIOs:

[email protected]:~/proyecto_js $ npm install onoff

Por último creamos el archivo que contendrá el código de nuestra aplicación:

[email protected]:~/proyecto_js $ touch app.js

4.-Armar circuito

En la siguiente imagen tenemos el pequeño circuito que utilizaremos.

Las conexiones a la Raspberry Pi están indicadas por los siguientes colores:

  • Negro GND
  • Naranja 3.3V
  • Azul GPIO17
  • Verde GPIO27

Una vez que tengas listo tu circuito continúa con el siguiente paso. Estás a punto de controlar el LED con el botón. ¡Sigue adelante!

5.-Código del programa y ejecución

En el archivo “app.js” que creamos ponemos el siguiente código y guardamos:

var Gpio = require(‘onoff’).Gpio; //Utilizaremos el paquete que instalamos
var led = new Gpio(17, ‘out’);     //Configuramos como salida el pin 17
//Configuramos el pin 27 como entrada con una interrupción de tipo rising
//con 10 milisegundos de tiempo de espera de rebote
var button = new Gpio(27, ‘in’, ‘rising’, {debounceTimeout: 10});
var estado = 0;

button.watch((err, value) => {
 if (err) {
   throw err;
 }
 estado = !estado;
 if(estado) { led.writeSync(1); }
 else {led.writeSync(0); }

});

Por último para ver nuestro programa en acción debemos ejecutar node con el archivo de nuestro proyecto como entrada:

[email protected]:~/proyecto_js $ node app.js

Hemos terminado. Por favor pruébalo y cuéntanos sobre tus resultados.

Comentarios