Font Size

Em diversos sistemas de análise preditiva e monitoramento de funcionamento de equipamentos, necessitamos coletar dados e, posteriormente, transferir e analisá-los no Excel com Arduino. Existem, portanto, diversos meios para realizar esse procedimento.

Porém, neste artigo, apresentaremos uma forma eficiente e de fácil compreensão sem utilizar as macros de programação do ambiente do Excel.

Com ele, você será capaz de:

  • Aprender a realizar coleta de dados de sensores e conversor analógico-digital com Arduino;
  • Utilizar o Arduino como um teclado de computador;
  • Enviar os dados para o Excel.

Para isto, utilizaremos o Arduino Pro Micro com a função de teclado, para enviar os dados diretamente para o Excel.

A seguir, apresentaremos o projeto completo e discutiremos a lógica de controle desenvolvida.

Desenvolvimento do Sistema de Aquisição de Dados de Excel com Arduino

Para realizar o desenvolvimento do sistema de aquisição de dados no Excel com Arduino, necessitamos utilizar um Arduino com CHIP ATMEGA32U4, conforme apresentado no projeto da Figura 1.

O fato de utilizarmos este CHIP está relacionado com a sua capacidade de suporte ao periféricos USB.

Excel-com-Arduino
Figura 1 – Circuito do Projeto Excel com Arduino

Logo, por meio desse periférico, podemos simular um teclado e enviarmos os comandos referentes a cada tecla. A seguir, disponibilizaremos a lista completa, para que você monte seu sistema de aquisição e transferência de dados para o Excel.

Lista de Componentes Eletrônicos

Por meio dessa lista, poderemos montar o nosso projeto.

Para isto, foi desenvolvido o circuito apresentado na Figura 2. O circuito foi construído com o objetivo de enviar o dado digital lido do potenciômetro para o Excel, quando o botão estiver pressionado.

Excel-com-Arduino
Figura 2 – Esquemático Eletrônico do Circuito.

Além disso, o botão possui uma outra função: Ele será utilizado, também, para desabilitar o envio de dados do Arduino para o Excel. Esta funcionalidade é importante, pois caso ela não exista será extremamente complicado realizar a gravação de um novo programa no Arduino.

A seguir, apresentaremos a estrutura da lógica de programação desenvolvida.

Lógica de Programação para Aquisição e Transferência de Dados

Conforme citado anteriormente, necessitamos utilizar o Arduino Pro Mini como um teclado. Logo após, precisamos utilizar a biblioteca Keyboard para emular o funcionamento de um teclado.

<code>#include &lt;Keyboard.h&gt;</code>

Em seguida, realizamos a definição de nomes dos pinos, declaração de protótipos e variáveis do programa, que serão utilizadas para armazenar os dados lidos do botão e do conversor analógico-digital(ADC).

<code>//Declaração das funcoes
void EnvioParado();
void EnterKey();

bool Botao = 0;
int adc = 0;</code>

Logo após, realizamos a declaração da função setup. Nela, realizaremos a configuração dos pinos de entrada e saída e, por fim, inicializaremos a emulação do teclado no Arduino Pro Micro.

<code>#include &lt;Keyboard.h&gt;
#define EnviaDados 10
                                                    
//Declaração das funcoes
void EnvioParado();
void EnterKey();

bool Botao = 0;
int adc = 0;

//Inicio da funcao SETUP
void setup() 
{
  //Configuracao do pino de pausa
  pinMode(EnviaDados, INPUT_PULLUP);
  pinMode(A0, INPUT);
  
  //Inicializa a Emulacao do Teclado no Arduino Pro Micro
  Keyboard.begin();
}

void loop()
{
      if(digitalRead(EnviaDados)) 
      {
        EnvioParado();
        return;
      }

      adc =  analogRead(A0);  
      Keyboard.print(adc);
  
      EnterKey();
      delay(1000);
}

void EnvioParado() 
{
  //Pisca o LED enquanto o programa esta parado
  pinMode(17, OUTPUT);
  digitalWrite(17, HIGH);
  delay(300);                  
  digitalWrite(17, LOW);    
  delay(300);                
}

//Tecla Enter
void EnterKey() 
{
  Keyboard.press(KEY_RETURN);   //Pressiona a Tecla Enter
  delay(100);                   //Aguarda 100 milissegundos
  Keyboard.release(KEY_RETURN); //Solta a Tecla Enter
}</code>

Por fim, temos a função principal loop. Inicialmente, temos a seguinte condição, que é apresentada a seguir.

<code>if(digitalRead(EnviaDados)) 
{
  EnvioParado();
  return;
}</code>

Essa condição realiza a leitura do botão EnviaDados. Caso o botão não esteja pressionado, o sistema executa a função EnvioParado. Dessa forma, a função irá piscar o LED conectado no pino 17.

Em seguida, executa a função return. Desse modo, o sistema não permitirá que o Arduino envie dados para o Excel.

Portanto, conforme citado, o usuário poderá gravar um novo código quando o botão não estiver pressionado.

Posteriormente, caso o usuário pressione o botão, o sistema realizará a leitura do ADC e imprimirá o valor na célula do excel. A porção de código é apresentada a seguir.

<code>adc =  analogRead(A0);  
Keyboard.print(adc);
  
EnterKey();
delay(1000);</code>

A cada leitura e escrita do valor do ADC, por meio da função keyboard.print, será enviado um comando de tecla enter, a fim de enviar o cursor para a linha abaixo.

Estrutura da Função de Tecla Enter

A estrutura da função EnterKey é apresentada a seguir.

<code>//Tecla Enter
void EnterKey() 
{
  Keyboard.press(KEY_RETURN);   //Pressiona a Tecla Enter
  delay(100);                   //Aguarda 100 milissegundos
  Keyboard.release(KEY_RETURN); //Solta a Tecla Enter
}</code>

Desse modo, cada vez que a função é executada, é enviado um comando de pressionar a tecla Enter (KEY_RETURN) por 100 milissegundos e liberação da tecla enter logo em seguida.

Logo após , o sistema pressionará a tecla Enter e passará para uma nova célula abaixo e os dados serão plotados no gráfico. Isto pode ser visto no vídeo apresentado abaixo.

https://youtu.be/FzCxusFfNU0
Vídeo 1 – Impressão dos Valores no Excel.

Abaixo da função loop, declaramos todas as funções utilizadas no código, conforme apresentadas a seguir.

<code>void EnvioParado() 
{
  //Pisca o LED enquanto o programa esta parado
  pinMode(17, OUTPUT);
  digitalWrite(17, HIGH);
  delay(300);                  
  digitalWrite(17, LOW);    
  delay(300);                
}

//Tecla Enter
void EnterKey() 
{
  Keyboard.press(KEY_RETURN);   //Pressiona a Tecla Enter
  delay(100);                   //Aguarda 100 milissegundos
  Keyboard.release(KEY_RETURN); //Solta a Tecla Enter
}</code>

Por fim, após a execução completa da função loop, o sistema retornará para o início da função e repetirá o ciclo de execução da lógica desenvolvida.

Conclusão

Em primeiro lugar, foi possível desenvolver um sistema de transferência de dados para o Excel. Portanto, utilizou-se apenas o Arduino PRO Micro em sua função de Teclado.

Dessa forma, o sistema comportou-se como um usuário que digita os valores e tecla Enter para escrevê-los em uma nova linha.

Logo, além de utilizá-lo com Excel, podemos escrever os valores em qualquer local. Assim, o sistema apenas imprime os valores digitados pelo Arduino PRO Micro.

Portanto, você poderá enviar qualquer tipo de dado e desenvolver diversos outros projetos. Para mais sugestões de projetos, acesse os artigos em nosso Blog Autocore Robótica.

0.00 avg. rating (0% score) - 0 votes