Utilizando o ESP32-C3 em conjunto com o sensor BME680e a Arduíno IDE

02/10/2023 14:19 Comentário(s) Por Carlos Korovsky

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:

  1. ESP32-C3 (UKT-ESP32C3-DEV-MINI-USB)  - (Onde comprar)
  2. BME680 
  3. Display LCD (128x32) 
  4. 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.

Partilhar -