BME280 czujnik wilgotności ciśnienia i temperatury – podpięcie do Arduino

BME280 tutorial

Czujnik BOSCH BME280 to kompaktowy moduł 3w1. Dzięki niemu możemy z powodzeniem zbudować całkiem rozbudowaną i dokładną stację pogody, albo dokonywać pomiarów otoczenia na potrzeby kompensacji warunków pogodowych dla innych naszych projektów. Moduł ten potrzebuje zasilania 3.3V lub 5V i komunikuje się za pomocą magistrali I2C oraz SPI w zależności od wersji. Na płytce mogą znaleźć się również pola lutownicze dające możliwość zmiany adresacji modułu, tak by można było wykorzystać ich więcej niż jeden w tym samym urządzeniu. BME280 to czujnik, który jest już skalibrowany i bardzo prosty w użyciu. Zapraszam do lektury.

MODUŁ Z TEGO PORADNIKA MOŻECIE KUPIĆ KLIKAJĄC –> Czujnik BME280

profesjonalny sklep z elektroniką Elektroweb.pl

Parametry pomiarów

Z karty katalogowej można wyczytać, że pobór prądu jest na bardzo niskim poziomie i wynosi 3.6uA przy odczycie wszystkich parametrów raz na 1 sekundę. Parametry możemy odczytać z następującą dokładnością:

  • wilgotność z dokładnością +/- 3% RH
  • rozdzielczość pomiaru wilgotności to 0.008 %RH
  • zakres pomiaru ciśnienia od 300 do 1100hPa
  • rozdzielczość pomiaru ciśnienia 0.18Pa
  • ciśnienie odczytamy z dokładnością +/- 1hPa
  • zakres pomiaru temperatury od -40°C do +80°C
  • rozdzielczość pomiaru temperatury 0.01°C
  • temperatura z dokładnością średnią w zakresie 0 do 60°C to +/- 1°C

Budowa modułu BME280

budowa modułu BME280

Jak widać na powyższym obrazku najważniejszymi elementami na płytce są bardzo malutki czujnik, regulatory napięcia zasilania oraz poziomów logicznych dzięki czemu możemy podpiąć moduł zarówno pod 3.3V jaki Arduino dające 5V bez obawy o uszkodzenie.

Zmiana adresu I2C w BME280

Jak widać na powyższym obrazku moduł posiada pady do zmiany adresacji magistrali I2C. Domyślnie moduł ma połączone pady środkowy z lewym, aby zmienić adres należy nożykiem przeciąć ścieżkę i zlutować połączenie z padem po przeciwnej stronie. Dzięki temu możemy zmienić adres z 0x76HEX na 0x77HEX.

zworki I2C

Jak podłączyć BME280 do Arduino?

Wszystko zależy, do którego Arduino ; ) zasada jest taka, że zwracamy uwagę na piny. Poniżej prezentujemy jak podłączyć czujnik do Arduino UNO jeśli korzystacie z innego mikrokontrolera należy sprawdzić pinout płytki i połączyć odpowiednio piny SDA z SDA i SCL z SCL i to cała filozofia.

Podpinając BME280 do Arduino UNO należy połączyć:

  • Arduino 5V <–> VIN BME280
  • Arduino GND <–> GND BME280
  • Arduino A4 <–> SDA BME280
  • Arduino A5 <–> SCL BME280

pozostałe piny jeżeli występują w innych wersjach płytki niż omawiana: SCB i SDO są do podpięcia magistralą SPI i zostawiamy je w spokoju, my użyjemy komunikacji I2C.

schemat podpięcia pinów BME280 do Arduino UNO

Instalacja bibliotek i kod w ArduinoIDE

Po tym jak podłączymy prawidłowo nasz czujnik, przychodzi czas na uruchomienie ArduinoIDE i doinstalowanie biblioteki od Adafruit, która w znacznym stopniu uprości sprawę odczytu wszystkich danych z naszego BME280.

W celu instalacji biblioteki przechodzimy do Szkic -> Dołącz Bibliotekę -> Zarządzaj Bibliotekami

Kolejno wpisujemy w wyszukaj BME i instalujemy bibliotekę od Adafruit w najnowszej wersji. Jeśli wyskoczy nam komunikat, że wymagane są inne biblioteki do poprawnego działania zgadzamy się i pozwalamy doinstalować niezbędne składniki.

instalacja biblioteki do BME280

Teraz zabieramy się do pisania kodu. Wszystkie wyjaśnienia funkcji znajdziecie w komentarzach w kodzie a na końcu znajdzie się krótkie podsumowanie.

//dołączamy niezbędne biblioteki wire.h od komunikacji I2C reszta od obsługi czuników
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

#define SEALEVELPRESSURE_HPA (1013.25) //podajemy ciśnienie na poziomie morza, jest to domyśla wartość, chcąc otrzymać dokładniejszy wynik wysokości powinniśmy wpisać wartość najlepszą dla naszej kolalizacji.

Adafruit_BME280 bme; //tworzymy obiekt bme, teraz przez niego odwołamy się do fukcji zawartych w bibliotekach

void setup() {
	Serial.begin(9600);
//sprawdzamy poniżej czy mamy komunikację z czujnikiem na adresie 0x76
	if (!bme.begin(0x76)) {
		Serial.println("Sprawdź połączenie nie znajduje modułu");
		while (1);
	} //jeśli nie uda nam się połączyć można sprawdzić adres podłączonych modułów przez I2C scanner
}

void loop() {

//w pętli wyświetlamy w serial monitorze odczyty:
	Serial.print("Temperatura = ");
	Serial.print(bme.readTemperature());
	Serial.println("*C");

	Serial.print("Ciśnienie = ");
	Serial.print(bme.readPressure() / 100.0F);
	Serial.println("hPa");

	Serial.print("Przybliżona Wysokość = ");
	Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
	Serial.println("m");

	Serial.print("Wilgotność = ");
	Serial.print(bme.readHumidity());
	Serial.println("%");

	Serial.println();
	delay(1000);
}

Dzięki bibliotece Adafruit odczytanie wartości z czujnika jest banalne, posługujemy się funkcjami:

  • bme.readTemperature() – funkcja podaje temperaturę w stopniach Celcjusza
  • bme.readHumidity()  – funkcja podaję wilgotność bezwzględną
  • bme.readPressure() – funkcja podaje odczyt ciśnienia w hektopascalach co równa się milibarom
  • bme.readAltitude(SEALEVELPRESSURE_HPA) – funkcja podaje przybliżoną wysokość nad poziomem morza

Wypisujemy odczyty w naszym serial monitorze. Odczyty wykonywane są co 1 sekundę. Jeśli mielibyśmy duże problemy z połączeniem z modułem – możliwe, że Twoja wersja posiada jakiś inny niż standardowy adres I2C wtedy należy wykorzystać skaner I2C by znaleźć prawidłowy adres naszego czujnika.

Zachęcam wszystkich do polubienia naszego profilu na facebooku -> ELEKTROWEB FACEBOOK

Dzięki temu dowiesz się jako pierwszy o nowych artykułach na blogu. Wszystkie uwagi możecie zostawić w komentarzu pod wpisem. Dzięki i do następnego!

Opisywany moduł możesz zakupić na sklepie klikając w link -> BME280 sklep

Odpowiedz

Twój adres e-mail nie zostanie opublikowany