No tutorial de hoje vamos mostrar como usar o ESP32-C3 em conjunto com o sensor BME680 para medir temperatura, umidade, pressão e VOC (Composto orgânico volátil), também vamos mostrar essas informações em um display OLED.
Materiais utilizados:
- ESP32-C3 (UKT-ESP32C3-DEV-MINI-USB)
- BME680
- Display LCD (128x32)
- Jumpers ou fios
Esquemático:

Bibliotecas Arduíno utilizadas:
- BME680 by Adafruit
- SSD1306 by Adafruit
E dependências das respectivas bibliotecas acima.
Seleção da placa na Arduíno IDE:

Selecionamos o módulo ESP32C3.
Código:
#include "Adafruit_SSD1306.h"
#include "Adafruit_BME680.h"
// Define o tamanho do display OLED
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
#define SEALEVELPRESSURE_HPA (1013.25)
// Inidicaliza o sensor e o display
Adafruit_BME680 bme;
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
//Velocidade do monitor serial
Serial.begin(115200);
// Pinos do barramento I2C
Wire.begin(3, 2);
// Verifica estado de inicialização do display, acusa falha em caso de erro
if (!display.begin(SSD1306_SWITCHCAPVCC, 0, false, true)) {
Serial.println(F("Falha ao inicializar o SSD1306"));
for (;;)
;
}
if (!bme.begin()) {
Serial.println(F("Could not find a valid BME680 sensor, check wiring!"));
while (1);
}
// Ajusta os filtros da biblioteca do sensor
bme.setTemperatureOversampling(BME680_OS_8X);
bme.setHumidityOversampling(BME680_OS_2X);
bme.setPressureOversampling(BME680_OS_4X);
bme.setIIRFilterSize(BME680_FILTER_SIZE_3);
bme.setGasHeater(320, 150); // 320*C for 150 ms
// Limpe o buffer do display
display.clearDisplay();
// Configuração do texto
display.setTextSize(1.5); // Tamanho do texto (1 = 6x8 pixels)
display.setTextColor(SSD1306_WHITE); // Cor do texto
}
void loop() {
// Tempo entre cada medida
delay(2000);
// BME680 inicia o processo de amostragem
unsigned long endTime = bme.beginReading();
if (endTime == 0) {
Serial.println(F("Falha ao obter medicao"));
return;
}
Serial.print(F("Medicao comecou em: "));
Serial.print(millis());
Serial.print(F(" e terminou em "));
Serial.println(endTime);
if (!bme.endReading()) {
Serial.println(F("Falha com completar medicao"));
return;
}
Serial.
Resultado:

Sobre o autor:
Matheus desempenha o papel de desenvolvedor de sistemas de tecnologia da informação dentro da equipe da UKTech. Possui experiência no domínio de microcontroladores e desenvolvimento de software, e está na reta final de sua graduação em Engenharia de Computação. Em seus momentos de lazer, ele se dedica a interesses como jogos de computador e a apreciação de animes.