[STM32] BMP280/BME280 biblioteka dla STM32

BMP280 to cyfrowy czujnik ciśnienia i temperatury, a w wersji BME280 również wilgotności wyprodukowany przez firmę Bosch. Ten malutki czujnik został wyposażony w dwa interfejsy komunikacyjne I2C oraz SPI. Nie będę rozpisywał się o samym czujniku powiem tylko, że jest dość dokładny, energooszczędny i mały. Więcej informacji znajdziecie w nocie katalogowej.

moduł z czujnikiem BMP280

moduł z czujnikiem BMP280

Na wstępie warto powiedzieć, że Bosch udostępnia sterownik do obsługi tego czujnika(link). Na początku próbowałem ją wykorzystać jednak miałem problemy z jej uruchomieniem (jak się później okazało był to problem z I2C w STM32f103). Nie byłem pewien czy czujnik w ogóle działa(przypadkiem podłączyłem go pod 5V) więc przetestowałem go szybko na ESP8266 używając esp-open-rtos i biblioteki do niego dołączonej. Czujnik zadziałał od ręki, a sama biblioteka okazała się dużo przyjaźniejsza od udostępnionej przez Bosch dlatego przeportowałem ją na mikrokontrolery STM32.

BMP280 adres I2C

Czujniki BMP280 jak i BME280 mają możliwość wyboru adresu. Jeśli stan pinu SDO będzie wysoki to adres czujnika to 0x77, jeśli niski to 0x76. Jeśli pin SDO będzie „pływał” to adres czujnika pozostanie niezdefiniowany co może powodować problemy z działaniem. W modułach takich jak na zdjęciu obok pin SDO jest podciągnięty rezystorem do masy więc jego adres to 0x76.

Biblioteka

Podczas inicjalizacji czujnika musimy podać jego adres , nie musimy się za to martwić wersją czujnika. Program na podstawie odczytanego chip-id wie czy używamy wersji BMP czy BME. Poniżej fragment przykładowego programu odpowiedzialny za inicjalizację czujnika:

oraz fragment odpowiedzialny za wykonanie pomiaru:

Przykładowe działanie

Kod

Bibliotekę jak i przykładowy program dla stm32f0 przygotowany za pomocą CubeMX i Aollic TrueSTUDIO znajdziecie na moim githubie:

Biblioteka  – BMP280

Przykładowy program – BMP280_Example

3 komentarze do “[STM32] BMP280/BME280 biblioteka dla STM32

  1. Witam serdecznie. Z ciekawością przeczytałem ten artykół, niestety jest on na Discovery a ja mam Nucleo. Same błędy wychodzą. Jest możliwość podpowiedzenia lub podania linka do przerobienia kodu pod Nicleo?

    • Musisz zacząć od wygenerowania odpowiedniego projektu w CubeMX, na portalu Forbot.pl są dwa kursy STM32 i biblioteki HAL które powinny Ci wszystko wyjaśnić. Później powinno pójść już z górki.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *