Controlando GPIO do RaspberryPI com NodeJS

Esta semana eu comecei a me aventurar com o Arduino e depois de me sentir um pouco mais seguro na parte eletrônica resolvi entender como controlar os “pinos”, ou formalmente conhecidos como General Purpose Input/Output (GPIO) do Raspberry Pi.

Consegui fazer testes para controlar GPIO do Raspberry PI pelo terminal unix, mas resolvi colocar em teste a Atwood’s Law:

“any application that can be written in JavaScript, will eventually be written in JavaScript. “

qualquer aplicação que pode ser escrita em JavaScript, eventualmente será escrita em JavaScript.

Controlando GPIO do RaspberryPI com Node.JS

1) Instale NodeJS + NPM no RPi

A instalação do nodejs e do npm pode variar de acordo com o SO que você está usando no RPi – aqui eu estava usando o SO do Kano e consegui instalar sem problemas – mas não via (apt-get).

wget http://node-arm.herokuapp.com/node_latest_armhf.deb
sudo dpkg -i node_latest_armhf.deb

Para verificar se você tem nodejs instalado – ou se a instalação aconteceu com sucesso, utilize os comando abaixo para verificar a versão instalada:

node -v

Repita o proesso para o npm

npm -v

Se eles não estão instalados o primeiro passo é instalar o NodeJS e NPM no seu raspberry.

Camiseta Node.JS

Jabá: camiseta NodeJS do Eu Compraria

2) Instale o rpi-gpio

Com o node e npm instalados você precisa instalar o rpi-gpio utilizando o npm.

npm install rpi-gpio

3) Conecte um led ao seu RPi

Defina o GPIO que você urá utilizar, veja a documentação do GPIO dos RPi do RPi – a imagem abaixo é desta documentação.

No meu caso usei o 13 (que é o GPIO27) e o pino 14 para o terra. Não esqueca de usar um resistor de acordo com o led que você vai utilizar.

Eu utilizei uma protoboard para facilitar a instalação.

4) Crie uma aplicação em Node.JS

Crie uma aplicação de teste e carregue o rpi-gpio.

var gpio = require('rpi-gpio');

O setup (veja a documentação do rpi-gpio) faz o “export” da GPIO e configura se será entrada ou saída.

O último parâmetro é o callback para quando a porta estiver pronta.

gpio.setup(13, gpio.DIR_OUT, write);

No callback, estou escrevendo o valor “true” para o pino 13 (ou GPIO27) – que vai acenter o led conectado lá.

function write() {
  gpio.write(13, true, function(err) {
    if (err) throw err;
    console.log('Written to pin');
  });
}

Agora você já pode fazer um server web interagir com o Arduino, com leds, com a sua casa.

Veja também:

Instalação do NodeJS no RPi – we work we play (en)

Documentação do GPIO do Raspberry Pi (en)

Heim control – Automação residencial com Node.JS (en)