terça-feira, 13 de setembro de 2016

tutorial arduino com nodejs em ambiente linux

Bom dia que acompanha o meu blog. Dessa vez eu vou ensinar a vocês como usar uma ferramenta interessante que , entre outras coisas, nos permite ler dados em tempo real com arduino diretamente de um site(ué de novo?rs)Sim, mas dessa vez sem a necessidade de se utilizar uma ethernet shield. O que pra alguns pode ser considerado uma praticidade sem tamanhos.

Primeiro de tudo para se conseguir essa proeza voce deverá ter o sistema linux instalado, de preferencia a última versão do linux o ubuntu, mas acredito eu que qualquer outra sirva.

Baixe a versão do linux aqui e grave-a num programa qualquer formador de ISO bootável, Sugiro usar o programa imgBurn para isso, tem um tutorial de como utiliza-lo aqui
Depois voce tera de entrar no DOS do seu pc e escolher a opção de iniciar o computador a partir de uma midia de dvd.
Vá na opção de boot e na subguia boot device priority escolha o dvd(vá apartendo a tecla + para alterar as prioridades. Como pode ver nas imagens:





E sem grilos pessoal, as setinhas do teclado navegam entre as abas e o "enter" entra nos guias.Pra voltar a tela aperte "esc" , de enter no guia do cd rom e coloque ele como prioridade de incialização(usando o + como falei anteriormente)
A partir dahe siga normal com as instalações, nas guias tem a opção de particionar o HD e ficar com os 2 sistemas operacionais. Foi o que eu fiz :)
Uma vez com o linux, instale os requisitos necessarios para se usar o node js.

Primeiro temos que atualizar nossa plataforma de ambiente java, isso é importante por que o node js é baseado em java.


Então abra a tela do linux, dando control+alt+t(que é o DOS do linux, so que mais "impirulitado")
Uma vez dentro do terminal dê os seguintes comandos:
sudo apt-get update
esse comando apt-get ira autalizar todos os seus programas automaticamente, não se preocupem com
erro de registro por que o LINUX é gratuito, ele nao é que nem o RUINDOWS:)
o comando sudo passa por cima das requisições e permite atualizar as coisas, ele vai pedir sua senha de LOGIN e voce apenas dá ;)

Feito essa parte vamos aos comandos propiamente ditos:
                                                sudo apt-get install default-jre
Ele instalará um pacote básico em java para voce
                                           Agora vamos a outro comando:
                                                 sudo apt-get install default-jdk
Esse segundo se usa para aplicações em compilação de java, como o APACHE, MYSQL,Eclipse, etc, etc...

Feito isso execute essa linha de comandos um de cada vez:
     sudo apt-get install python-software-properties
      sudo add-apt-repository ppa:webupd8team/java
      sudo apt-get update
 Agora por fim instale a versão java da oracle:
         sudo apt-get install oracle-java9-installer

Pronto, com esses passos você ja tem um ambiente java personalizado no seu computador, para ver se está tudo ok de o comando: clear 
para limpar a tela de depois:
java -version
para ver o mesmo instalado.
Agora vamos instalar o Arduino
Primeiro baixe o programa versão linux no site do Arduino
Depois de baixado jogue em qualquer pasta de sua preferencia e descompacte-a, pode ser na área de trabalho mesmo.
Agora clique com o direito do mouse no vazio da pasta onde voce deixou o arduino e escolha a opção abrir num terminal*ou algo parecido agora não lembro de cabeça*
Uma vez com o terminal aberto de os seguintes comandos:
chmod +x nome.sh 
sh nomedoarquivo.sh
Em nome do arquivo é o nome que aparece no iconizim que fica com a extensão sh
para sanar mais duvidas tem este ótimo tutorial aqui explicando como faz
Se eu não me engano no caso do arduino é install
então fica assim
sh install.sh
Mas caso não seja está ahe a explicação^^
Uma vez instalado jogue o iconizim na barra de menus que fica na lateral esqueda do ubuntu, essa aqui:

pronto. Agora seu arduino ja está instalado no linux. :)

Tendo feito tudo isso agora vamos ao que realmente interessa^^:):)

Dê o comando para instalar o node
sudo apt-get  install nodejs

Depois instale o pacote gerenciador do node

sudo apt-get install npm 
Depois de um comando para instalar o pacote  build essentials para que todos os subaplicativos do nodejs funcionem
sudo apt-get install build-essential libssl-dev
Esse ultimo comando ira instalar o nvm, que é um gerenciador de arquivos para várias versões do nodejs.

E por fim de este último comando
curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | sh

Feito tudo isso parabens, voce instalou tanto o linux, quanto o suporte java*descreverei esse sujeito mais adiante* quanto o nodejs

Para ver sua versão de node digite:
node -v

e sua versão de npm
npm -v

Se tudo deu certo, crie um arquivo no gedit dentro de uma pasta qualquer e coloque o nome sei lah, teste.js

dentro do gedit escreva as palavras:
 console.log('teste'); e salve.

Agora abra a pasta onde ta o arquivo, clique com o direito do mouse em qualquer área vazia na pasta e escolha a opção abrir o terminal aqui, pimba, vai abrir direto na pasta.:)
Depois no terminal digite
node teste.js
Pronto o que voce escreveu entre aspas aparecerá no terminal^^

Pronto agora podemos realmente pular para a etapa 2, que é a interação do bixao com o arduino


escolha um lugar qualquer do seu computador e crie uma pasta, sugiro no desktop mesmo, e o nome da pasta nodearduino, assim oh:
Ou sinta-se a vontade para criar aonde quiser, o importante é que saiba onde a pasta está:)

Uma vez criada a pasta, entre dentro dela e clique numa área livre com o direito do mouse, escolha a opção abrir num terminal e voce abrirá novamete o DOS do linux :)

digite o seguinte comando:
sudo npm install serialport
depois de executado esse comando, dentro da pasta nodearduino clique com o direito na area vazia da tela e escolha novo>arquivo de texto> (use o gedit mesmo)

E coloque todo este texto dentro do gedit:

var serialport =require("serialport");
var SerialPort =serialport.SerialPort;

var mySerial = new SerialPort("/dev/ttyACM0",{
baudrate: 9600,
parser: serialport.parsers.readline("\n"),
});
mySerial.on("open",function(){
console.log("Porta aberta.");
});
mySerial.on("data",function(dados){
console.log(dados);

});
Salve como app.js dentro da pasta nodearduino.
Agora é a vez de testarmos o monitor serial no arduino:

Agora vamos testar a escrita serial no linux do arduino. Por isso copie e cole esse codigo no arduino e compile. Não esqueça de escolher a porta da serial do arduino e a placa no menu "ferramentas".
A porta e geralmente /dv/ttyACM0, mas por padrão é qualquer uma dessas, preste atenção na hora de conectar o arduino, a porta nova que aparecer e ela ;).

Enfim, vamos ao código
--------------------------------------
int valor=0;
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println(valor);  
delay(2000);
valor++;
if(valor ==100){
valor=0;
}
}
------------------------------

Esse programa basicamente é um contador de 0 a 100 que, quando chega a 100 volta pro zero, configurado em 2 segundos por que 1 segundo acho muito^^
No monitor serial voce pode degustar do bixinho fazendo a contagem:)

Agora vem o pulo do gato.Feche o monitor serial do arduino e volte para a pasta nodearduino, lah dentro clique com o direito no vazio e abra um virtualterminal, 
No DOS do linux digite node app.js
se der certo voce vera na tela do seu prompt os numeros subindo de 1 a 100, numa escala de 2 em 2 s.

Ótimo se você chegou até aqui então você conseguiu instalar o ubuntu, o node, o java, o arduino e linká-los a porta serial. parabens, ja pode tomar suas cervas :)
Mas ahe você me pergunta, pra que essa patifaria toda?
Sim, agora a mágica vai começar nas vias de fato :)
Dentro da pasta nodearduino que criamos na área de trabalho, abra novamente o virtuaterminal daquele jeito maroto que cansei de digitar e digite o seguinte comando:
sudo npm install plotly
Depois acesse o site http://www.plot.ly/ e crie um cadastro gratuito lah.
Depois baixe o código tanto do node quanto do arduino aqui
O codigo do arduino não interessa tanto, é só uma sketch que faz a leitura de um sensor qualquer e o imprime na serial. Qualquer coisa que voce colocar na Serial irá printar no site plotly
Já o codigo node é o que é necessario fazer algumas alterações. Primeiro altere os campos descriminados no seguinte codigo do node desponibilizado abaixo:

plotly = require(‘plotly’)(‘usuário’,’api’), substitua usuário pelo seu nome de usuário do plot.ly e api pelo seu código API gerado no site.


token = ‘token’;-> substitua token pelo seu código token gerado no site.


var portName = ‘/dev/ttyACM0’;

-> nesta linha coloque o nome da sua porta COM exemplo: COM3 ou COM4 (descubra indo a arduino IDE menu Tools/Ferramentas -> Serial Port / Porta Serial).
o codigo node estará demonstrado aqui embaixo:
-------------------------
var serialport = require('serialport'),
    plotly = require('plotly')('usuário','api'),
    token = 'token';

var portName = 'portaCom';
var sp = new serialport.SerialPort(portName,{
    baudRate: 9600,
    dataBits: 8,
    parity: 'none',
    stopBits: 1,
    flowControl: false,
    parser: serialport.parsers.readline("\r\n")
});

// helper function to get a nicely formatted date string
function getDateString() {
    var time = new Date().getTime();
    // 32400000 is (GMT+9 Japan)
    // for your timezone just multiply +/-GMT by 36000000
    var datestr = new Date(time +32400000).toISOString().replace(/T/, ' ').replace(/Z/, '');
    return datestr;
}

var initdata = [{x:[], y:[], stream:{token:token, maxpoints: 500}}];
var initlayout = {fileopt : "extend", filename : "sensor-test"};

plotly.plot(initdata, initlayout, function (err, msg) {
    if (err) return console.log(err)

    console.log(msg);
    var stream = plotly.stream(token, function (err, res) {
        console.log(err, res);
    });

    sp.on('data', function(input) {
        if(isNaN(input) || input > 1023) return;

    var streamObject = JSON.stringify({ x : getDateString(), y : input });
    console.log(streamObject);
    stream.write(streamObject+'\n');
    });
});
-------------------------------
Salve com um nome de teste1.js e abra o prompt do LINUX na pasta que voce salvou, clicando com o direito do mouse e marcando a opção abrir num terminal :)

Depois no terminal e só dar o comando:
node teste1.js


O codigo ficou grande pessoal mas é isso mesmo. Agradecer aos criadores desse blog:
Que me ensinou bastante coisa  e ao vídeo também, que me insinou bastante coisa boa
E no mais é isso ahe pessoal, o tuto fico grande mas depois posto um vídeo meu demonstrando o bixo funcionando.
E como prometido, eis o vídeo

Nenhum comentário: