Excel com Arduino: Como Realizar o Envio de Dados
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.
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.
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 <Keyboard.h></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 <Keyboard.h> #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.
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.