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.
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)