Font Size

Olá, tudo bem? Hoje vamos conhecer uma função da IDE do Arduino muito interessante. Estou falando sobre o monitor serial gráfico do Arduino.  Bastante utilizado para representar os dados enviados para a serial do Arduino de uma forma gráfica. Então, você quer saber como utilizar essa função? Continue aqui comigo!

Por que utilizar o Monitor Serial Gráfico do Arduino?

A resposta dessa pergunta pode ser o fato que de existem programas os quais precisam necessariamente de uma interface, seja ela gráfica ou não, para poder saber o que está acontecendo naquele exato momento.

Em outras palavras, seria o resultado do monitoramento de um sensor. Contudo, nem sempre é possível adicionar um display ao projeto.

Isso porque o display dá um trabalho adicional de ser implementado no código e no circuito além de representar um custo a mais. Por esse motivo, a utilização do monitor serial se torna mais viável nos casos mais simples de análise de variação de algum sensor.

Então, no projeto de hoje onde vamos representar a leitura do sensor de umidade, o monitor serial gráfico será importante, ele mostrará de uma forma mais clara e direta, visualmente falando, os dados lidos pelo sensor e, isso pode nos auxiliar na correção de bugs.

Funcionamento do Projeto

O funcionamento desse projeto será bastante simples, pois iremos trabalhar apenas com o sensor de umidade e temperatura DHT11 (ainda não tem o seu sensor? Relaxa, clicando nesse link você vai poder adquirir o seu, aproveite!) e o monitor serial gráfico.

Na verdade, os componentes e o circuito já foram apresentados no blog, basta entrar no post sobre o sensor de umidade e temperatura DHT11:

Mas resumindo, a ideia de hoje vai ser de pegar os valores lidos pelo sensor e transformar isso em algo gráfico. No caso seria a plotagem de um gráfico que varia no tempo, mostrando a oscilação da leitura feita pelo sensor.

Componentes Utilizados

Montagem do Circuito

A seguir está a ligação do nosso projeto de hoje. Primeiramente, é importante que você desligue o cabo USB do seu Arduino e realize as ligações com ele desligado, combinado? Depois é só ligar novamente!

monitor-serial-grafico-do-Arduino
Esquema de Ligação do DHT11 no Arduino

Fonte: AutoCore Robótica

Código do Projeto Comentado

Para o código que vamos utilizar hoje, é necessário que você tenha instalado em seu computador a biblioteca do sensor DHT11. Isso porque facilita na hora de criar o código pois ele já vem com algumas funções bem fáceis de utilizar. Então basta clicar na imagem abaixo e descompactar o arquivo, renomeando para “DHT” e copiando a pasta para as “libraries” do seu Arduino.

Depois de realizar a instalação da biblioteca, basta abrir a sua IDE do Arduino e copiar o seguinte código:

/*
    Projeto: Utilização do Monitor Serial Gráfico
    Autor: Danilo Nogueira - AutoCore Robótica
    Data: 23/09/2018
    Domínio Público.
*/

#include <idDHT11.h>

int idDHT11pino = 2;        //Porta Digital do Arduino onde o pino do sinal do sensor DHT esta conectado
int idDHT11intNumber = 0;   //Número da interrupção respectiva à porta definida

void dht11_wrapper();     // Declaração da funcão de controle da interrupção. 
void loopDHT();           // Atualiza a leitura do sensor

idDHT11 DHT11(idDHT11pin, idDHT11intNumber, dht11_wrapper);   //Instanciação do Objeto de Controle do Sensor

void setup()
{
  // Iniciando a serial com velocidade de 9600
  Serial.begin(9600);
  Serial.println("Inicio do Programa");
}

//Variaveis utilizadas para calcular as temperaturas do Sensor DHT11
float temperaturaC;
float umidade;

void loop()
{
  loopDHT(); // Função que atualiza o sensor

  // Aqui estamos mostrando na serial as temperaturas calculadas
  Serial.print("Temperatura Celcius: ");
  Serial.println( temperaturaC );
  delay(100);
  
  Serial.print("Umidade Relativa: ");
  Serial.println( umidade );
  delay(100);

  Serial.println();
}

void dht11_wrapper() {
  DHT11.isrCallback();
}

void loopDHT(){  // Função que vai calcular as temperaturas
#define tempoLeitura 1000
static unsigned long delayLeitura = millis() + tempoLeitura + 1;
static bool request = false;

  if ((millis() - delayLeitura) > tempoLeitura) { 
      if (!request) {
         DHT11.acquire(); 
         request = true;
      }
  }

  if (request && !DHT11.acquiring()) {
    request = false;

    int result = DHT11.getStatus();


    // Caso ocorra algum erro ele será escrito na serial
    switch (result)
    {
    case IDDHTLIB_OK: 
        Serial.println("Leitura OK"); 
        break;
    case IDDHTLIB_ERROR_CHECKSUM: 
        Serial.println("Erro\n\r\tErro Checksum"); 
        break;
    case IDDHTLIB_ERROR_ISR_TIMEOUT: 
        Serial.println("Erro\n\r\tISR Time out"); 
        break;
    case IDDHTLIB_ERROR_RESPONSE_TIMEOUT: 
        Serial.println("Erro\n\r\tResponse time out"); 
        break;
    case IDDHTLIB_ERROR_DATA_TIMEOUT: 
        Serial.println("Erro\n\r\tData time out erro"); 
        break;
    case IDDHTLIB_ERROR_ACQUIRING: 
        Serial.println("Erro\n\r\tAcquiring"); 
        break;
    case IDDHTLIB_ERROR_DELTA: 
        Serial.println("Erro\n\r\tDelta time to small"); 
        break;
    case IDDHTLIB_ERROR_NOTSTARTED: 
        Serial.println("Erro\n\r\tNao iniciado"); 
        break;
    default: 
        Serial.println("Erro Desconhecido"); 
        break;
    }
    
    // Aqui vamos armazenar o valor das temperaturas na variáveis para mostrar o loop
    float valor = DHT11.getCelsius();
     
    if (!isnan(valor)) {             
      temperaturaC = valor;
    }

    valor = DHT11.getHumidity();
    if (!isnan(valor)) {      
      umidade = valor;
    }

    delayLeitura = millis();     
  }
}

Ativando o Monitor Serial Gráfico do Arduino

Agora que vem a mágica! Após realizar o upload do código, verifica se os dados do sensor estão sendo mostrados no monitor serial e caso esteja, basta entrar em “Ferramentas -> Plotter Serial”, ou apenas clicando ao mesmo tempo as teclas “Ctrl + Shift + L”. Como mostra a imagem a seguir:

monitor-serial-grafico-do-Arduino
Monitor Serial Gráfico

Fonte: AutoCore Robótica

Resultado do Projeto

Por fim, deixo para você um vídeo do nosso canal no Youtube, onde mostro o resultado do projeto em funcionamento. Caso tenha ficado alguma dúvida não hesite em mandar mensagem combinado?

Mas e ai? Gostou? Caso tenha ficado algo incompleto para você, comenta abaixo 📝

Dicas? 😯 Dúvidas? 🤔 Idéias de post?💭 Críticas? 😱 Só comentar também! 😉

Forte abraço!

5.00 avg. rating (96% score) - 2 votes