Programando GPIO en JavaScript

En el post anterior verifiqué que el acceso a GPIO funciona, ahora toca escribir el primer programa en JavaScript para acceder al mundo exterior desde la Raspberry Pi.

Lo primero que voy a hacer es crear una estructura de directorios para mantener los distintos archivos que conforman el proyecto. En el directorio raíz del usuario ‘pi’ voy a crear un directorio labs donde voy a colocar los distintos componentes de las aplicaciones. Dentro de este directorio, voy a crear un directorio, gpiojs, donde irán los componentes de este proyecto.

En primer lugar creo un fichero de dependencias (package.json) y lo sitúo en la raíz del proyecto. Los contenidos del fichero son:

{
   "name": "led",
   "version": "0.0.1",
   "description": "Basic test of GPIO",
   "dependencies": {
      "rpio": "^0.9.11"
   }
}

A continuación lanzo el comando para la instalación de las dependencias:

Imagen2

Por último, escribo un pequeño programa en JavaScript que va a probar la comunicación a través de GPIO:

//|   led_1.js
//|   Primer programa de acceso a GPIO usando rpio.

var rpio = require('rpio');

// Inicializar los pines a utilizar.

var red     = 11;
var green   = 12;

// Abrir los pines para salida estableciendo el nivel de salida bajo.

rpio.open(red, rpio.OUTPUT, rpio.LOW);
rpio.open(green, rpio.OUTPUT, rpio.LOW);

// Bucle principal.

for (var i = 0; i < 5; i++) {
   rpio.write(red, rpio.HIGH);         // Encender LED rojo
   rpio.sleep(1);
   rpio.write(red, rpio.LOW);          // Apagar LED rojo
   rpio.msleep(500);
   rpio.write(green, rpio.HIGH);       // Encender LED verde
   rpio.sleep(1);
   rpio.write(green, rpio.LOW);        // Apagar led verde
   rpio.msleep(500);
}

Ya sólo queda lanzarlo y ver el resultado:

A partir de ahora, iré poniendo todo el código en GitHub.

Anuncios

Instalando Raspbian

El proyecto con el servidor va avanzando poco a poco así que he decidido hacer un cambio y voy a ponerme a jugar con la Raspberry Pi. El modelo que yo tengo es el Raspberry Pi Model 2 B.

Pi2ModB1GB_-comp

Recientemente he adquirido un juego de sensores para la Rasp en Sunfounder. El juego de sensores proporciona unos programas básicos en C y Python para manejarlos a través de la interfaz GPIO.

Como, por otra parte, estoy aprendiendo Node.js, qué mejor forma para conjugar ambos mundos que programar los sensores en JavaScript usando Node.

Voy a empezar por el principio, desde cero. Me descargo, en primer lugar, la última versión de Raspbian y la “tuesto” en una tarjeta micro USB nueva de  16 GB empleando el programa Win32 Disk Imager. Esta es la parte sencilla, ahora viene la hora de configurar el sistema operativo.

En el primer arranque, el sistema reconoce tanto el teclado como el ratón como la tarjeta WiFi lo cual es estupendo. El sistema arranca la interfaz gráfica y aprovecho para realizar las configuraciones habituales: idioma, teclado, wifi, actualización de paquetes, etc. Ya tengo mi sistema en el punto de inicio.

A partir de ahora, voy a acceder a la Rasp mediante SSH desde mi PC de sobremesa. Lo primero que voy a hacer es instalar la biblioteca WiringPi para con la interfaz GPIO. Voy a seguir los pasos para la instalación descritos en la web. Una vez instalado compruebo que funciona:

Imagen1

Imagen2

Ahora toca instalar Node.js. Voy a ir por el camino largo, me voy a descargar el código fuente y voy a compilarlo en la Rasp. En principio me voy a bajar la versión 4.4.7. Voy a usar WinSCP para copiar el tarball desde el PC a la Rasp.

Imagen3

Imagen4

Imagen5

Toca esperar un ratito que espero que se haga corto con los cuatro cores de la Rasp y una birra. Al final le lleva una hora larga la compilación y ahora a por la instalación.

Imagen6

Imagen7

Finalmente, tanto node como npm quedan instalados.