ESP8266 com BME280 usando o Arduino IDE (pressão, temperatura, umidade)

Este guia mostra como usar o módulo de sensor BME280 com o ESP8266 para ler a pressão, a temperatura, a umidade e estimar a altitude usando o Arduino IDE. O sensor BME280 usa o protocolo de comunicação I2C ou SPI para trocar dados com um microcontrolador

Mostraremos como conectar o sensor ao ESP8266, instalar as bibliotecas necessárias e escrever um esboço simples que exibe as leituras do sensor. Também criaremos um exemplo de servidor da Web para exibir as últimas leituras de pressão, temperatura e umidade.

Antes de prosseguir com este tutorial, você deve ter o complemento ESP8266 instalado em seu Arduino IDE.

Introducing BME280 Sensor Module

O módulo sensor BME280 lê a pressão barométrica, a temperatura e a umidade. Como a pressão muda com a altitude, você também pode estimar a altitude. Há várias versões desse módulo de sensor. Estamos usando o módulo ilustrado na figura abaixo.

Esse sensor se comunica usando o protocolo de comunicação I2C, portanto, a fiação é muito simples. Você pode usar os pinos I2C padrão do ESP8266, conforme mostrado na tabela a seguir:

Há outras versões desse sensor que podem usar os protocolos de comunicação SPI ou I2C, como o módulo mostrado na próxima figura:

Se estiver usando um desses sensores, para usar o protocolo de comunicação I2C, use os seguintes pinos:

Se você usar o protocolo de comunicação SPI, precisará usar os seguintes pinos:

Peças necessárias

Para concluir este tutorial, você precisará das seguintes peças:

  • Módulo de sensor BME280
  • ESP8266 (Qualquer versão, preferencialmente as mais recentes)
  • ProtoBoard
  • Fios de jumper

Esquema – ESP8266 com BME280 usando I2C

Vamos usar a comunicação I2C com o módulo sensor BME280. Para isso, conecte o sensor aos pinos SDA e SCL do ESP8266, conforme mostrado no diagrama esquemático a seguir.

Instalando a biblioteca BME280

Para obter leituras do módulo sensor BME280, você precisa usar a biblioteca Adafruit_BME280. Siga as próximas etapas para instalar a biblioteca em seu Arduino IDE:

Abra seu Arduino IDE e vá para Sketch > Include Library > Manage Libraries. O Gerenciador de bibliotecas deve ser aberto.

Procure por “adafruit bme280” na caixa de pesquisa e instale a biblioteca.

Depois de instalar as bibliotecas, reinicie o Arduino IDE.

Instalando a biblioteca Adafruit_Sensor

Para usar a biblioteca BME280, você também precisa instalar a biblioteca Adafruit_Sensor. Siga as próximas etapas para instalar a biblioteca em seu Arduino IDE:

Vá para Sketch > Include Library > Manage Libraries  e digite “Adafruit Unified Sensor” na caixa de pesquisa. Role a tela até o final para encontrar a biblioteca e instalá-la.

Leitura de pressão, temperatura e umidade
Para ler pressão, temperatura e umidade, usaremos um exemplo de sketch da biblioteca.

Depois de instalar a biblioteca BME280 e a biblioteca Adafruit_Sensor, abra o Arduino IDE e vá para File > Examples > Adafruit BME280 library > bme280 test.

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

/*#include <SPI.h>
#define BME_SCK 14
#define BME_MISO 12
#define BME_MOSI 13
#define BME_CS 15*/

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme; // I2C
//Adafruit_BME280 bme(BME_CS); // hardware SPI
//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI

unsigned long delayTime;

void setup() {
  Serial.begin(9600);
  Serial.println(F("BME280 test"));

  bool status;

  // configurações padrão
 // (você também pode passar um objeto da biblioteca Wire, como &Wire2)
 status = bme.begin(0x76);  
  if (!status) {
    Serial.println("Could not find a valid BME280 sensor, check wiring!");
    while (1);
  }

  Serial.println("-- Default Test --");
  delayTime = 1000;

  Serial.println();
}

void loop() { 
  printValues();
  delay(delayTime);
}

void printValues() {
  Serial.print("Temperature = ");
  Serial.print(bme.readTemperature());
  Serial.println(" *C");
  
  // Converter a temperatura em Fahrenheit
  /*Serial.print("Temperature = ");
  Serial.print(1.8 * bme.readTemperature() + 32);
  Serial.println(" *F");*/
  
  Serial.print("Pressure = ");
  Serial.print(bme.readPressure() / 100.0F);
  Serial.println(" hPa");

  Serial.print("Approx. Altitude = ");
  Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
  Serial.println(" m");

  Serial.print("Humidity = ");
  Serial.print(bme.readHumidity());
  Serial.println(" %");

  Serial.println();
}

Fizemos algumas modificações no sketch para torná-lo totalmente compatível com o ESP8266.

Como o código funciona
Continue lendo esta seção para saber como o código funciona ou pule para a seção “Demonstração”.

Bibliotecas
O código começa com a inclusão das bibliotecas necessárias: a biblioteca wire para usar I2C e as bibliotecas Adafruit_Sensor e Adafruit_BME280 para fazer a interface com o sensor BME280.

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

Comunicação SPI
Como vamos usar a comunicação I2C, as seguintes linhas que definem os pinos SPI são comentadas:

/*#include <SPI.h>
#define BME_SCK 14
#define BME_MISO 12
#define BME_MOSI 13
#define BME_CS 15*/

Observação: se estiver usando comunicação SPI, use os pinos SPI padrão do ESP8266:

Pressão no nível do mar

É criada uma variável chamada SEALEVELPRESSURE_HPA.

#define SEALEVELPRESSURE_HPA (1013.25)

Essa variável salva a pressão no nível do mar em hectopascal (equivalente a milibar). Essa variável é usada para estimar a altitude de uma determinada pressão, comparando-a com a pressão do nível do mar. Este exemplo usa o valor padrão, mas, para obter resultados mais precisos, substitua o valor pela pressão atual do nível do mar em seu local.

Você está gostando do projeto, ele completo é encontrado no Ebook com este e outros, abaixo.

Guia de Esp8266 com sensores e módulos

Please follow and like us:
error0
fb-share-icon
Tweet 20
fb-share-icon20