Utilizar o BME680 com Arduino é uma forma prática de adicionar monitoramento ambiental a projetos maker, automação residencial e Internet das Coisas. Com um único sensor, é possível medir temperatura, umidade, pressão atmosférica e até indicadores relacionados à qualidade do ar, tornando o desenvolvimento mais simples e eficiente.
Neste artigo vamos aprender como usar o sensor BME680 com Arduino, desde as conexões até a leitura dos dados no monitor serial do software IDE do Arduino. Também veremos um exemplo prático utilizando uma biblioteca da Adafruit para medir temperatura, umidade, pressão atmosférica e gases voláteis (através de resistência elétrica).
O que é o sensor BME680?
O BME680 é um sensor ambiental digital desenvolvido pela empresa Bosch. Ele combina vários sensores internos em um único encapsulamento, permitindo medir diferentes variáveis ambientais simultaneamente.
Com ele é possível obter:
- Temperatura
- Umidade relativa do ar
- Pressão atmosférica
- Gases/compostos orgânicos voláteis (em formato de variação de resistência)
- Ele pode ainda calcular a altitude no local, baseado na pressão atmosférica
A comunicação pode ser feita via I2C ou SPI, o que facilita bastante a integração com plataformas como Arduino, ESP32 e Raspberry Pi. Uma das principais vantagens do BME680 é justamente a alta integração. Em vez de utilizar vários sensores separados, o módulo concentra tudo em um único componente pequeno e de baixo consumo energético.
Como funciona o BME680
Internamente o BME680 possui sensores específicos para cada variável ambiental. A medição de temperatura é feita utilizando elementos sensíveis à variação térmica. Já a umidade é medida através de uma estrutura capacitiva interna que altera suas características conforme a quantidade de vapor da água no ambiente.
A pressão atmosférica é obtida através de um sensor barométrico MEMS (micro eletro mecânico) extremamente preciso, semelhante ao utilizado em outros sensores da família BME da própria Bosch. Ainda pode ser calculada a altitude em metros no local do sensor, baseado no dado da pressão atmosférica.
O diferencial do BME680 está no sensor de gases. Ele utiliza um pequeno elemento aquecido capaz de detectar alterações na resistência elétrica causadas pela presença de determinados compostos orgânicos voláteis presentes no ar. Na prática, isso permite criar aplicações relacionadas à qualidade do ar e monitoramento de ambientes fechados. Vale lembrar que o BME680 não mede diretamente dióxido de carbono (CO2), por exemplo. O que ele fornece é uma leitura relacionada à resistência de gases, que pode ser utilizada para inferir alterações na qualidade do ar. Todos esses dados são processados internamente e enviados digitalmente ao microcontrolador através do barramento I2C ou SPI.
Vantagens do BME680 em projetos com Arduino
O BME680 oferece diversas vantagens para projetos maker e IoT. A principal delas é a integração de vários sensores em um único módulo. Isso reduz espaço na montagem e simplifica bastante o hardware. Outra vantagem importante é a possibilidade de comunicação I2C, que utiliza apenas dois fios de dados. Isso facilita a ligação com o Arduino UNO e outros microcontroladores.O sensor também possui baixo consumo de energia, sendo uma boa opção para projetos alimentados por bateria. Além disso, existem bibliotecas prontas bastante maduras para Arduino, o que torna o desenvolvimento muito mais simples.
Entre as aplicações mais comuns do BME680 estão:
- Estações meteorológicas
- Monitoramento ambiental
- Automação residencial
- Projetos de qualidade do ar
- Sistemas IoT
- Monitoramento de ambientes internos
Como conectar o BME680 ao Arduino
A forma mais simples de utilizar o BME680 com Arduino UNO é através da comunicação I2C. Usa-se apenas quatro fios: 5V/3V3, GND, SDA e SCL. Os módulos normalmente já possuem regulador de tensão e conversor lógico integrados, permitindo alimentação em 3.3V ou 5V. Mesmo assim, sempre vale conferir o datasheet do módulo utilizado.
As conexões básicas ficam assim:
No Arduino UNO, os pinos A4 e A5 correspondem ao barramento I2C. Após realizar as conexões, o hardware já estará pronto para a leitura dos dados.
Sensor BME680 com Arduino: Bibliotecas necessárias
Para utilizar o BME680 no Arduino IDE vamos utilizar duas bibliotecas da Adafruit:
- Adafruit BME680
- Adafruit Unified Sensor
A instalação é bem simples. Abra o Arduino IDE e vá em: Sketch → Incluir Biblioteca → Gerenciar Bibliotecas Depois pesquise por “Adafruit BME680” e “Adafruit Unified Sensor”. Instale ambas antes de continuar.
Sensor BME680 com Arduino: Código exemplo
A seguir temos um exemplo básico para leitura do sensor BME680 utilizando Arduino UNO.
|
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
#include <Wire.h> #include <SPI.h> #include <Adafruit_Sensor.h> #include "Adafruit_BME680.h" #define SEALEVELPRESSURE_HPA (1024.00) Adafruit_BME680 bme(&Wire); // I2C long bmeTempo = 0; void setup() { Serial.begin(9600); while (!Serial); Serial.println(F("Conectando na porta Serial")); if (!bme.begin()) { Serial.println("BME680 não encontrado"); while (1); } // Filtragem do sinal bme.setTemperatureOversampling(BME680_OS_8X); bme.setHumidityOversampling(BME680_OS_2X); bme.setPressureOversampling(BME680_OS_4X); bme.setIIRFilterSize(BME680_FILTER_SIZE_3); bme.setGasHeater(320, 150); // 320°C por 150 ms } void loop() { if (millis() - bmeTempo > 2000) { bmeTempo += 2000; if (!bme.performReading()) { Serial.println("Leitura não efetuada :("); return; } Serial.print("Temperatura = "); Serial.print(bme.temperature); Serial.println(" *C"); Serial.print("Umidade = "); Serial.print(bme.humidity); Serial.println(" %"); Serial.print("Pressão = "); Serial.print(bme.pressure / 100.0); Serial.println(" hPa"); Serial.print("Altitude aprox. = "); Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA)); Serial.println(" m"); Serial.print("Gás = "); Serial.print(bme.gas_resistance / 1000.0); Serial.println(" KOhms"); Serial.println("_-_-_-_-_-_-_-_-"); } } |
Explicação do código
Primeiramente, incluímos as bibliotecas necessárias para a comunicação I2C e utilização do sensor BME680. Em seguida, criamos o objeto:
|
1 |
Adafruit_BME680 bme; |
No setup(), inicializamos a comunicação serial e verificamos se o sensor foi detectado corretamente utilizando:
|
1 |
if (!bme.begin()) |
Caso o módulo não seja encontrado, o programa permanece travado no while(1), evitando que o código continue executando sem o sensor conectado corretamente. Na sequência, configuramos alguns parâmetros internos do BME680, como o oversampling das leituras e o aquecimento do sensor de gases. O comando:
|
1 |
bme.setGasHeater(320, 150); |
configura o aquecimento interno em 320 °C durante 150 ms, etapa necessária para realizar a leitura dos gases presentes no ambiente. Dentro do loop(), utilizamos:
|
1 |
bme.performReading() |
para solicitar uma nova leitura do sensor. Depois disso, os dados são exibidos no monitor serial, incluindo:
- temperatura
- umidade
- pressão atmosférica
- altitude aproximada
- resistência de gases
A leitura da pressão é dividida por 100 para converter o valor de Pascal para hPa. Já a resistência de gases é convertida para kΩ, facilitando a visualização no monitor serial. Vale destacar que essa leitura de gases não identifica um gás específico. O sensor mede a variação da resistência interna causada pela presença de diferentes compostos no ar, funcionando como um indicativo da qualidade do ambiente. Abaixo você pode conferir uma foto da montagem utilizando protoboard e jumpers, além de um exemplo das leituras exibidas no monitor serial da Arduino IDE.
Exemplo prático de uso
O BME680 pode ser utilizado em diversos projetos interessantes. Uma aplicação bastante comum é em estações meteorológicas caseiras. Como o sensor mede temperatura, umidade e pressão atmosférica, ele fornece praticamente todas as informações básicas para monitoramento ambiental.
Outra aplicação muito interessante é no monitoramento da qualidade do ar em ambientes fechados. Por exemplo, é possível detectar alterações na qualidade do ar em quartos, escritórios e laboratórios. Em ambientes pouco ventilados, a resistência de gases tende a variar significativamente.
O sensor também é muito utilizado em projetos IoT com ESP32, enviando os dados para plataformas MQTT, dashboards web e aplicativos móveis. Além disso, ele funciona muito bem em automação residencial, permitindo acionamentos automáticos baseados nas condições ambientais.
BME680 vs BME280
O BME280 é um sensor bastante conhecido da Bosch e mede:
- Temperatura
- Umidade
- Pressão atmosférica
O BME680 adiciona justamente a capacidade de leitura de gases e compostos orgânicos voláteis. Se o projeto exige monitoramento de qualidade do ar, o BME680 acaba sendo uma escolha mais interessante.
BME680 vs DHT22
O DHT22 é um sensor muito popular em projetos iniciantes, mas possui limitações importantes.
O BME680 oferece:
- Maior precisão
- Mais recursos
- Comunicação digital mais robusta
- Medição de pressão atmosférica
- Sensor de gases integrado
Além disso, a comunicação I2C tende a ser mais confiável e flexível do que o protocolo utilizado pelo DHT22. Isto porque o DHT22 comunica-se via apenas um fio, algo bem frágil e sensível.
Conclusão
O BME680 é um sensor extremamente versátil para projetos com Arduino UNO e ESP32. Com um único módulo é possível medir temperatura, umidade, pressão atmosférica, altitude e ainda obter informações relacionadas à qualidade do ar.
A comunicação via I2C simplifica bastante a montagem, enquanto as bibliotecas prontas tornam a programação muito acessível mesmo para iniciantes. Se você trabalha com projetos maker, automação residencial ou IoT, o BME680 certamente é um sensor que vale a pena conhecer e testar em seus próximos projetos. Para acompanhar todas as novidades da MakerHero, nos siga no Instagram.








