[PROJEKT] Stacja pogodowa na Arduino – moduł z czujnikiem BME280 oraz wyświetlacz 2×16 znaków

Teraz można zaprogramować płytkę Arduino. Pierwszym krokiem jest instalacja niezbędnych bibliotek. Należy pobrać bibliotekę do obsługi wyświetlacza 2×16 znaków z podświetleniem RGB (dostępna jest ona na portalu oraz na dole artykułu, w sekcji „do pobrania”) oraz bibliotekę do obsługi czujnika BME280 (dostępna na portalu Github, odpowiednio pod linkiem i linkiem, a także na na dole artykułu, w sekcji „do pobrania”). Instalacja biblioteki odbywa się w sposób standardowy – w programie Arduino IDE należy otworzyć menu Szkic >> Dołącz bibliotekę >> Dołącz bibliotekę .ZIP i wybrać pobrane biblioteki znajdujące się na dysku twardym.

Po instalacji bibliotek można przystąpić do napisania programu, który odczyta informacje o temperaturze, wilgotności oraz ciśnieniu z układu BME280, a następnie wyświetli wyniki pomiarów na wyświetlaczu 2×16. Pełen kod programu znajduje się w sekcji “do pobrania” na dole artykułu. Teraz przyjrzę się bliżej temu programowi.

Pierwszym krokiem jest załączenie bibliotek do obsługi podłączonych modułów:

Następnie zadeklarowano zmienne oraz definicje:

Zadeklarowane zostały zmienne odpowiedzialne za kolor podświetlenia wyświetlacza 2×16 znaków (r, g, b), zmienne, w których będą przechowywane wyniki pomiarów z czujnika BME280 (temp – temperatura, pa – ciśnienie, hum – wilgotność) oraz zmienna alt, gdzie przechowywana jest wysokość nad poziomem morza obliczona na podstawie ciśnienia. Do tego celu potrzebna jest informacja o aktualnym ciśnieniu na poziomie morza, można ją przyjąć na poziomie około 1009.4 hPa. Należy ją następnie umieścić w definicji SEA_LEVEL_PRESSURE.

Następnie należy zainicjować działanie bibliotek dla obu modułów (z czujnikiem BME280 oraz z wyświetlaczem 2×16 znaków)

W funkcji konfiguracyjnej setup() ustawiono prędkość transmisji portu szeregowego – odczytane dane z czujnika będą również przesyłane w ten sposób. Sprawdzana jest także komunikacja z układem BME280 (domyślnie układ posiada adres 0x77), jeżeli moduł nie zostanie wykryty, na port szeregowy wysyłany jest komunikat. Inicjowane jest też działanie wyświetlacza.

Na początku pętli głównej programu do zmiennych (temp, pa, hum, alt) zapisywane są wartości zmierzone przez czujnik BME280.

Następnie wartości te przesyłane są przez port szeregowy, co umożliwia ich odczyt za pomocą monitora portu szeregowego.

Po wgraniu programu na płytkę oraz otwarciu monitora portu szeregowego zobaczymy następujący widok:

Rys 6. Wyświetlone informacje o zmierzonej temperaturze, ciśnieniu, wilgotności oraz wysokości n.p.m w monitorze portu szeregowego

W dalszej części programu dane są wypisywane na wyświetlacz LCD. Ze względu na wielkość wyświetlacza, najpierw na ekranie jest wyświetlana zmierzona temperatura oraz ciśnienie. Zmierzoną wartość ciśnienia można wyskalować w hektopaskalach (hPa) dzieląc wartość przez 100. Wyświetlacz został podświetlony na kolor niebieski, ale dzięki możliwości wyboru kolory podświetlania w module, można uzależnić jego kolor od zmierzonej wartości np. temperatury.

Następnie na wyświetlaczu zostanie wyświetlane zmierzona wartość wilgotności oraz obliczona wysokość nad poziomem morza. Podświetlenie wyświetlacza tym razem zostało ustawione na kolor zielony. Oba ekrany są wyświetlane kolejno przez 7 sekund, następnie pętla wykonuje się od początku.

Działanie programu zostało przedstawione na wideo poniżej:

Do pobrania

O autorze