BME680 – czujnik gazu, ciśnienia, wilgotności oraz temperatury

Stacje pogodowe to jeden z najczęściej wybieranych przez hobbystów tematów projektów. Urządzenia mierzące parametry środowiskowe, takie jak temperatura, wilgotność powietrza, ciśnienie atmosferyczne czy natężenie światła są bardzo przydatne, a ich projektowanie może być również pouczające. W takich projektach można zaimplementować transfer danych przez Wi-Fi lub Bluetooth, wypisywanie danych na różnego typu wyświetlacze, a także wizualizację danych oraz podgląd online.

W różnych stacjach stosowane są różnego typu czujniki. Można samodzielnie dobrać sensory odpowiednich wielkości środowiskowych w zależności od pomysłu na projekt oraz wymaganych parametrów. Dostępne są także płytki rozszerzające zawierające zestaw komponentów dobranych specjalnie pod kątem stacji pogodowych. Taką płytką jest na przykład KA-Nucleo-Weather, kompatybilna z platformami ST-Nucleo oraz Arduino, zawierająca czujniki ciśnienia (LP331), wilgotności (HTS221), temperatury (STLM75) oraz sensor natężenia oświetlenia (TSL25721).

Ale możliwe jest też inne podejście. Można wykorzystać jeden niewielki układ scalony zawierający wszystkie niezbędne czujniki. Pozwala to na znaczącą miniaturyzację projektu oraz uproszczenie procesu tworzenia kodu. Chyba najpopularniejszym tego typu modułem stosowanym w stacjach pogodowych jest czujnik BME280 firmy Bosch Sensortec. Jest to scalony sensor temperatury, ciśnienia atmosferycznego oraz wilgotności powietrza. Charakteryzuje się także niewielkimi rozmiarami, jedynie 2,5 x 2,5 mm, a także niskim poborem prądu. Układ zdobył sobie sporą popularność, a producenci modułów wykorzystując to wprowadzając na rynek niewielkie moduły oparte na tym czujniku, umożliwiające łatwe podłączenie czujnika do systemu, takiego jak płytka Arduino czy Raspberry Pi.

Dokładny opis czujnika BME280 oraz projekt referencyjny na podstawie płytki ARIS Edge S3A3 można znaleźć w artykule BME280 – czujnik temperatury, wilgotności oraz ciśnienia.

Czujnik 4 w 1 – Bosch BME680

W ofercie firmy Bosch Sensortec jest jednak jeszcze jeden sensor, który spełnia potrzeby projektantów stacji pogodowych. Tym czujnikiem jest BME680. Podobnie jak BME280, oferuje on odczyt temperatury, wilgotności powietrza oraz ciśnienia atmosferycznego. Jednak ma też dodatkową funkcję, a jest nią możliwość wykrywania stężenia gazów w powietrzu. Sensor reaguje na tzw. lotne związki organiczne, takie jak aceton czy formaldehyd, obecne w farbach, lakierach, klejach itd.

Rys. 1. Czujnik BME680

W zakresie czujników temperatury, wilgotności oraz ciśnienia czujnik BME680 oferuje niemal identyczne parametry co BME280. Oznacza to, że pomiar temperatury ma zakres od -45°C do +85°C i dokładność ±1,0°C. Ciśnienie można mierzyć w zakresie od 300 do 1100 hPa z dokładnością w typowych warunkach ±0,12 hPa. Natomiast czujnik wilgotności ma zakres od 0% do 100% i dokładność ±3%.

Czujnik temperatury wbudowany w BME680 służy do kompensacji temperaturowej pomiaru. Taką opcję stosuje się w wielu czujnikach wilgotności oraz ciśnienia atmosferycznego, choć nie zawsze temperaturę można odczytać na zewnątrz czujnika.

Czujnik gazu

BME680 zawiera czujnik typu MOX (Metal-oxide), który ma za zadanie mierzyć stężenie lotnych związków organicznych w powietrzu. Pozwala ustalić jakość powietrza w pomieszczeniu

Czujnik w największym skrócie składa się z powierzchni pokrytej tlenkiem metalu, układem mierzącym konduktywność, a także podgrzewacza. Ilość związków lotnych w powietrzu jest mierzona dzięki procesowi adsorpcji molekuł tlenu w warstwie czułej. Czujnik BME680 reaguje na większość lotnych związków organicznych, które zanieczyszczają powietrze w pomieszczeniu (z wyjątkiem CO2).

Gdy sensor wchodzi w reakcję z tymi gazami, cząsteczki tlenku powodują, że konduktywność powierzchni wzrasta. Czujnik mierzy tą konduktywność i podaje ją w postaci rezystancji. Wartość ta zmienia się wraz ze stężeniem związków – wraz ze wzrostem stężenia rezystancja maleje. Warto wiedzieć, że reakcje zachodzące w sensorze, a więc również rezystancja powierzchni czułej, są zależne od różnych innych parametrów, takich jak temperatura czy wilgotność.

Sensor BME680 umożliwia Ci śledzenie ilości związków lotnych w powietrzu i porównanie wyników. W związku z tym możesz sprawdzić czy jakość powietrza rośnie czy maleje. Precyzyjne pomiary wymagają kalibracji czujnika i wyznaczenie krzywej kalibracji.

Po pierwszym uruchomieniu czujnika, producent zaleca wygrzanie elementu przez co najmniej 48 godzin. Dodatkowo, przed rozpoczęciem wiarygodnych pomiarów zalecana jest praca czujnika przez co najmniej 30 minut.

Współczynnik IAQ

Oprogramowanie firmy Bosch do czujnika udostępnia tez funkcję mierzenia jakości powietrza w formie współczynnika IAQ (Indoor Air Quality). Współczynnik przyjmuje wartości od 0 do 500, gdzie wyższa wartość oznacza wyższe stężenie gazów, a więc gorszą jakość powietrza. Dokładniejsze informacje dotyczące znaczenia wartości współczynnika można znaleźć w dokumentacji czujnika oraz w tabeli 1.

Tabela 1. Definicja współczynnika IAQ

Wartość IAQ Jakość powietrza
0 – 50 Doskonała
51 – 100 Dobra
101 – 150 Słaba
151 – 200 Niezdrowa
201 – 250 Bardzo niezdrowa
251 – 350 Szkodliwa
>351 Toksyczna

Obecnie kwalifikowanego pomiaru współczynnika IAQ można dokonać jedynie za pomocą oprogramowania BSEC zaprojektowanego przez Bosch Sensortec. Oprogramowanie już od jakiegoś czasu dostępne jest w formie biblioteki na Arduino. W formie binarnej dostępne są też na m.in. na platformy AVR, Cortex-ARM, ESP32, ESP8266, Android oraz Raspberry Pi.

Czujnik BME680 może komunikować się za pomocą interfejsów I2C oraz SPI. Charakteryzuje się niskim poborem prądu, który można jeszcze zmniejszyć dzięki pracy w trybie uśpienia (pobór prądu jedynie 0,15 µA) oraz możliwości wyłączania zbędnych funkcji układu, co pozwala uruchamiać pomiar jedynie tych wartości, które aktualnie potrzebujemy w projekcie. Czujnik może być zasilany napięciem z zakresu od 1,71 V do 3,6 V i jest dostępny w metalowej obudowie LGA o wymiarach 3,0 x 3,0 x 0,93 mm.

Do pobrania

O autorze