Automação Residencial

Sensor DHT11 com Display OLED

Eletrogate 5 de agosto de 2022

Introdução

Nesse post, vamos aprender a mostrar, em um display OLED, temperatura e umidade, medidas pelo sensor DHT11. O display irá projetar, na tela, a temperatura e, quando o botão for pressionado, a umidade, como se passasse de página.


Materiais Necessários para o Projeto com Sensor DHT11 com Display OLED

cta_cart

Display Oled

eletrogate.com

O display OLED oferece uma ótima qualidade de imagem por conta do seu alto contraste.

Módulo Sensor de Umidade e Temperatura DHT11

eletrogate.com

O elemento sensor de temperatura é um termistor do tipo NTC e o sensor de Umidade é do tipo HR202. O circuito interno faz a leitura dos sensores e se comunica a um microcontrolador através de um sinal serial de uma via.


Circuito

O circuito será o seguinte:


Código

O código do projeto é:

#include <Adafruit_AM2320.h>  //inclui as bibliotecas
#include "U8glib.h"
#include <DHT.h>

U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);

#define pino_muda 6  //define o pino do botão
#define pino_DHT A0  //define o pino do sensor 
#define DHTTYPE DHT11  //define o tipo de sensor

DHT dht(pino_DHT, DHTTYPE);

int temperatura; //cria uma variavel para a temperatura
int umidade;     //cria uma variavel para a umidade
int guarda_estado = LOW; //variavel para guardar o estado do botao 
int estado = 0;

unsigned long previousMillis = 0;
//Intervalo de medicao temperatura
const long interval = 2000;

void draw()
{
  //Retangulo temperatura atual
  u8g.drawRFrame(0, 17, 127, 46, 2);
  u8g.setFont(u8g_font_fub20);
  //Atualiza a temperatura no display
  u8g.setPrintPos(40, 50);
  u8g.print(temperatura);
  //Circulo grau
  u8g.drawCircle(73, 33, 3);
  u8g.drawStr( 77, 50, "C");


  //Box superior amarelo
  u8g.setFont(u8g_font_8x13B);
  u8g.drawRBox(0, 0, 127, 16, 2);
  u8g.setColorIndex(0);
  u8g.drawStr( 21, 13, "TEMPERATURA");
  u8g.setColorIndex(1);
 
 
  if (guarda_estado == HIGH) //se o botao for pressionado
   {
  //retangulo umidade
  u8g.setFont(u8g_font_8x13B);
  u8g.drawRBox(0, 0, 127, 16, 2);
  u8g.setColorIndex(0);
  u8g.drawStr( 21, 13, "UMIDADE"); // escreve no topo 
  u8g.setColorIndex(1);     
  
  u8g.drawRFrame(0, 17, 127, 46, 2);
  u8g.setColorIndex(0);
  u8g.drawBox(0,17,127,46);
  u8g.setColorIndex(1);
  u8g.setFont(u8g_font_fub20);
  
  u8g.setPrintPos(40, 50);
  u8g.print(umidade); //escreve na tela a umidade em %
 
  u8g.drawStr( 77, 50, "%");
  }
  else //se o botao nao estiver pressionado , continua mostrando a temperatura
  {
    u8g.drawRFrame(0, 17, 127, 46, 2);
  u8g.setFont(u8g_font_fub20);
  //Atualiza a temperatura no display
  u8g.setPrintPos(40, 50);
  u8g.print(temperatura);
  //Circulo grau
  u8g.drawCircle(73, 33, 3);
  u8g.drawStr( 77, 50, "C");  

  //Box superior amarelo
  u8g.setFont(u8g_font_8x13B);
  u8g.drawRBox(0, 0, 127, 16, 2);
  u8g.setColorIndex(0);
  u8g.drawStr( 21, 13, "TEMPERATURA");
  u8g.setColorIndex(1);
  }
}

void setup() {
  Serial.begin(9600);
  pinMode(pino_muda , INPUT); //define o tipo de entrada do push button
  dht.begin();

 
}

void loop() {
   
  unsigned long currentMillis = millis();
  //Timer para ler o valor da temperatura e da umidade
  if (currentMillis - previousMillis >= interval)
  {
    temperatura = dht.readTemperature();
    umidade = dht.readHumidity();
    previousMillis = currentMillis;
  }

  estado = digitalRead(pino_muda);
 if (estado == HIGH) {
  guarda_estado = !guarda_estado;
  delay(500);
 }
 


  u8g.firstPage();
  // Chama a rotina de desenho na tela
  do
  {
    draw();
  }
 while ( u8g.nextPage() );
  delay(50);

}

Bibliotecas

Algumas bibliotecas serão necessárias:

U8glib

DHT sensor library

Adafruit_AM2320


Sobre o Autor


Arthur Almeida

Estudante do Ensino médio , aficionado por criar novos projetos eletrônicos e automações, principalmente com o Arduino. No meu tempo livre eu gosto de pesquisar sobre novas tecnologias e tento criar projetos com elas.


Eletrogate

5 de agosto de 2022

A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.

Conheça a Metodologia Eletrogate e Lecione um Curso de Robótica nas Escolas da sua Região!

Eletrogate Robô

Cadastre-se e fique por
dentro de novidades!