BME280 com ESP8266 (pressão, temperatura, umidade) com MicroPython

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

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

O módulo sensor BME280 lê a pressão barométrica, a temperatura e a umidade. Como a pressão muda com a altitude, também é possível estimar a altitude. Há várias versões desse módulo de sensor: algumas podem se comunicar usando apenas o protocolo de comunicação I2C e outras têm a opção adicional de usar o protocolo de comunicação SPI.

Apresentando o módulo sensor BME280
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, mas estamos usando a mostrada 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:

 

Peças necessárias

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

  • Módulo de sensor BME280
  • 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 BME280
A biblioteca para leitura do sensor BME280 não faz parte da biblioteca MicroPython padrão por padrão. Portanto, você precisa carregar a biblioteca a seguir na placa ESP8266 (Você encontra ela completa no GitHub, do Ebook).

from machine import I2C
import time

# BME280 default address.
BME280_I2CADDR = 0x76

# Operating Modes
BME280_OSAMPLE_1 = 1
BME280_OSAMPLE_2 = 2
BME280_OSAMPLE_4 = 3
BME280_OSAMPLE_8 = 4
BME280_OSAMPLE_16 = 5

# BME280 Registers

BME280_REGISTER_DIG_T1 = 0x88  # Trimming parameter registers
BME280_REGISTER_DIG_T2 = 0x8A
BME280_REGISTER_DIG_T3 = 0x8C

BME280_REGISTER_DIG_P1 = 0x8E
BME280_REGISTER_DIG_P2 = 0x90
BME280_REGISTER_DIG_P3 = 0x92
BME280_REGISTER_DIG_P4 = 0x94
BME280_REGISTER_DIG_P5 = 0x96
BME280_REGISTER_DIG_P6 = 0x98
BME280_REGISTER_DIG_P7 = 0x9A
BME280_REGISTER_DIG_P8 = 0x9C
BME280_REGISTER_DIG_P9 = 0x9E

 

Fazer upload da biblioteca BME280 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 BME280 pode ser encontrado aqui.
  2. Vá para File > Save as

  1. Selecione salvar no “dispositivo MicroPython”:

  1. Nomeie seu arquivo como BME280.py e pressione o botão
  2. 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 – BME280 Pressão, temperatura e umidade
Depois de carregar a biblioteca no ESP32 ou ESP8266, copie o código a seguir para o arquivo main.py ou boot.py. Ele simplesmente imprime a temperatura, a umidade e a pressão no shell a cada 5 segundos.

from machine import Pin, I2C
from time import sleep
import BME280

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

while True:
  bme = BME280.BME280(i2c=i2c)
  temp = bme.temperature
  hum = bme.humidity
  pres = bme.pressure
  # uncomment for temperature in Fahrenheit
  #temp = (bme.read_temperature()/100) * (9/5) + 32
  #temp = str(round(temp, 2)) + 'F'
  print('Temperature: ', temp)
  print('Humidity: ', hum)
  print('Pressure: ', pres)

  sleep(5)

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

from machine import Pin, I2C
from time import sleep
import BME280

Defina os pinos I2C. Neste caso, estamos usando os pinos I2C padrão. Se estiver usando o ESP32, defina os pinos da seguinte forma:

i2c = I2C(scl=Pin(22), sda=Pin(21), freq=10000)

Defina os pinos I2C. Neste caso, estamos usando os pinos I2C padrão. Se estiver usando o ESP32, defina os pinos da seguinte forma:

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

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

temp = bme.temperature
hum = bme.humidity
pres = bme.pressure

Por fim, imprima as leituras no shell:

print('Temperature: ', temp)
print('Humidity: ', hum)
print('Pressure: ', pres)

No final, adicionamos um atraso de 5 segundos:

sleep(5)

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