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 Redepelo nome da sua rede Wi-Fi;Senha wifipela 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 += " °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




Deixe um comentário