Projeto IoT com ESP32-C3 Mini OLED e DHT11: Temperatura e Umidade

Já pensou em monitorar temperatura e umidade pelo Wi-Fi utilizando uma placa compacta? Neste projeto IoT com ESP32-C3 Mini OLED e DHT11, vamos criar um sistema capaz de medir as condições do ambiente e disponibilizar as informações tanto no display OLED integrado quanto em uma página web.

Você vai aprender a conectar o sensor DHT11 ao ESP32-C3, configurar a conexão Wi-Fi e acessar os dados pelo navegador.

Componentes Utilizados

Para montar este projeto, você vai precisar de:

Como funciona o projeto

O projeto utiliza o ESP32-C3 Mini OLED como unidade principal. Ele recebe as informações coletadas pelo sensor DHT11 e apresenta os dados de duas formas.

A primeira é diretamente no display OLED de 0,42″, que já vem integrado à placa.

A segunda é por meio do Wi-Fi. Depois de conectado à sua rede, o ESP32-C3 cria um servidor web que permite acessar uma página com os valores de temperatura e umidade pelo navegador.

Assim, você consegue transformar uma leitura simples de sensor em um pequeno sistema IoT para monitoramento remoto.

Conhecendo o ESP32-C3 Mini OLED

O ESP32-C3 Mini OLED é uma placa compacta que já possui um display OLED integrado, facilitando a criação de projetos que precisam apresentar informações sem a necessidade de adicionar um display externo.

O ESP usa a interface I2C para comunicação com o display.

Conhecendo o Sensor DHT11

Para realizar a coleta das informações do ambiente, vamos utilizar o módulo DHT11.

O sensor é capaz de realizar a leitura de:

  • Temperatura
  • Umidade relativa do ar

O módulo pode ser alimentado com 3,3 V ou 5 V, facilitando sua utilização em diferentes projetos.

Ligações do projeto

Para realizar as conexões, vamos utilizar a mini protoboard como ponto de montagem entre o ESP32-C3 e o sensor.

ESP32-C3 Mini OLED

Neste projeto, utilizaremos:

  • SDA → GPIO 5
  • SCL → GPIO 6
  • DHT11 → GPIO 4

A alimentação e o GND devem ser conectados de acordo com a pinagem da sua placa e do módulo utilizado.

Esquemático

Com todas as conexões realizadas, o circuito ficará conforme o esquemático abaixo.

Antes de ligar o sistema, confira todas as conexões para evitar inversões ou curtos entre os pinos.

Configurando a IDE do Arduino

Com o circuito montado, conecte o ESP32-C3 ao computador e abra a Arduino IDE.

Antes de enviar o programa, selecione:

  • A placa correspondente ao seu ESP32-C3 Mini OLED;
  • A porta COM em que a placa está conectada.

Também será necessário instalar as bibliotecas utilizadas no código.

Bibliotecas utilizadas

O projeto utiliza:

  • U8g2lib
  • DHT
  • WiFi
  • WebServer
  • Wire

Podem ser baixadas direto na IDE do Arduino.

Com as bibliotecas e configurações prontas, você já pode enviar o código para o ESP32-C3.

Configurando a Rede Wi-Fi

Antes de enviar o código, você precisa alterar as informações da sua rede Wi-Fi.

Localize estas linhas:

const char* ssid = "Nome da Rede";
const char* password = "Senha wifi";

Substitua:

  • Nome da Rede pelo nome da sua rede Wi-Fi;
  • Senha wifi pela senha utilizada para acessar a rede.

Depois disso, salve o código e faça o upload para o ESP32-C3.

Código do Projeto

#include <Arduino.h>
#include <Wire.h>
#include <U8g2lib.h>
#include <DHT.h>
#include <WiFi.h>
#include <WebServer.h>

//===================== WIFI =====================
const char* ssid = "Nome da Rede";
const char* password = "Senha wifi";

// OLED
#define SDA_PIN 5
#define SCL_PIN 6

// DHT11
#define DHTPIN 4
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

// Display
U8G2_SSD1306_72X40_ER_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);

// Servidor Web
WebServer server(80);

// Variáveis
float temperatura = 0.0;
float umidade = 0.0;

//============================================================

void atualizarLeituras() {
  float t = dht.readTemperature();
  float h = dht.readHumidity();

  if (!isnan(t))
    temperatura = t;

  if (!isnan(h))
    umidade = h;
}

//============================================================

void paginaPrincipal() {

  atualizarLeituras();

  String html;

  html += "<!DOCTYPE html>";
  html += "<html>";
  html += "<head>";
  html += "<meta charset='UTF-8'>";
  html += "<meta http-equiv='refresh' content='2'>";
  html += "<title>ESP32-C3</title>";

  html += "<style>";
  html += "body{background:#f2f2f2;font-family:Arial;text-align:center;}";
  html += ".card{background:white;width:320px;margin:auto;margin-top:40px;";
  html += "padding:20px;border-radius:12px;box-shadow:0 0 10px #888;}";
  html += ".valor{font-size:34px;color:#0066cc;font-weight:bold;}";
  html += "</style>";

  html += "</head><body>";

  html += "<div class='card'>";
  html += "<h2>ESP32-C3</h2>";

  html += "<h3>Temperatura</h3>";
  html += "<div class='valor'>";
  html += String(temperatura,1);
  html += " &deg;C</div>";

  html += "<h3>Umidade</h3>";
  html += "<div class='valor'>";
  html += String(umidade,0);
  html += " %</div>";

  html += "</div>";

  html += "</body>";
  html += "</html>";

  server.send(200, "text/html", html);
}

//============================================================

void setup() {

  Serial.begin(115200);
  delay(1000);

  Wire.begin(SDA_PIN, SCL_PIN);

  u8g2.begin();
  dht.begin();

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  // Tela de conexão
  u8g2.clearBuffer();
  u8g2.setFont(u8g2_font_5x8_tr);
  u8g2.drawStr(0, 12, "Conectando...");
  u8g2.sendBuffer();

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println();
  Serial.println("WiFi conectado!");
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());
  Serial.print("Acesse: http://");
  Serial.println(WiFi.localIP());

  server.on("/", paginaPrincipal);
  server.begin();

  // Tela com o IP recebido
  String ip = WiFi.localIP().toString();

  u8g2.clearBuffer();
  u8g2.setFont(u8g2_font_5x8_tr);
  u8g2.drawStr(0, 10, "Servidor OK");
  u8g2.drawStr(0, 22, "IP:");
  u8g2.drawStr(0, 34, ip.c_str());
  u8g2.sendBuffer();

  delay(2000);
}

//============================================================

void loop() {

  server.handleClient();

  static unsigned long tempo = 0;

  if (millis() - tempo >= 2000) {

    tempo = millis();

    atualizarLeituras();

    u8g2.clearBuffer();
    u8g2.setFont(u8g2_font_5x8_tr);

    char texto[20];

    sprintf(texto, "T: %.1f C", temperatura);
    u8g2.drawStr(0, 15, texto);

    sprintf(texto, "U: %.0f %%", umidade);
    u8g2.drawStr(0, 30, texto);

    u8g2.sendBuffer();
  }
}

Verificando a Conexão Wi-Fi

Depois de enviar o código, abra o Monitor Serial da Arduino IDE.

O ESP32-C3 tentará se conectar à rede configurada no código.

Quando a conexão for realizada com sucesso, aparecerá uma mensagem semelhante a:

WiFi conectado!
SSID: Nome da Rede
Acesse: http://10.0.0.101

Copie o endereço IP exibido no Monitor Serial e cole no navegador de um dispositivo conectado à mesma rede Wi-Fi.

Acessando os dados pelo navegador

Ao acessar o endereço IP, o ESP32-C3 exibirá uma página com as informações coletadas pelo DHT11.

A página apresenta:

  • Temperatura em °C;
  • Umidade relativa em %;
  • Atualização automática dos valores.


O código atualiza a página automaticamente a cada dois segundos, permitindo acompanhar as alterações do ambiente sem precisar atualizar o navegador manualmente.

Visualização no display OLED

Além da página web, o ESP32-C3 Mini OLED também apresenta as medições diretamente no display integrado.

A tela mostra:

T: XX.X C
U: XX %

As informações são atualizadas periodicamente conforme novas leituras são realizadas pelo DHT11.

Conclusão

Agora você já sabe como criar um projeto IoT com ESP32-C3 Mini OLED e DHT11 para monitorar temperatura e umidade.

Além de visualizar as informações no display OLED integrado, você também consegue acessar os dados pelo navegador utilizando a conexão Wi-Fi do ESP32-C3.

Esse projeto é uma ótima base para começar a desenvolver sistemas de monitoramento remoto e, a partir dele, você pode adicionar novos sensores, criar automações e transformar o ESP32-C3 em uma solução IoT ainda mais completa.

Projeto realizado por Emanuel Sousa – Graduando em Engenharia Mecatrônica

Post navigation

Deixe um comentário

Deixe um comentário

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

Como criar um piano real usando Arduino UNO

ESP32 Super Mini: Comparativo entre C3, S3, C6 e H2

Conheça o Ferro de Solda – Guia Completo da Smart Kits

Instalação do Driver USB para ESP32: Guia Completo