Arduino e Banco de Dados – Comunicação Serial

Neste artigo vamos mostrar como enviar dados coletados de sensores e armazená-los em um banco de dados usando como meio de comunicação a saída serial (porta USB) do Arduino


Nosso projeto de exemplo, vai funcionar da seguinte maneira:

  • A cada 30 segundos o Arduino vai ler os dados do sensor e enviá-los pela saída serial que estará conectada a um computador (porta USB);
  • No computador um script Python vai ficar monitorando a porta serial e, assim que os dados forem detectados, irá gravá-los no banco de dados através de uma conexão TCP/IP aberta para essa finalidade.

Supõe-se que o leitor tenha conhecimentos básicos sobre a teoria de Bancos de Dados Relacionais e MySQL.
No final do artigo relaciono alguns links úteis nesse sentido.

Passo 1: Protótipo Arduino

Para nosso teste vamos usar o sensor de temperatura e umidade DHT11 que nos fornecerá dados de temperatura e umidade

Montagem:

Arduino e Banco de Dados – Comunicação Serial

O sketch ficou da seguinte forma:

Obs:

  1. Repare que os dados dos sensores, delimitados por “Pipes” foram encapsulados em uma String para serem enviados à saída serial;
  2. Como trata-se de um exemplo, para simplificar usamos o comando “delay” na criação de um intervalo de 30 segundos entre as leituras.

Passo 2: Criação do Banco de Dados

Para criar o banco e a tabela, utilizei a ferramenta phpMyAdmin que vem com o uWamp – pacote de instalação do Apache + PHP + MySQL

Crie o banco de dados “exemplo” no MySQL e a tabela “sinais” que receberá os dados do sensor e possuirá a seguinte estrutura:

Obs:

  1. O campo “sin_id” (chave primária) será incrementado automaticamente a cada inserção;
  2. A mesma coisa acontecerá o campo “sin_data” que guardará a data e hora em que o sinal foi enviado
  3. Os campos ‘sin_temp’ e ‘sin_umid’ vão armazenar os dados de temperatura e umidade enviados pelo Arduino através do script em Python

Passo 3: Script Python

O script Python será instalado no computador e sua função será monitorar a porta serial e, a cada valor detectado, gravar no banco de dados na tabela “sinais” criada no passo anterior.

Para isso, você precisará instalar as seguintes bibliotecas:

Vejamos:

Obs:

  1. Estou usando a porta 5. Substitua pela porta que você está usando.
  2. O metodo “split” é responsável por separar a String com os sinais e armazená-los separadamente em um array

Juntando Tudo

Depois de criar o banco e upar o sketch para o Arduino, realize a seguinte sequência de passos para ver tudo funcionando:

  • Startar o BD através da ferramenta uWamp;
  • Conectar o USB do Arduino ao Computador;
  • Startar o script Python

Pronto! Para ver o resultado abra o phpMyAdmin e execute o seguinte comando SQL:

SELECT * FROM SINAIS

E então você verá os dados chegando a cada 30 segundos.
Até a próxima!

Referências

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *