Jak podłączyć BMP280 I2C 5V do Arduino?

Cześć! W dzisiejszym wpisie pochylimy się nad prawidłowym podpięciem czujnika BMP280, a konkretnie wersji czujnika, który posiada wbudowany konwerter poziomów logicznych oraz stabilizator napięcia dzięki czemu toleruje napięcie zasilania 5V oraz komunikację na poziomie 5V co sprawia, że można go bez przeszkód podpiąć bezpośrednio do naszego Arduino.

Polecamy zakup modułu BMP280 i innych w naszym sklepie internetowym, oferujemy wsparcie po zakupowe dla wszyskich naszych klientów, oraz błyskawiczną dostawę!

BMP280 <- Kliknij aby zakupić w naszym sklepie

BMP280 czujnik 5V I2C

BMP280 vs BME280

Teraz szybko zapoznamy się jaka jest różnica między czujnikami BMP280 i BME280. Więc BMP280 to następca BMP180 i dzięki niemu uzyskamy dokładny pomiar ciśnienia, temperatury, określimy wysokość nad poziomem morza, a nawet sprawdzimy czy aktualnie nasz moduł pozostaje w miejscu, a może się wznosi lub opada? Dzięki tym możliwościom z powodzeniem wykorzystamy go do budowy barometru z termometrem, jako wysokościomierz, lub do budowy wariometru tanim kosztem. Wariometr to urządzenie pokazujące czy aktualnie nasza wysokość wzrasta czy maleje, jest on wykorzystywany na przykład przez paralotniarzy, którzy sprawdzają czy wpadli w prąd powietrza wznoszący czy powoli opadają i z jaką prędkością. BME280 w zasadzie potrafi wszystko to co poprzednik i dodatkowo pozwala na odczyt wilgotności – oferuje on wszystkie funkcje niezbędne do stacji meteo zamknięte na płytce wielkości 2x karty microSD.

Schemat podłączenia BMP280 do Arduino

Nasz moduł transmituje dane w protokole komunikacji I2C, i łączymy go następująco z naszym Arduino UNO:

BMP280 <-> Arduino UNO

VIN <-> 5V

GND <-> GND

SCL <-> A5

SDA <-> A4

podłączenie BMP280 I2C do Arduino – schemat

Adres naszego modułu BMP280

Przy łączeniu urządzeń przez magistralę I2C kluczowe jest znanie ich adresu. Moduł sprzedawany aktualnie w naszym sklepie posiada adres: 0x76, ale równie popularne są z adresem 0x77. Żeby nie błądzić po omacku wykorzystamy skaner I2C preinstalowany w naszym środowisku I2C jako przykład w bibliotece Wire.

Zatem upewniamy się, że wybraliśmy prawidłowy port gdzie podłączone jest nasze Arduino, odpowiednią płytkę i że połączyliśmy BMP280 według schematu, a następnie wchodzimy w: PLIK -> Przykłady -> Wire -> I2C_scanner

I wgrywamy do Arduino gotowy przykład. Teraz pozostaje nam sprawdzić w monitorze portu adres podpiętego modułu.

W moim przypadku adres BMP280 to 0x76 i wygląda to tak:

wyszukiwanie adresu przez I2C scanner

Po tym jak ustaliliśmy już właściwy adres magistrali I2C musimy pobrać bibliotekę ułatwiającą nam odczyt parametrów. Wchodzimy w Narzędzia -> Zarządzaj Bibliotekami w oknie wyszukiwarki wpisujemy BMP280 i instalujemy najnowszą wersje biblioteki od Adafruit jak na screenie poniżej 1 od góry:

Jaka biblioteka do obsługi BMP280 I2C 5V

Po poprawnej instalacji bierzemy się za pisanie kodu, który wyświetli nam w monitorze portu szeregowego aktualną temperaturę, ciśnienie oraz wysokość na poziomem morza.

BMP280 wyświetla temperaturę w rozdzielczości do 0.01°C i posiada dokładność +/- 1°C

Jeśli chodzi o ciśnienie to mamy tu dokładność pomiaru do 1hPa.

Przykładowy kod Arduino dla BMP280

Wszystkie niezbędna objaśnienia pojawią się jako komentarze w kodzie dla konkretnej linijki. Pytania można zadawać w komentarzach pod tym artykułem.

/*
 * Interfacing Arduino with BMP280 temperature and pressure sensor.
 * Temperature and pressure values are displayed on 16x2 LCD.
 * This is a free software with NO WARRANTY.
 * https://simple-circuit.com/
 */

#include <Wire.h>             // dodajemy bibliotekę od komunikacji I2C
#include <Adafruit_BMP280.h>  // dodajemy bibliotekę od adafruit BMP280


Adafruit_BMP280 bmp280; // tworzymy odnośnik do biblioteki

void setup() {
  Serial.begin(9600);
  
  Serial.println(F("Arduino + BMP280"));
  
  if (!bmp280.begin(0x76)) //w nawiasie podajemy nasz adres I2C tutaj wpisałem 0x76
  {  // sprawdzamy czy czujnik odpowiada jesli nie wyświetlamy komunikat o błędzie
    Serial.println("Nie znaleziono czujnika - sprawdź połączenie!");
    while (1);
  }

}

void loop()
{
  // odczytujemy temperaturę, ciśnienie i wysokość
  float temperature = bmp280.readTemperature(); 
  float pressure    = bmp280.readPressure();    
  float altitude_   = bmp280.readAltitude(1013.25);

  
  // Wypisujemy wyniki pomiarów
  // 1:  temperatura
  Serial.print("Temperatura = ");
  Serial.print(temperature);
  Serial.println("°C");
  // 2:  ciśnienie
  Serial.print("Ciśnienie    = ");
  Serial.print(pressure/100);
  Serial.println("hPa");
  // 3:  wysokość
  Serial.print("Wysokość = ");
  Serial.print(altitude_);
  Serial.println("m");
    
  Serial.println();  // nowa linie
  delay(2000);       // czekamy 2 sekundy
  
}
// koniec programu, wykonuje się w pętli od nowa

A efekt końcowy w serial monitorze wygląda u mnie następująco.

Podsumowanie

Mam nadzieję, że ten artykuł będzie pomocny dla wszystkich, którzy mieli kłopoty z poprawnym działaniem modułu BMP280. Jak zawsze zachęcam do śledzenia naszego facebooka, gdzie umieszczamy info o nowych wpisach na blogu oraz promocjach i nowościach w sklepie internetowym.

Polub naszego fejsa tutaj-> Facebook Elektroweb

Sprawdź ofertę sklepu -> Sklep elektroniczny sosnowiec

Odpowiedz

Twój adres e-mail nie zostanie opublikowany