quarta-feira, 31 de julho de 2013

Fazendo gráficos com os dados do Arduino

É comum ver pessoas querendo fazer gráficos com as informações obtidas pelo Arduino. Quando fizemos o pHmetro, algumas pessoas gostaram do gráfico do pH que era mostrado no computador durante a experiência. Vejo muitos artigos explicando como fazer isso através do Processing e do Python, mas todos eles tem suas especificidades e exigem algumas modificações que nem sempre são simples.
Seus problemas acabaram! Com o super programa...
Para facilitar a vida de todos, criamos um programa/script em Python que, de forma simples, permite qualquer pessoa fazer gráficos sem precisar saber programar nada. A única coisa que você precisa é ter instalado o Python (>2.6), a biblioteca Matplotlib e fazer o download do nosso programa CLICANDO AQUI.

Como usar o programa:
Para quem usa Linux é simples, basta abrir um terminal e dar o comando "python grafico.py". O programa vai perguntar em qual porta o Arduino está conectado, tipicamente é a porta 0 (zero). Depois de informar a porta o programa fica esperando os dados chegarem do Arduino. O programa pode mostrar o gráfico deixo o eixo X "fixo" ou movendo o eixo X junto com os dados. No modo "fixo" o eixo X começa em X=0 e vai aumentando o X final conforme os dados vão chegando. No outro modo ele modifica o X inicial e final de forma que a diferença (DX) seja constante. Para alternar entre os modos, você precisa abrir o programa em um editor de texto e modificar a primeira linha do programa. Se você usar DX=0 o programa roda em modo fixo e se DX for diferente de 0 ele vai ajustar o X inicial e final conforme os dados forem sendo recebidos.  O programa aceita até 6 gráficos simultâneos.

Como enviar os dados do Arduino para o programa:
A comunicação entre o programa e o Arduino é feita por comunicação serial. Você deve usar o comando Serial.print() e Serial.println() para enviar seus dados do Arduino. Os dados devem estar formatados da seguinte forma:gráfico; valor em x; valor em y , onde "gráfico" é o número do gráfico que você enviar os dados (o programa aceita fazer até 6 gráficos simultaneamente). Note que os dados são separados por ponto e vírgula. Abaixo temos um código que envia os valores das portas analógicas 0 e 1 como o dado em Y e o tempo como o dado em X.
void setup(){
  Serial.begin(9600);
}
void loop(){
  Serial.print('1');
  Serial.print(";");
  Serial.print(millis());
  Serial.print(";");
  Serial.print(analogRead(0));
  Serial.println("");
  delay(50);
  Serial.print('2');
  Serial.print(";");
  Serial.print(millis());
  Serial.print(";");
  Serial.print(analogRead(1));
  Serial.println("");
  delay(50);
}
 Usando o Ardublock:

quarta-feira, 24 de julho de 2013

ICExduino contribuindo na comunidade Open Source

O Daniel Girardi está ajudando a desenvolver o projeto Ardublock. Este projeto consiste da criação de uma interface de programação (IDE) para o Arduino, voltada para não programadores (crianças e adultos). A IDE usa uma estrutura de blocos, onde você simplesmente arrasta blocos de instruções que vão se conectando para formar o código do Arduino. Abaixo há dois exemplos clássicos, o primeiro é o código para piscar um LED e o segundo é um código para controlar o brilho do LED através do potenciômetro.
Pisca o Led a cada 1 segundo.

Controla a intensidade do brilho do LED através de um potenciômetro.
Veja como a programação é muito mais simples e intuitiva. O projeto está sob a licença GNU-GPL que permite que qualquer pessoa pode copiar, distribuir e modificar livremente. O código fonte do projeto pode ser baixado em https://github.com/danielfsc/ardublock e o código fonte original pode ser baixado em https://github.com/taweili/ardublock .

Para quem quiser apenas utilizar o Ardublock, pode baixar o programa AQUI - ardublock-all.jar. O processo de instalação é o mesmo para qualquer sistema operacional:
  1. Abra o Arduino e vá em File > Preferences;
  2. Na janela que abrir, localize a informação "Sketchbook location:";
  3. Abra o navegador de arquivos e dentro da pasta que está indicada em "Sketchbook location:" crie as seguintes pastas: tools>ArduBlockTool>tool;
  4. Dentro da pasta "tool" (a última pasta da árvore) salve o arquivo ardublock-all.jar;
  5. Agora é só fechar e abrir novamente o arduino. Para acessar o Ardublock, há um link na aba Tools.
Onde fica o atalho para abrir o Ardublock.
 O Ardublock é completamente integrado a interface do Arduino. Ao clicar em "Enviar" ele converte a estrutura de blocos para a linguagem Wire (a linguagem de programação do Arduino), coloca o código no programa do Arduino e faz o Upload para a placa Arduino. A única coisa que o Ardublock faz é traduzir a estrutura de blocos para Wire, portanto, as configurações de "Board" e "Serial Port" precisam ser feitas no próprio Arduino.

A vantagem do Ardublock frente as outras IDEs no formato de bloco, é que ela é de código aberto e gratuita. Além disso, ela permite que você veja o código em Wire, nenhum outro software permite isso. Para finalizar, deixo mais um código feito no Ardublock, esse é para o brilho do LED ir aumentando gradativamente.
Um programa para aumentar o brilho do LED gradativamente.