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:
- Copie o código da biblioteca em um novo arquivo. O código da biblioteca BME280 pode ser encontrado aqui.
- Vá para File > Save as…
- Selecione salvar no “dispositivo MicroPython”:
- Nomeie seu arquivo como BME280.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 – 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