Arduino + Banco de dados MySQL

Introdução

 

O Arduino é bastante interessante para projetos onde é necessário monitorar temperaturas, som, luminosidade, vazão de um liquido e as mais diversas variáveis do nosso dia a dia.

Na maioria dos projetos nós utilizamos um display para monitorar as variáveis, e alguns projetos de controle a grandeza de interesse não é monitorada. Isso gera problemas ao longo prazo, pois, em casos de erros no projeto, ou possíveis problemas, é desejável saber em qual condição ocorreu o defeito.

Vamos pensar no caso de um sistema de armazenamento de medicamentos como a insulina, onde a temperatura sempre deve estar entre 2°C a 8°C no máximo. Seria muito interessante poder salvar todas as medidas para que seja fácil avaliar se o medicamento está em boas condições.

Existem diversas soluções comerciais para o armazenamento de dados em longo prazo, e essa é a função de um Datalogger. A principal desvantagem de um datalogger comum é o acesso aos dados.

O acesso aos dados em um datalogger sem conexão sem fio se dá por uma interface física, o que dificulta uma visualização em tempo real. Com o uso de um banco de dados em nuvem, temos a vantagem de reter dados como um Datalogger e a visualização em tempo real.

 

Banco de Dados

 

Se caso você não sabe o que é um banco de dados, não se preocupe, aqui vou te explicar um pouco sobre esse conceito de forma simples.

Um banco de dados é um conjunto de dados relacionados entre si que são organizados de forma extremamente otimizada para que seja rápido a busca, e de forma compacta.

De forma muito simplista, podemos comparar o armazenamento de um banco de dados a várias tabelas de um Excel, onde no Excel o que chamamos de planilha, no banco de dados chamamos de tabelas (um banco de dados pode ser composto por várias tabelas) . O que chamamos no excel de colunas, no banco de dados chamamos de campo. E o que no Excel chamamos de linha, no banco de dados chamamos de registro.

Diferente do Excel, a principal vantagem de um banco de dados está no sistema que gerencia esses dados, que utiliza uma linguagem de consulta própria, onde através dela possamos incluir dados, consultar os dados e gerenciar todo o banco de dados. Recomendo fortemente que pesquise sobre o assunto caso tenha interesse.

 

Servidor de Banco de Dados

 

Existem vários tipos de bancos de dados, no qual a linguagem de consulta pode mudar, e que o banco de dados em si podem estar armazenados em vários locais diferentes: ou uma máquina local, ou em uma rede local, ou até mesmo em uma máquina na internet que está a vários quilômetros de distância. Essa última opção que é a mais interessante para a gente.

Existem várias empresas que fornecem esse serviço de cloud de banco de dados, e para esse post escolhemos a Clever Cloud, que possui diversas ferramentas interessantes para desenvolvedores e analista de dados, e que é grátis para até 10mb de uso.

Existem outros projetos na internet que utilizam o db4free.net, que é bom, mas em minha experiência achei uma ferramenta bastante instável, mas tem a vantagem de poder ser utilizado até 200mb.

A linguagem de consulta de dados que vamos escolher é a MySQL, por ser simples, possuir uma comunidade grande e uma boa biblioteca para Arduino.

 

Projeto a ser desenvolvido

 

Tendo em vista todos estes conceitos aprendidos, iremos desenvolver um sistema que através do Arduino Uno faça a leitura de vários sensores de temperatura, e envie esse dado para um ESP-01, para que ele envie a medida para o banco de dados online, e posteriormente possamos analisar.

Este projeto pode ser bastante útil para diversos tipos de aplicação onde seja necessário registrar dados em nuvens e apresentar ele através da Web.

 

Materiais

 

Para este projeto escolhemos um Arduino Uno + o ESP-01 porque sabemos que grande parte de vocês possui um Arduino Uno, e dessa forma poderemos fazer o projeto com os materiais que vocês já possuem.

É possível facilmente adaptar o projeto para uma placa NodeMCU, e fica a critério de vocês escolherem o melhor caminho.

 

Desenvolvimento

Criando o banco de dados

O primeiro passo para o desenvolvimento do projeto é criar uma conta na Clever Cloud (clique aqui)e vá em Sign Up Free.

 

Coloque o seu e-mail pessoal que exista, e crie sua conta.

Vá no seu e-mail e ative a sua conta clicando no link onde está o campo em vermelho.

Preencha seus dados para finalizar.

E assim sua conta estará criada.

No canto esquerdo, clique em “Personal space” e vá em clique em “Create… an add-on”

 

E selecione a opção MySQL.

Escolha o plano DEV, que é grátis para até 10MB.

Depois de tudo criado, você terá as credenciais para o seu banco de dados. As do meu banco de dado são estas, as suas são diferentes.

Não passe essas credenciais a ninguém.

 

Para conferir sua senha, basta clicar na parte destacada abaixo.

E assim o seu banco de dados já estará criado e pronto para ser usado, mas ainda é necessário criar uma tabela para inserirmos os dados.

Vá em Datalogger(nome do projeto)>Addon dashboard>PHPMyAdmin.

Vá em “Databases”.

Clique na primeira planilha (a sua deve possuir um nome diferente).

Coloque o nome “Temperatura” (Se atente a primeira letra ser maiúscula), e selecione 3 colunas. Após isso clique em GO.

Nomeie exatamente como na imagem abaixo, e coloque os mesmos tipos de variáveis. E no “DATA_HORA”, é muito importante colocar ela do tipo CURRENT_TIMESTAMP. Clique em save depois de concluido.

Assim a sua tabela e o seu banco de dados foram criados com sucesso.

O código para o ESP-01

Para este projeto, precisamos ter em mente que utilizaremos o módulo ESP-01 em Standalone, isso é, gravaremos nele nosso próprio firmware personalizado que será disponibilizado aqui nesse post.

Como sabemos, gravar as placas ESP precisa de alguns macetes, que podem ser vistos nesse post (clique aqui). 

Aqui nesse post ensinaremos também a gravar o firmware utilizando o próprio Arduino Uno (Se caso você possuir um adaptador USB, você pode pular essa parte).

Para gravar o seu programa no ESP-01 utilizando o Arduino Uno se caso você não possuir um adaptador USB,  ou um conversor USB/Serial, primeiramente abra a Arduino IDE (Se não possuir ou não sabe o que é, recomendo ler este post)  e carregue um código em branco para a sua placa.

 

Depois faça a seguinte montagem com o Arduino e o ESP-01:

O ESP-01 é alimentado em 3.3V

 

Obs: O RX está com o RX, e o TX com o TX, e o pino GPIO_0 está ligado diretamente ao GND.

Com essa ligação feita, abra a Arduino IDE já configurada para enviar programas para ESP-8266. Se caso você não realizou essa configuração, clique aqui e aprenda como configurar.

Você irá precisar instalar a seguinte biblioteca (Vá em ferramentas > Gerenciador de bibliotecas):

Depois de instalada, preencha o código abaixo com as informações das credenciais da Clever Cloud que está disponível no ultimo passo que vimos do tópico anterior, insira também as informações do seu Wi-Fi.

Coloquei um > < nas informação que você deve alterar.

Envie o seguinte código:

E aguarde a mensagem “Hard resetting via RTS pin” aparecer, que é o sinal de que sua placa já foi gravada.

O código para o Arduino

Agora faça a seguinte montagem com sua placa Arduino e sensores DS18B20.

Observe bem que foi mudado a posição dos jumpers RX e TX, em relação ao diagrama anterior.

Se você quiser utilizar mais sensores de temperatura, você pode utilizar quantos quiser nesse projeto.

Instale estas bibliotecas em sua Arduino IDE:

E carregue o seguinte código para o Arduino.

Com o código carregado, tudo já está funcionando se os dados foram colocados corretamente.

Note que por este código só estamos utilizando um sensor, mas para utilizar outros é bem simples, basta no loop setup você definir o pino de conexão desse sensor e o ID dele. Exemplo:

Inicie a conexão serial para verificar se está funcionando corretamente. Se caso tiver, você vera mensagens como esta:

Um possível erro

 

Um possível erro pode estar no endereço do host. No nosso código para ESP-01 o endereço do host foi colocado direto como

IPAddress server_addr(54, 39, 75, 7); // O IP DO SERVIDOR DA CLEVER CLOUD

Se caso não estiver funcionando, pode ser que o seu servidor seja outro. Para descobrir o IP do seu HOST, copie o endereço http dele, e vá no Prompt de comandos

Digite: ping (endereço do host)

E assim você receberá o endereço do seu servidor de banco de dados.

 

Manipulando os dados para gerar um gráfico

 

Uma das vantagens do Clever Cloud é que ele permite manipular os dados em uma interface gráfica. 

Para fazer o download de todo a tabela de dados das temperaturas registradas é bem simples. Entre na planilha em “PHPMyAdmin > Databases > (nome do banco de dados) > Temperatura”

Clique em export, .

Escolha o melhor formato para que você possa manipular esses dados (eu escolhi CSV do Excel)

Em seguida clique em Go.

Abra o arquivo no Excel, pressione Ctrl + L (ou Ctrl + F se for a versão em inglês), e substitua todo o ponto por vírgula, se caso seus números forem com a notação de decimais com vírgula.

Inverta de lugar as colunas DATA_HORA e Temperatura.

Gere um gráfico de dispersão linear selecionando todos os pontos.

E o resultado será este:

Onde esta é a medição da temperatura no meu quarto no fim de semana.

Usando o próprio Clever Cloud para gerar o gráfico.

É possível usar o próprio Clever Cloud para gerar o gráfico, clicando em “Display Chart”

 

E você deverá selecionar o número máximo de colunas. Não achei muito viável porque demora bastante para gerar os gráficos.

 

Algumas decisões de projeto e informações

 

  • O ESP-01 não foi usado para receber comandos AT porque nessa configuração ele deu problemas com o banco de dados, que sempre retornava erros na conexão (motivo desconhecido)
  • Poderia ligar diretamente o ESP-01 a porta serial nativa do Arduino Uno, mas isso não pareceu uma boa escolha por causa do excesso de informação no Monitor Serial.
  • o Arduino envia uma informação ao ESP-01 e aguardo 8 segundos para enviar outra, para garantir que não haverá colisões de dados, já que com o uso do Software Serial fica muito dificil fazer uma lógica para o envio de informações bem rápidas e sem colisão. Por sorte o tempo de espera não é um fator crítico para essa aplicação.
  • Para aprender mais sobre as bibliotecas usadas, recomendo sempre consultar a guia “Arquivo > Exemplos”, ou visitar o github dos autores.
  • O horário do timestamp é gravado no horário UTC 0, por isso, se caso precisar do horário UTC -3, faça um script ou fórmula do excel para manipular essa informação da maneira que desejar.

 

Conclusões

 

Então assim aprendemos como criar um sistema de Datalogger sem a necessidade de uma mídia fisica ou local para gravar os dados.

Se caso você dominar tecnologias como PHP e outras, é bem interessante apresentar os dados em tempo real para serem visíveis.

É altamente recomendado que se você altere o código e deixe do melhor jeito para a sua aplicação, pois ele é livre.

Espero que você tenha tido um bom aprendizado. Se você montou e curtiu muito o resultado, nos marque lá no instagram: @eletrogate

 


 

Gostou? Deixe um curtir. Se caso quiser deixar uma dúvida, ou um elogio, deixe um comentário!

Obrigado por ter lido até aqui.

Avaliação: 5.0/5. De 3 votos.
Espere por favor...
Gustavo Nery
Gustavo Nery
Cursando Engenharia de Controle e Automação pela UFMG. Apaixonado por eletrônica, computação e tecnologias na área de sistemas embarcados. Nos tempos livres me divido entre desenvolver pesquisa na universidade, adquirir novos conhecimentos e estar com a família.
Acesse nossa loja