Manual

do

Maker

.

com

BME280 com ESP32 e Blynk

BME280 com ESP32 e Blynk

Vou adiantar que estou apenas utilizando a informação de temperatura do BME280 com ESP32, pois é o propósito para um projeto no momento. Pode ser que futuramente seja implementada a umidade, mas agora o que importa é fundamentalmente isso.

BME280 com ESP32

Por se tratar de um sensor I2C, ele pode ser utilizado com qualquer dispositivo que ofereça uma interface I2c. Se não tiver uma biblioteca para facilitar o uso, basta ler o datasheet e implementar. Não é difícil escrever uma biblioteca para dispositivos I2C, como você pode ver nesse outro artigo, onde escrevi uma biblioteca para Raspberry utilizando o sensor BMP180.

Especificações do BME280

Trabalha entre 300 e 1100 hPa (hectoPascal) para medição de pressão atmosférica. Se pretende medir pressões muito altas (muito além de 1 atmosfera), utilize um sensor pneumático.

O BME280 mede temperaturas entre -40 e 85 graus Celsius. Se pretende medir temperaturas muito altas (do ponto de ebulição em diante, ou resfriamento por nitrogênio), utilize um PT100.

Seu consumo a 1Hz vai de 1.8 uA até 3.6uA. Insignificante para a maioria das aplicações. A variação se dá pelas leituras (umidade, pressão, temperatura).

O tempo de resposta (tau) é de 63% em 1 segundo.

O desvio é de aproximadamente 3% na umidade relativa e a histerese é menor que 2% da umidade relativa.

O rúido RMS é de 0.2Pa (equivalene a 1.7 cm), bastante preciso, hum?

A sensibilidade de erro é de ~0.25 (numa faixa de 1m a 400m).

Trabalha em 3v3, dimensões de 15x10 mm.

Existem algumas variações, mas este modelo que estou utilizando tem apenas VCC, GND, SCL e SDA.

A própria Bosh disponibiliza um código em C, o que pode ser suficiente para utilizá-lo em plataformas que a biblioteca da Adafruit não seja aplicável.

Onde comprar?

Essa belezinha está disponível em nosso parceiro CurtoCircuito. Acesse o site e aproveite para ver a grande variedade de sensores que eles estão vendendo, certamente lhe será atrente.

Código do BME280 com ESP32 e Blynk

Como citei anteriormente, seria necessário implementar esse sensor em um projeto (não complexo, mas muito trabalhoso). Nessa fase já estava rodando o servidor Blynk local (se desejar ter seu próprio servidor Blynk, veja nesse link como fazê-lo). Restava conectar o dispositivo ao servidor. Existe ao menos dois modos de fazê-lo; utilizando o mesmo token do aplicativo do smartphone (o que pode gerar conflito por N razões) ou utilizar o modo bridge para fazer comunicação entre tokens diferentes (descrito nesse outro artigo). Optei por utilizar o mesmo token, uma vez que o aplicativo do smartphone tem unicamente o propósito de visualizar o gráfico de temperaturas. O atuador está em outro dispositivo, que também só fará leituras e agirá conforme necessário.

O código utiliza a biblioteca Blynk disponível no repositório do Arduino, não é necessário fazer nada de especial, apenas instalar a biblioteca e usar esse código. Do mesmo modo, deve-se instalar a biblioteca BMP280 da Adafruit, mas procure por BME280. Dependendo do sensor que estiver utilizando, apenas mude o include. Já deixei as linhas comentadas.

Para a biblioteca Blynk, fiz um define especificando a board. Se utilizar ESP8266 invés de ESP32, basta remover a primeira linha.

Agora, o código:

#define ESP32_BOARD
#include <Wire.h>
#include <Arduino.h>
#include <WiFi.h>
#include <WiFiClient.h>

#ifdef ESP32_BOARD
#include <BlynkSimpleEsp32.h>
#else
#include <BlynkSimpleEsp8266.h>
#endif

#include <string.h>
#include <Adafruit_Sensor.h>
//#include <Adafruit_BMP280.h>
#include <Adafruit_BME280.h>

//Adafruit_BMP280 bme;
Adafruit_BME280 bme;
#define BLYNK_PRINT Serial
#define BLYNK_DEBUG 1

BlynkTimer timer;
float f_temp = 0.0;

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "3ssEt0k3nEhF4k3";
//Defina o IP do seu servidor local, caso tenha optador por ele
#define SRV IPAddress(192,168,1,253)

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "SSID_DA_SUA_REDE";
char pass[] = "SUA_SENHA";

void tempSend(){
    String s_temp = String(f_temp);
    Serial.println(s_temp);
    Blynk.virtualWrite(V1,f_temp);
}

void setup()
{
  // Debug console
  Serial.begin(9600);
  Serial.println("###################");
  delay(5000);

  //Esse BME280 do nosso parceiro está no endereço 0x76
  if (!bme.begin(0x76)){
    Serial.println("BMP280 isn't started. locking here.");
    while (true);
  }
  Serial.println("Starting.");
  Blynk.begin(auth, ssid, pass, SRV, 8080); //para servidor local, esse é o formato
  timer.setInterval(2000L, tempSend);
  delay(1000);
}

void loop()
{
  f_temp = bme.readTemperature();
  Blynk.run();
  timer.run();
  delay(100);
}

Basicamente isso; uma função é definida para o timer do Blynk e essa função é chamada no intervalo especificado.

Mais uma vez, para conectar-se ao seu servidor local, utilize esse link como referência. Você terá que configurar uma conta de email dentro dos padrões descritos no artigo, então criar uma conta no seu servidor. O token será enviado por email (para o email que você criou).

Configurar o super chart para visualização

Se desejar ter um histórico, utilize o widget super chart para criar a visualização. O programa acima está utilizando o pino virtual 1. Se nunca utilizou Blynk, dê uma pesquisada aqui no site, tem diversos tutoriais e detalhes suficientes para criar suas aplicações.

Basicamente, adicione o widget ao seu dashboard, toque-o para editar, crie um dataset, toque o dataset criado e em PIN, selecione VirtualV1. Ao conectar, já estará recebendo os valores lidos pelo ESP32 / ESP8266.

O resultado deve ser algo como o gráfico da imagem de destaque desse artigo (está bem mais elaborado o dashboard da imagem de destaque, mas faz parte do mesmo projeto).

Projetos para sua empresa

Manual do Maker é mais do que um blog. Somos uma empresa de serviços, cuja principal atividade é desenvolvimento e implementação de projetos embarcados e IoT. Trabalhamos dentro da legalidade, emitindo nota fiscal de serviço, elaboração de requisitos de sistema e documentação do código. Não importa onde você esteja, montamos a prova de conceito e gravamos vídeo do projeto antes de entregar o código e/ou hardware configurado.

Em parceria com a AFEletrônica, projetamos e produzimos hardware industrial (também com nota), para lhe entregar a melhor experiência para seu projeto. Entre em contato: vendas@afeletronica.com.br Ou direto comigo: djames.suhanko@gmail.com

Será um prazer tê-lo como nosso cliente!

  Inscreva-se no nosso canal Manual do Maker no YouTube.

Também estamos no Instagram.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.