Sensor ambiental BME680 (gás, pressão, umidade, temperatura)

O BME680 é um sensor ambiental que combina sensores de gás, pressão, umidade e temperatura. O sensor de gás pode detectar uma ampla gama de gases, como compostos orgânicos voláteis (VOC). Por esse motivo, o BME680 pode ser usado no controle da qualidade do ar interno.

MicroPython: BME680 com ESP32 e ESP8266 (temperatura, umidade, pressão, gás)

Apresentando o módulo de sensor ambiental BME680
O BME680 é um sensor ambiental que combina sensores de gás, pressão, umidade e temperatura. O sensor de gás pode detectar uma ampla gama de gases, como compostos orgânicos voláteis (VOC). Por esse motivo, o BME680 pode ser usado no controle da qualidade do ar interno.

BME680 Measurements
O BME680 é um sensor digital 4 em 1 que mede:

  • Temperatura
  • Umidade
  • Pressão barométrica
  • Gás: Compostos orgânicos voláteis (VOC), como etanol e monóxido de carbono

Sensor de gás
O BME680 contém um sensor MOX (Metal-oxide) que detecta VOCs no ar. Esse sensor lhe dá uma ideia qualitativa da soma de COVs/contaminantes no ar circundante – ele não é específico para uma molécula de gás específica.

Os sensores MOX são compostos por uma superfície de óxido metálico, um chip sensor para medir alterações na condutividade e um aquecedor. Ele detecta VOCs por meio da adsorção de moléculas de oxigênio em sua camada sensível. O BME680 reage à maioria dos COVs que poluem o ar interno (exceto CO2).

Quando o sensor entra em contato com os gases redutores, as moléculas de oxigênio reagem e aumentam a condutividade na superfície. Como um sinal bruto, o BME680 emite valores de resistência. Esses valores mudam devido a variações nas concentrações de VOC:

  • Maior concentração de VOCs » Menor resistência
  • Menor concentração de VOCs » Maior resistência

As reações que ocorrem na superfície do sensor (portanto, a resistência) são influenciadas por outros parâmetros além da concentração de VOC, como temperatura e umidade.

Informações relevantes sobre o sensor de gás

O sensor de gás lhe dá uma ideia qualitativa dos gases VOCs no ar ambiente. Assim, você pode obter tendências, comparar seus resultados e ver se a qualidade do ar está aumentando ou diminuindo. Para obter medições precisas, você precisa calibrar o sensor com fontes conhecidas e criar uma curva de calibração.

Ao adquirir o sensor pela primeira vez, é recomendável operá-lo por 48 horas depois de começar a coletar dados “reais”. Depois disso, também é recomendável operar o sensor por 30 minutos antes de obter uma leitura de gás.

Precisão do BME680

Aqui está a precisão dos sensores de temperatura, umidade e pressão do BME680:

Faixa de operação do BME680

A tabela a seguir mostra a faixa de operação dos sensores de temperatura, umidade e pressão do BME680.

Pinagem do BME680

Aqui está a pinagem do BME680:

Interface do BME680

O BME680 é compatível com as interfaces I2C e SPI.

BME680 I2C

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

Peças necessárias

Para este projeto, você precisa conectar o módulo de sensor BME680 aos pinos I2C do ESP8266. Aqui está uma lista das peças necessárias para este capitulo:

  • Módulo de sensor BME680
  • ESP8266 (Qualquer modelo, preferencialmente os mais recentes)
  • ProtoBoard
  • Fios de jumper

Esquema – ESP8266
Siga o próximo diagrama esquemático se estiver usando uma placa ESP8266:

Biblioteca MicroPython BME680

A biblioteca para leitura do sensor BME680 não faz parte da biblioteca MicroPython padrão por padrão. Portanto, você precisa carregar a biblioteca a seguir em sua placa ESP8266 (salve-a com o nome bme680.py).

Aqui abaixo voce vera parte do código, o restante será encontrado no GitHub, no Final do Ebook.

import time
import math
from micropython import const
from ubinascii import hexlify as hex
try:
  import struct
except ImportError:
  import ustruct as struct
_BME680_CHIPID = const(0x61)
_BME680_REG_CHIPID = const(0xD0)
_BME680_BME680_COEFF_ADDR1 = const(0x89)
_BME680_BME680_COEFF_ADDR2 = const(0xE1)
_BME680_BME680_RES_HEAT_0 = const(0x5A)
_BME680_BME680_GAS_WAIT_0 = const(0x64)
_BME680_REG_SOFTRESET = const(0xE0)
_BME680_REG_CTRL_GAS = const(0x71)
_BME680_REG_CTRL_HUM = const(0x72)
_BME280_REG_STATUS = const(0xF3)
_BME680_REG_CTRL_MEAS = const(0x74)
_BME680_REG_CONFIG = const(0x75)
_BME680_REG_PAGE_SELECT = const(0x73)
_BME680_REG_MEAS_STATUS = const(0x1D)
_BME680_REG_PDATA = const(0x1F)
_BME680_REG_TDATA = const(0x22)
_BME680_REG_HDATA = const(0x25)
_BME680_SAMPLERATES = (0, 1, 2, 4, 8, 16)
_BME680_FILTERSIZES = (0, 1, 3, 7, 15, 31, 63, 127)
_BME680_RUNGAS = const(0x10)
_LOOKUP_TABLE_1 = (2147483647.0, 2147483647.0, 2147483647.0, 2147483647.0, 2147483647.0,
  2126008810.0, 2147483647.0, 2130303777.0, 2147483647.0, 2147483647.0,
  2143188679.0, 2136746228.0, 2147483647.0, 2126008810.0, 2147483647.0,
  2147483647.0)
_LOOKUP_TABLE_2 = (4096000000.0, 2048000000.0, 1024000000.0, 512000000.0, 255744255.0, 127110228.0,
  64000000.0, 32258064.0, 16016016.0, 8000000.0, 4000000.0, 2000000.0, 1000000.0, 500000.0, 250000.0, 125000.0)

Fazer upload da biblioteca BME680 com o Thonny IDE

Se estiver usando o Thonny IDE, siga as próximas etapas:

  1. Copie o código da biblioteca em um novo arquivo. O código da biblioteca BME680 pode ser encontrado aqui.
  2. Vá para File > Save as…

3. Selecione salvar no “dispositivo MicroPython”:

4. Nomeie seu arquivo como bme680.py e pressione o botão OK:

E é isso. A biblioteca foi carregada em sua placa. Para ter certeza de que o upload foi bem-sucedido, vá para File > Save as… e selecione o dispositivo MicroPython. Seu arquivo deve estar listado lá:

Depois de carregar a biblioteca em seu quadro, você pode usar as funcionalidades da biblioteca em seu código importando a biblioteca.

Código – BME680 Temperature, Humidity, Pressure, and Gas Air Quality

Depois de carregar a biblioteca no ESP8266, copie o código a seguir para o arquivo main.py ou boot.py. Ele simplesmente imprime a temperatura, a umidade, a pressão e a resistência do gás no shell a cada 5 segundos.

from machine import Pin, I2C
from time import sleep
from bme680 import *

# ESP32 - Pin assignment
i2c = I2C(scl=Pin(22), sda=Pin(21))
# ESP8266 - Pin assignment
#i2c = I2C(scl=Pin(5), sda=Pin(4))

bme = BME680_I2C(i2c=i2c)

while True:
  try:
    temp = str(round(bme.temperature, 2)) + ' C'
    #temp = (bme.temperature) * (9/5) + 32
    #temp = str(round(temp, 2)) + 'F'
    
    hum = str(round(bme.humidity, 2)) + ' %'
    
    pres = str(round(bme.pressure, 2)) + ' hPa'
    
    gas = str(round(bme.gas/1000, 2)) + ' KOhms'

    print('Temperature:', temp)
    print('Humidity:', hum)
    print('Pressure:', pres)
    print('Gas:', gas)
    print('-------')
  except OSError as e:
    print('Failed to read sensor.')
 
  sleep(5)

 

Como o código funciona
Primeiro, você precisa importar as bibliotecas necessárias, incluindo o módulo BME680 que você importou anteriormente.

from machine import Pin, I2C
from time import sleep
from bme680 import *

Defina os pinos I2C. Nesse caso, estamos usando os pinos I2C padrão. Se estiver usando o ESP8266, comente a linha anterior e descomente a seguinte para que você tenha:

i2c = I2C(scl=Pin(5), sda=Pin(4))

No loop while, crie um objeto BME680 chamado bme com os pinos I2C definidos anteriormente:

bme = BME680_I2C(i2c=i2c)

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