Muitas vezes precisamos saber a temperatura e umidade do ar , por que não poderíamos precisar de pressão também? Possivelmente você já quis saber a altitude de um determinado local, o que poderia ser muito útil, por exemplo, em foguetes, drones, aeromodelos e outros. Com o Sensor BME280 conseguimos levantar todas essas informações.
Esse modelo apresenta como característica principal sua ampla faixa de medição e ótima precisão, além de contar com comunicação por I2C, ou seja, utiliza somente dois pinos do Arduino para transmitir as informações, permitindo agregar maiores possibilidades ao microcontrolador. Se desejar maiores detalhes, consulte o Datasheet BME280.
Sensor BME280
No projeto de hoje iremos utilizar o sensor BME280 em conjunto com o monitor serial do Arduino para monitorar a pressão, altitude, temperatura e umidade do local que desejarmos de forma exemplificativa, onde poderá ser adaptado nos mais diversos projetos robóticos.
Materiais Necessário para o Projeto
Esquema de Ligação do Sensor BME280
A forma de ligação Sensor BME280 com o Arduino é bem simples, contando com somente com 4 fios, sendo 2 para alimentação que são os pinos VCC e GND e 2 para comunicação I2C, o SCL e SDA.
Código para Programação do Sensor BME280
O código para nos conseguirmos aferir os dados do sensor bme280 irá utilizar 2 bibliotecas que irão fazer a comunicação e medição dos valores do sensor que são a Adafruit_Sensor.h e a Adafruit_BME280.h e iremos utilizar o monitor serial para ver os dados do sensor.
O código completo pode ser baixado AQUI.
Cabeçalho
O primeiramente iremos incluir as bibliotecas ao nosso programa, após isto vamos criar uma definição para o valor em hPa da pressão a nível do mar, mas para que? essa informação será necessária como uma espécie de base de cálculo para altitude ou seja iremos monitorar a altitude atual e iremos fazer um cálculo em relação a pressão a nível do mar, assim vamos conseguir saber a altitude atual.
Após definirmos o valor da pressão a nível do mar iremos criar o iniciar o objeto bme.
1 2 3 4 5 6 |
#include <Adafruit_Sensor.h> #include <Adafruit_BME280.h> #define PressaoaNivelDoMar_HPA (1013.25) Adafruit_BME280 bme; |
Void setup
No void setup vamos iniciar o serial monitor com a velocidade de 9600 baud rate e mostraremos uma mensagem, após vamos iniciar o sensor bme280.
1 2 3 4 5 6 |
void setup() { Serial.begin(9600); Serial.println("Teste do sensor BME280"); bme.begin(); } |
Void loop
Já no void loop, vamos criar 4 variáveis que vão armazenar os valore de temperatura , umidade, pressão e altitude para depois nós imprimirmos esses valores no monitor serial.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
void loop() { float temp = bme.readTemperature(); float umid = bme.readHumidity(); float pressao = bme.readPressure() / 100.0F; float altitude = bme.readAltitude(PressaoaNivelDoMar_HPA); Serial.println(); Serial.print("Umidade : "); Serial.print(umid); Serial.println(" %"); Serial.print("Temperatura : "); Serial.print(temp); Serial.println(" *C"); Serial.print("Pressao : "); Serial.print(pressao); Serial.println(" hPa"); Serial.print("Altitude Aproximada : "); Serial.print(altitude); Serial.println(" m"); Serial.println(); delay(1000); } |
Feito isto, podemos abrir o serial monitor e verificar as informações, como a imagem abaixo demonstra:
Conclusão
No projeto de hoje aprendemos a utilizar o Sensor BME280 para medir a pressão, temperatura e umidade em conjunto com o microcontrolador Arduino Uno. A partir deste artigo, você vai conseguir desenvolver vários projetos que necessitem deste equipamento.
Conforme mencionado, o que mais chamou a atenção nesse sensor foi sua precisão e ampla faixa de medição, o que possibilita integrá-lo aos mais diversos projetos, apresentando dimensões muito reduzidas, além de um ótimo custo x benefício, quando comparado com outros modelos similares.
Fique atento ao nosso blog, pois sempre teremos novidades na área de Arduino, Esp32 e Raspberry Pi.
Seria o caso de “hpa” ser o que? Pressão em mpa, kpa, ou pá é em pascal. Certo?
Bom Dia Marcelo! HPa é uma valor de medida conhecido como hectopascal, onde 1hPa corresponde a 0,001 bar ou 100 Pascal.
boa noite.
não sei o que fiz de errado mas fica dando valores de 0 em todos as 3 variaveis e a altitude dá 44330.00 m
o que pode estar errado?
obrigado
Bom dia Jorge!
Geralmente conexões I2C quando há algum problema com conexão ou endereço aparecem os valores zerados, a altitude apenas não deve estar zerada pois é passado um parâmetro de calibragem, aonde deve resultar este valor.
Certifique-se suas conexões e tente utilizar um código scanner de I2C para ver se consegue encontrar o sensor sem problemas.