O objetivo aqui é construir um sistema que coleta dados de temperatura e umidade usando o sensor DHT22 e os envia para um servidor InfluxDB para armazenamento e análise, juntamente com um servidor Grafana. O ESP32 atua conectando o sensor ao Wi-Fi e gerenciando a comunicação com o InfluxDB.
Hardware Necessário
- ESP32 — Microcontrolador com Wi-Fi e Bluetooth integrados.
- DHT22 — Sensor de temperatura e umidade de baixo custo.
- Conexão Wi-Fi — Necessária para envio dos dados.

Pinagem
Sensor DHT22:
- VCC: 3.3V do ESP32
- GND: GND do ESP32
- DHTPIN: GPIO configurado no código (definido como
18)
Configuração do Projeto no VSCode com PlatformIO
[env:upesy_wroom]
platform = espressif32
board = upesy_wroom
framework = arduino
lib_deps =
adafruit/DHT sensor library@^1.4.6
arduino-libraries/NTPClient@3.1.0
tobiasschuerg/ESP8266 Influxdb@^3.13.1
Análise do Código Fonte
Declaração do DHT22
#include <Adafruit_Sensor.h>
#include <DHT.h>
#define DHTPIN 18
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
Conexão com o Wi-Fi
#include <WiFi.h>
#include <WiFiUdp.h>
const char* ssid = "MINHA_WIFI";
const char* password = "MINHA_SENHA";
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(2500);
Serial.println("Conectando à rede WiFi...");
}
Serial.println("Conectado à rede WiFi");
Declaração do InfluxDB e Inicialização
#include <InfluxDbClient.h>
#define INFLUXDB_URL "http://influx.mfs.eng.br:8086"
#define INFLUXDB_DB_NAME "clima"
#define INFLUXDB_USER "esp32"
#define INFLUXDB_PASSWORD "esp32_password"
InfluxDBClient client(INFLUXDB_URL, INFLUXDB_DB_NAME);
Point sensor("clima");
client.setConnectionParamsV1(INFLUXDB_URL, INFLUXDB_DB_NAME,
INFLUXDB_USER, INFLUXDB_PASSWORD);
Coletando Dados do DHT22
float tempValue = dht.readTemperature();
float humidityValue = dht.readHumidity();
if (!isnan(tempValue) && !isnan(humidityValue)) {
Serial.print("Temperatura: ");
Serial.println(tempValue);
Serial.print("Umidade: ");
Serial.println(humidityValue);
}
Envio de Dados para o InfluxDB
sensor.clearFields();
sensor.addField("temperature", tempValue);
sensor.addField("humidity", humidityValue);
if (!client.writePoint(sensor)) {
Serial.print("InfluxDB write failed: ");
Serial.println(client.getLastErrorMessage());
}
Vantagens do InfluxDB
- Banco de dados de séries temporais — ideal para dados contínuos.
- Escalabilidade — lida bem com grandes volumes de dados.
- Integração perfeita com Grafana.
Visualização no Grafana
Dashboard de exemplo:
Link para o painel do Grafana

Código Completo
Repositório do projeto:
https://gitlab.com/mfs.eng.br/hardware-quirks/temperatura_esp32
#include <Arduino.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <WiFi.h>
#include <NTPClient.h>
#include <WiFiUdp.h>
#include <InfluxDbClient.h>
#include "config.h"
// Código completo omitido aqui — incluído no repositório