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 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
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:
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:
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