poniedziałek, 2 kwietnia 2018

Stacja pogody na Arduino cz. 1. Pomiar temperatury, wilgotności i ciśnienia atmosferycznego wewnątrz domu

Własna stacja pogody to dość popularne urządzenie wśród fanów Arduino, patrząc na strony typu instructables.com. Pomysł przyszedł jesienią ubiegłego roku, kiedy po włączeniu ogrzewania zaczął mi się zapychać nos :) Nie mniej jednak ugrzązłem trochę przy przeglądzie różnych czujników, które mógłbym wykorzystać, kładąc  nacisk na dokładność pomiarów i cenę czujników. Teraz, gdy już mam pewną wiedzę na ten temat, mogę przystąpić do konkretów i zbudować własną stację.
Układ prototypowy
Elementy stacji

Funkcjonalność
  • pomiar i prezentowanie parametrów powietrza na wyświetlaczu LCD z częstotliwością 1 sekundy

Opis
Sercem układu jest tym razem Arduino Nano. Dla wygody, użyłem dodatkowo shield'a, dzięki któremu łatwiej o spięcie pozostałych modułów z Nano. Wyniki będą prezentowane na 4-liniowym wyświetlaczu LCD z przejściówką w postaci modułu LCM1602. Układ będzie zasilany z portu USB (5V). Zasilanie czujnika BME280 będzie brane z pinu 5V Nano. Układ ma mierzyć parametry w warunkach pokojowych (wewnątrz domu) w określonych odstępach  czasu (1s) i prezentować je na wyświetlaczu. Układ będę uruchamiał prototypowo, aby ostatecznie bliżej jesieni zmontować coś trwalszego z własną obudową.

Schemat blokowy
Ekran terminala z danymi analogicznymi jak w przykładzie z czujnikiem BME280.

Terminal z wynikami pomiarów
Kod stacji zamieściłem w repo git'owym na bitbucket'cie w dwóch wersjach (gałęziach/branch'ach):

Komentarza wymaga biblioteka do obsługi LCD z githuba (2). Mianowicie nie radzi sobie z wyświetlaczami 4-ro liniowymi, dwie ostatnie linie są wyświetlane niepoprawnie. Konkretnie przesunięty był w nich tekst o 4 znaki w prawo. Rozwiązaniem problemu była modyfikacja funkcji setCursor() sprowadzająca się do zmiany w jednej linii:
int row_offsets[] = { 0x00, 0x40, 0x14, 0x54  };
na
int row_offsets[] = { 0x00, 0x40, 0x10, 0x50 };

Kontynuacja projektu:
Stacja pogody na Arduino cz. 2. Moduł czasu rzeczywistego i rejestrator danych na karcie SDHC

Źródła
1) Biblioteka obsługi BME280
2) Biblioteka obsługująca LCD

1 komentarz:

  1. no ok, proste,
    a jak wykonać pomiar ciśnienia względnego (ciśnienie bezwzględne odniesione do poziomu morza) ?

    OdpowiedzUsuń