BMP280 i BME280 wyglądają podobnie, mają zbliżone oznaczenia i często są sprzedawane na identycznych modułach. Dlatego na platformach sprzedażowych łatwo zamówić BME280, a w praktyce otrzymać BMP280. Różnica jest istotna: BME280 mierzy temperaturę, ciśnienie i wilgotność, a BMP280 tylko temperaturę i ciśnienie. W tym artykule porównujemy oba czujniki, pokazujemy ich typowe zastosowania oraz opisujemy, jak uruchomić BME280 z Arduino i Raspberry Pi.

BMP280 vs. BME280 - Co to jest BME280?

BME280 to cyfrowy czujnik środowiskowy firmy Bosch Sensortec. Łączy w jednej obudowie pomiar ciśnienia barometrycznego, temperatury oraz wilgotności względnej. Dzięki małym wymiarom, niskiemu poborowi mocy i interfejsom I2C/SPI dobrze sprawdza się w stacjach pogodowych, urządzeniach IoT, elektronice ubieralnej oraz systemach automatyki budynkowej. Układ jest fabrycznie kalibrowany, a dane kompensacyjne zapisane w pamięci czujnika pozwalają uzyskać stabilne odczyty bez dodatkowej kalibracji po stronie użytkownika.

Specyfikacja BME280

Specyfikacja czujnika BME280

BMP280 vs. BME280 - Aplikacje

BME280 jest używany wszędzie tam, gdzie projekt wymaga jednoczesnego pomiaru warunków otoczenia: temperatury, wilgotności i ciśnienia. Typowe zastosowania obejmują:

sterowanie automatyką domową i systemami HVAC;

monitorowanie warunków w pomieszczeniach, szafach sterowniczych i obudowach elektroniki;

wspomaganie nawigacji GPS przez szacowanie wysokości na podstawie ciśnienia;

proste stacje pogodowe oraz rejestratory danych środowiskowych;

urządzenia przenośne i projekty IoT zasilane bateryjnie;

każdy projekt, w którym sam pomiar ciśnienia nie wystarcza i potrzebna jest również informacja o wilgotności.

BMP280 vs. BME280 - Czym jest BMP280?

Moduły elektroniczne z czujnikami środowiskowymi

Elementy elektroniczne do budowy prototypów i urządzeń pomiarowych.

BMP280 to cyfrowy czujnik ciśnienia barometrycznego z pomiarem temperatury. W przeciwieństwie do BME280 nie mierzy wilgotności względnej. W wielu projektach to jednak wystarcza: jeżeli urządzenie ma obliczać wysokość, rejestrować zmiany pogody albo kompensować pomiar na podstawie temperatury, BMP280 będzie prostszym i zwykle tańszym wyborem. Układ obsługuje I2C oraz SPI, ma niski pobór mocy i dobrze nadaje się do elektroniki przenośnej, modułów GPS, zegarków sportowych czy niewielkich rejestratorów danych.

BMP280 vs. BME280 - Specyfikacja BMP280

Specyfikacja czujnika BMP280

Czujniki i moduły pomiarowe stosowane w elektronice użytkowej oraz przemysłowej.

BMP280 vs. BME280 vs. BME680: Jakie są ich różnice?

Najprostszy podział wygląda tak: BMP280 mierzy ciśnienie i temperaturę, BME280 mierzy ciśnienie, temperaturę i wilgotność, a BME680 dodaje jeszcze czujnik gazów oparty na warstwie MOX. Wszystkie trzy układy są przeznaczone do pomiarów środowiskowych, ale nie są zamiennikami jeden do jednego w każdym projekcie.

BME280 można traktować jako wariant rozszerzony względem BMP280, ponieważ dodaje pomiar wilgotności. Parametry ciśnienia i temperatury są zbliżone, natomiast dodatkowy kanał wilgotności podnosi cenę modułu. Jeżeli projekt ma mierzyć komfort w pomieszczeniu, warunki przechowywania albo punkt rosy, wybór BME280 ma sens. Jeżeli potrzebujesz tylko ciśnienia atmosferycznego lub wysokości, BMP280 zwykle będzie wystarczający.

W praktyce warto też uważać na płytki sprzedawane jako BME280. Odczyt identyfikatora układu w programie lub fizyczne oznaczenie na obudowie pozwala potwierdzić, czy moduł rzeczywiście zawiera BME280, czy tańszy BMP280 bez pomiaru wilgotności.

BME680 mierzy temperaturę, ciśnienie, wilgotność oraz rezystancję czujnika gazów. Ten ostatni kanał reaguje na lotne związki organiczne i może być używany do szacowania jakości powietrza, ale nie identyfikuje jednoznacznie konkretnych gazów. Nie należy więc traktować go jak selektywnego analizatora chemicznego; to raczej czujnik trendu dla aplikacji IAQ.

BME680 jest zwykle najdroższy z tej trójki, ponieważ łączy cztery funkcje pomiarowe w jednym układzie. Wybór powinien wynikać z wymagań projektu, a nie tylko z liczby parametrów w specyfikacji.

BME280 z Arduino

Platforma Arduino z podłączonymi modułami

Platforma Arduino pozwala szybko sprawdzić działanie czujnika BME280.

BME280 można łatwo podłączyć do Arduino, Seeeduino, BeagleBone, Raspberry Pi i wielu innych mikrokontrolerów. Moduły zwykle wyprowadzają linie I2C, czasem również SPI, a sam czujnik jest fabrycznie skalibrowany. Dzięki temu pierwsze pomiary temperatury, wilgotności, ciśnienia oraz szacowanej wysokości można uzyskać bez dodatkowych układów analogowych.

Chcesz się dowiedzieć

Arduino lub Seeeduino zgodne z wybranym przykładem.

Moduł Grove BME280 albo inna płytka z układem Bosch BME280.

Grove Base Shield V2, jeżeli korzystasz z modułu w ekosystemie Grove.

Przewody połączeniowe.

Płytka stykowa do prototypowania, jeśli podłączasz moduł bezpośrednio.

Podłączenie i uruchomienie

Pierwszy krok

Podłącz moduł Grove BME280 do portu I2C na Grove Base Shield V2, a następnie umieść nakładkę na płytce Seeeduino lub Arduino zgodnej z tym złączem.

Jeżeli nie używasz Grove Base Shield, połącz moduł bezpośrednio: zasilanie do 3,3 V lub 5 V zgodnie ze specyfikacją płytki, GND do masy, SDA do linii danych I2C, a SCL do linii zegara I2C. W przypadku samego BME280 trzeba pamiętać, że układ pracuje z niskimi napięciami; bezpieczne poziomy zależą od zastosowanego modułu.

Schemat podłączenia modułu BME280 do płytki mikrokontrolera

Drugi Krok

Podłącz płytkę do komputera przewodem USB. Sprawdź, czy środowisko Arduino IDE widzi właściwy port oraz właściwy model płytki.

Trzeci krok

Zainstaluj potrzebne biblioteki. Najczęściej używa się Adafruit BME280 Library razem z Adafruit Unified Sensor oraz standardową biblioteką Wire dla I2C. Biblioteki można dodać z poziomu menedżera bibliotek w Arduino IDE albo pobrać z repozytoriów GitHub producenta.

Po instalacji uruchom przykładowy szkic dla BME280 i sprawdź adres I2C modułu. W zależności od płytki może to być 0x76 albo 0x77.

Krok czwarty

Czujniki ciśnienia i temperatury w instalacji technicznej

Czujniki ciśnienia i temperatury mogą pracować zarówno w prototypach, jak i w gotowych systemach automatyki.

Utwórz nowy szkic Arduino albo otwórz przykład zainstalowanej biblioteki. W Arduino IDE znajdziesz go zwykle w menu przykładów biblioteki BME280. Sprawdź, czy w kodzie wybrano I2C lub SPI zgodnie z rzeczywistym podłączeniem modułu.

Plik -> Przykłady -> Adafruit BME280 Library -> bme280test

Wgraj szkic do płytki i poczekaj na zakończenie kompilacji oraz programowania.

Przykładowy kod do obsługi BME280 w Arduino IDE

Piąty Krok

Otwórz monitor portu szeregowego z prędkością ustawioną w przykładzie. Powinny pojawić się odczyty temperatury, ciśnienia, wilgotności oraz wysokości obliczanej na podstawie ciśnienia odniesienia.

Jeżeli wartości się nie pojawiają, sprawdź adres I2C, zasilanie modułu, połączenia SDA/SCL i zgodność biblioteki z używaną płytką. W kilku krokach można w ten sposób potwierdzić, że moduł Grove BME280 lub inna płytka z BME280 działa poprawnie.

Jak kod działa

Płytka prototypowa używana do testowania czujnika

Płytka prototypowa ułatwia szybkie sprawdzenie połączeń przed zaprojektowaniem docelowego PCB.

Biblioteki

Na początku szkicu dołączane są biblioteki potrzebne do komunikacji i przeliczania danych: Adafruit_BME280, Adafruit_Sensor oraz Wire, gdy używany jest interfejs I2C. Biblioteka odczytuje dane kalibracyjne zapisane w czujniku i na ich podstawie oblicza wartości w jednostkach użytecznych dla programu.

Fragment przykładowego programu dla BME280

Ciśnienie na poziomie morza

Czujniki temperatury i ciśnienia w instalacji z zaworami

Czujniki temperatury i ciśnienia są często elementem większych systemów pomiarowych.

Zmienna SEALEVELPRESSURE_HPA określa ciśnienie odniesienia na poziomie morza. Biblioteka wykorzystuje ją do szacowania wysokości. Jeżeli zależy Ci na sensownym wyniku wysokości, wpisz aktualne lokalne ciśnienie zredukowane do poziomu morza, a nie stałą wartość przypadkową z przykładu.

Definicja ciśnienia odniesienia w kodzie BME280

Łączność SPI

Funkcja begin() inicjuje czujnik i sprawdza jego identyfikator. W trybie I2C przekazuje się zwykle adres modułu, na przykład 0x76 lub 0x77. Przy SPI obiekt biblioteki tworzy się inaczej, podając piny CS oraz linie magistrali zgodnie z przykładem biblioteki. Jeżeli inicjalizacja się nie powiedzie, program powinien zatrzymać się albo zgłosić błąd, bo dalsze odczyty nie będą wiarygodne.

Konfiguracja komunikacji z czujnikiem BME280

I2C

W większości przykładów używany jest I2C, bo wymaga tylko dwóch linii sygnałowych i pozwala podłączyć kilka urządzeń do jednej magistrali. Jeżeli przechodzisz na SPI, usuń lub zakomentuj konfigurację I2C i utwórz obiekt BME280 zgodnie z wariantem SPI w dokumentacji biblioteki.

W kodzie obiekt Adafruit_BME280 jest często nazywany po prostu bme. To przez ten obiekt program wywołuje funkcje odczytu temperatury, ciśnienia, wilgotności i wysokości.

Obiekt biblioteki Adafruit_BME280 w programie Arduino

Drukuj wartości

W pętli loop() program cyklicznie wywołuje funkcje odczytu i wysyła wyniki do monitora szeregowego. Typowy przykład drukuje temperaturę w stopniach Celsjusza, ciśnienie w hPa, przybliżoną wysokość w metrach oraz wilgotność względną w procentach.

Odczyt wartości z BME280 w monitorze szeregowym

Ustawienia opcjonalne

Po rozpoczęciu komunikacji można zmienić nadpróbkowanie, filtrację i tryb pracy czujnika. Dla stacji pogodowej ważniejsza jest stabilność i niski pobór mocy niż bardzo szybkie próbkowanie, dlatego ustawienia warto dobrać do realnego zastosowania, a nie zostawiać je bezrefleksyjnie z przykładu.

Ustawienia pracy czujnika BME280
Przykładowe wyniki pomiarów z czujnika BME280

Po poprawnej konfiguracji obiekt bme zwraca najważniejsze dane środowiskowe w przewidywalnym formacie:

 – przybliżoną wysokość w metrach, obliczaną z ciśnienia i wartości odniesienia;

 – wilgotność względną w procentach;

 – temperaturę w stopniach Celsjusza;

 – ciśnienie atmosferyczne, najczęściej prezentowane w hPa.

Jak zbudować własną stację meteorologiczną

Przy projektowaniu stacji meteorologicznej dobór czujników jest kompromisem między dokładnością, ceną, dostępnością, poborem mocy i łatwością integracji z oprogramowaniem. BME280 dobrze sprawdza się jako podstawowy czujnik warunków atmosferycznych, ale pełna stacja może wymagać także pomiaru temperatury gruntu, opadów, kierunku i prędkości wiatru oraz zapisu danych w bazie.

Domowa stacja meteorologiczna z cyfrowym czujnikiem temperatury i wilgotności

Domowa stacja meteorologiczna może łączyć kilka różnych czujników środowiskowych.

BMP280 vs. BME280 - Chcesz się dowiedzieć

Cyfrowa sonda temperatury DS18B20.

Czujnik wilgotności, temperatury i ciśnienia BME280.

Raspberry Pi z wbudowanym WiFi albo z adapterem bezprzewodowym.

Przewody połączeniowe i płytka stykowa.

Płytka z zaciskami śrubowymi lub własna PCB do uporządkowania połączeń.

Dwa rezystory 4,7 kΩ, typowo jako rezystory podciągające dla magistrali 1-Wire lub I2C, zależnie od modułów.

Deszczomierz, wiatrowskaz i anemometr, jeżeli stacja ma mierzyć opady oraz wiatr.

Osłona radiacyjna chroniąca czujnik przed bezpośrednim słońcem i deszczem.

Przetwornik analogowo-cyfrowy MCP3008, gdy wybrane czujniki mają wyjścia analogowe.

Dwie płytki RJ11, opcjonalnie do wygodnego podłączenia czujników pogodowych.

BMP280 vs. BME280 - Oprogramowanie

Serwer bazy danych MariaDB albo inna baza do zapisu pomiarów.

Biblioteka Pythona do obsługi BME280.

Raspberry Pi OS z Pythonem 3. W praktyce wystarczy otworzyć terminal, zainstalować zależności i pobrać przykładowy kod z repozytorium projektu lub biblioteki, której używasz.

Instalacja biblioteki BME280 w terminalu Raspberry Pi

Dodatkowe zasoby dla stacji pogodowych

Taśma izolacyjna.

Dwa 2-pinowe złącza męskie.

Przewód jednożyłowy 22 AWG.

Podstawowe narzędzia prototypowe: śrubokręty, obcinaczki boczne i szczypce.

16-pinowe gniazdo DIL/DIP pod układ scalony.

Adafruit Perma-Proto HAT lub podobna płytka prototypowa dla Raspberry Pi.

Dostęp do druku 3D, jeśli chcesz wykonać własne uchwyty lub obudowę.

Podłączenie czujnika wilgotności, temperatury i ciśnienia

Zacznij od podłączenia BME280 do Raspberry Pi. Niektóre płytki mają dodatkowe piny, takie jak CSB i SDO, potrzebne do wyboru interfejsu lub adresu. Przy I2C najważniejsze są zasilanie, masa, SDA i SCL. Sprawdź dokumentację modułu, bo kolejność pinów nie jest uniwersalna.

Podłączenie czujnika BME280 do Raspberry Pi

Otwórz IDLE, czyli zintegrowane środowisko programistyczne Pythona, albo użyj dowolnego edytora kodu.

W menu Raspberry Pi wybierz dział programowania i uruchom Python 3 (IDLE). Ten wariant pozwoli pisać i uruchamiać kod zgodny ze współczesnymi bibliotekami.

Utwórz nowy plik Pythona i zapisz go jako /pi/weather-station/bme280_sensor.py.

Następnie dodaj kod odczytujący dane z BME280. Upewnij się, że adres I2C w programie odpowiada adresowi wykrytemu przez Raspberry Pi.

Kod Pythona do odczytu danych z BME280

Uruchom program i obserwuj wyniki. Delikatne ogrzanie modułu dłonią powinno podnieść temperaturę, a dmuchnięcie w stronę czujnika zwykle zwiększy odczyt wilgotności. Program można przerwać w powłoce Pythona skrótem Ctrl+C.

Gdy odczyty są stabilne i zgodne z oczekiwaniami, warto uporządkować program tak, aby można go było później wykorzystać w większej aplikacji stacji pogodowej.

Zamiast nieskończonej pętli while True przygotuj funkcję read_all(), która zwraca wilgotność, ciśnienie i temperaturę w ustalonej kolejności. Dzięki temu ten sam kod łatwiej wywołać z programu zapisującego dane do bazy.

BMP280 vs. BME280 - Temperatura gruntu

Podłączenie czujnika

Krok pierwszy

Do pomiaru temperatury gruntu można użyć sondy DS18B20. Najpierw zbuduj prototyp na płytce stykowej i dopiero później przenieś połączenia na zaciski śrubowe lub docelową płytkę. Typowa sonda DS18B20 ma trzy przewody: masę, zasilanie i linię danych. Przy Raspberry Pi zwykle pracuje z napięciem 3,3 V, a linia danych wymaga rezystora podciągającego.

BMP280 vs. BME280 - Krok drugi

Otwórz plik /boot/config.txt.

Na końcu pliku dodaj wpis włączający obsługę 1-Wire na wybranym pinie GPIO. Dokładna linia zależy od konfiguracji Raspberry Pi OS i użytego pinu.

BMP280 vs. BME280 - krok trzeci

Otwórz plik /etc/modules.

Jeżeli Twoja wersja systemu tego wymaga, dodaj moduły jądra odpowiedzialne za 1-Wire i termometry DS18B20. W nowszych konfiguracjach część ustawień może być obsługiwana przez Device Tree.

BMP280 vs. BME280 - Krok czwarty

Uruchom ponownie Raspberry Pi, aby system wczytał zmienioną konfigurację.

BMP280 vs. BME280 - Krok Piąty

W IDLE otwórz plik /pi/weather-station/ds18b20_therm.py i uruchom go. W oknie powłoki Pythona powinny pojawić się odczyty temperatury z sondy.

BMP280 vs. BME280 - Krok 6

Powtórz test, wkładając sondę do pojemnika z zimną wodą. Odczyt powinien spaść, co potwierdzi, że program reaguje na zmianę temperatury.

BMP280 vs. BME280--rozwiązywanie problemów

Jeżeli Raspberry Pi nie widzi sondy DS18B20, sprawdź kolejność przewodów, rezystor podciągający, zasilanie oraz jakość połączeń w zacisku śrubowym. Zweryfikuj również konfigurację w /boot/config.txt i /etc/modules, szczególnie wtedy, gdy korzystasz ze starszego obrazu systemu lub niestandardowego pinu GPIO.

Podsumowanie

BMP280 i BME280 są blisko spokrewnione, ale nie rozwiązują dokładnie tego samego problemu. BMP280 wybierz wtedy, gdy potrzebujesz pomiaru ciśnienia, temperatury i ewentualnie szacowania wysokości. BME280 jest lepszy, gdy projekt ma monitorować warunki otoczenia szerzej, zwłaszcza wilgotność. BME680 warto rozważyć dopiero wtedy, gdy potrzebny jest dodatkowy wskaźnik jakości powietrza oparty na reakcji czujnika gazów.

Przy przejściu z prototypu na produkcję zwróć uwagę nie tylko na kod, ale też na zasilanie, poziomy logiczne, rozmieszczenie czujnika na PCB i wpływ źródeł ciepła na pomiar. OurPCB może wykonać prototypowe i seryjne płytki z takimi modułami czujnikowymi, a także pomóc w montażu komponentów SMD i THT. Po przesłaniu plików Gerber oraz BOM obowiązuje zasada: wycena w 12 godzin roboczych.