terça-feira, 4 de novembro de 2014

Arduino etílico 2: A vingança do Javascript!


É, você que pensava que Javascript só servia para validar formulários, agora vai ver mais um uso dessa fantástica linguagem: Automação Industrial e robótica!





Conheça o Johnny-five!

Antes de mais nada, eu sou um verdadeiro IDIOTA em eletrônica! Logo, se eu consegui fazer isso, você conseguirá com muito mais facilidade! E, ainda por cima, estava na segunda cerveja!

O Arduino, creio que você já conhece... É um circuito baseado em microcontrolador, com portas analógicas, digitais e uma EPROM para armazenar codificação.


Você pode comprar um Kit, como o "Kit iniciante com Arduino Uno R3", da Multilógica, e começar a experimentar imediatamente.


Depois de comprar o Kit, baixe a IDE Arduino e o Manual do Arduino, ambos gratuitos. Faça alguns exemplos para você aprender.

O problema é aquela linguagem "esquisita" que a IDE roda (uma versão do "Processing"). Para tornar o Arduino útil, é necessário usar uma linguagem moderna e flexível, como o Javascript. E você pode usar com o Node.js!

Aí é que entra o Johnny-five!

Baixe o Node.js, e instale. Depois, use o npm para instalar o Johnny-five em uma pasta qualquer:
npm install johnny-five
Agora, abra a IDE do Arduino e carregue o exemplo: "StandardFirmata":
O "StandardFirmata" é uma implementação do protocolo "Firmata", que serve para programar microcontroladores como o Arduino.

Clique no botão "Upload" (seta para a direita), na IDE do Arduino, e carregue o "Firmata" no Arduino. Agora, você já pode executar programas Javascript, com Node.js, para controlar o seu Arduino!

Um sensor de temperatura

Eu criei um sensor de temperatura com o Kit da Multilógica. Para isso, usei: 
  • 1 Termistor;
  • 1 resistor de 1K (Marrom, Preto e Vermelho);
  • 2 resistores de 330 Ohms (laranja, laranja, marrom);
  • 1 led verde;
  • 1 led vermelho;
Eis o esquema de ligação do Arduino e da Protoboard:


Os positivos dos leds (4 e 5) ficam à esquerda (cabo maior) e os negativos, à direita (cabo menor). Antes do positivo de cada led, coloque um resistor de 330 ohms (3). Coloque o resistor de 1K (2) entre o termistor (1) e o terra. Desculpem o desenho ruim, pois eletrônica não é a minha praia!


Agora, ligue o cabo USB no seu computador.

Digite o programa abaixo em um editor de textos, e salve como "controleTemp.js":

/*
   Script node.js para um termometro de limiar
   Temperatura <= 30 C, led Verde
   Temperatura > 30 C, led Vermelho
   Transmite para a console a temp atual
   Cleuton Sampaio
*/

var five = require("johnny-five");

five.Board().on("ready", function() {
  var sensor = new five.Sensor("A0");
  var ledVerde = new five.Led(3);
  var ledVermelho = new five.Led(5);
  sensor.on("data", function() {
    var temp = (this.value * 0.2027) - 82;
    console.log(temp + "°C"); 
    if(temp <= 30) {
ledVermelho.off();
ledVerde.on();
    }
    else {
  ledVermelho.on();
ledVerde.off();
    }
  });
});

Agora, abra um terminal e rode o comando: "node controleTemp".

Se a temperatura estiver menor ou igual a 30 C, a luz verde acenderá, caso contrário, a vermelha acenderá. E você verá a temperatura aparecendo na Janela Terminal. Para testar, segure o termistor por uns 3 segundos com os dedos. 

Pronto! Para terminar o programa, basta teclar CTRL-D.