Data Logger Temperatury i Wilgotności: Zasada Działania i Zastosowania

W dzisiejszych czasach czujniki temperatury i wilgotności są wszechobecne, znajdując zastosowanie w niemal każdym budynku.

Od technologii, w jakich są wykonane, po zakresy pomiarowe i dokładności, istnieje wiele parametrów, które można odczytać z ich not katalogowych.

W tym artykule pokażemy, jak łatwo można uruchomić popularny i tani czujnik XY-MD02 (SHT20) oraz jak odczytywać dane z czujnika podłączonego do ESP8266 na stronie WWW.

Czujnik XY-MD02 (SHT20)

Czujnik XY-MD02 (SHT20) jest precyzyjnym czujnikiem temperatury i wilgotności, który może być stosowany zarówno w środowiskach przemysłowych, jak i w automatyce budynkowej.

Elementem wykonawczym jest czujnik SHT20.

Przeczytaj także: DataFrame i Pandas: Filtracja

Parametry czujnika XY-MD02 (SHT20):

  • Szeroki zakres napięcia zasilania: od 5 do 30V DC
  • Pomiar temperatury: od -20 do 60°C
  • Pomiar wilgotności: od 0 do 100% RH
  • Komunikacja: interfejs RS485, zgodny ze standardem MODBUS RTU

Komunikacja jest zgodna ze standardem MODBUS RTU, więc potrzebujemy wiedzieć, jaki adres ma nasz czujnik, jaki jest numer komendy odczytu rejestru i w jakich rejestrach przechowywane są interesujące nas dane.

Domyślnie prędkość transmisji ustawiona jest na 9600 BAUD, 1 bit stopu, brak bitu parzystości.

Jeśli chodzi o warstwę fizyczną potrzebujemy jedynie czterech przewodów (dwa komunikacyjne i dwa zasilające).

Konfiguracja w Programie

Pierwszym krokiem, którego nie będę tutaj opisywał jest stworzenie projektu i podłączenie przewodu do programowania.

Kolejnym krokiem będzie ustawienie zworek definiujących kierunek portu komunikacyjnego, które znajdziemy pod obudową sterownika.

Przeczytaj także: Oczyszczalnia w Nowym Targu - historia

Następnie klikamy prawym przyciskiem myszy na nasz slot 2 i dodajemy nasz czujnik (jako slave).

Kolejnym krokiem będzie stworzenie dwóch zmiennych przechowujących dane odebrane z czujnika, które wykorzystamy w naszym programie.

Cała komunikacja odbywa się w tle głównego programu cyklicznie.

Przy zmiennej „Temperatura” ustawiamy typ INT, register 1, Read function 0x04, Write function No, liczba rejestrów ustawiamy na 1 a pozostałe parametry zostają domyślnie.

Dalej przechodzimy do okna naszego programu i jedyne co pozostaje nam zrobić to odczytać zmienną, podzielić ją przez 10 i wyświetlić na wyświetlaczu LCD.

Przeczytaj także: Zalecenia dotyczące przechowywania zdjęć

Ostatnim krokiem jest konfiguracja wyświetlacza w „Display managerze”.

Odczyt Danych z Czujnika Podłączonego do ESP8266 na Stronie WWW

Spore zainteresowanie społeczeństwa IoT (Internet of Things - Internet Rzeczy) nie ominęło również producentów mikrokontrolerów, którzy coraz częściej dodają do swoich procesorów moduły obsługujące bezprzewodowe technologie komunikacyjne, takie jak Bluetooth czy Wi-Fi.

W efekcie otrzymaliśmy płytki rozwojowe, takie jak Arduino MKR Wi-Fi 1010, Raspberry Pi Zero 2 W czy ESP8266 na płytce NodeMCU.

Mikrokontrolery tego typu cieszą się ogromną popularnością, pozwalając pasjonatom elektroniki realizować nowe projekty, od prostych czujników temperatury umożliwiających zdalne monitorowanie warunków w domu, po aplikacje sterujące roletami czy oświetleniem w mieszkaniu.

Wykorzystane Komponenty

  • ESP NodeMCU V2 ESP-12E: Płytka rozwojowa będąca wersją ESP8266, produkcji firmy Espressif Systems. Działa na 32-bitowym procesorze i została wyposażona w moduł ESP-12E z WiFi 2,4 GHz. To pozwala na połączenie się z domową siecią internetową.
  • Czujnik temperatury i wilgotności - DHT11: Bardzo prosty czujnik temperatury oraz wilgotności. Zawiera termistor NTC (do pomiaru temperatury) oraz pojemnościowy czujnik wilgotności.

Czym Jest Wi-Fi?

Wi-Fi to technologia bezprzewodowa umożliwiająca przesyłanie informacji na duże odległości.

ESP8266, którego będziemy używać, działa na paśmie 2,4 GHz.

Czujnik DHT11 - Moduł Ułatwiający Życie

Moduł DHT11 zawiera czujnik oraz rezystor.

Rezystor podłącza się między źródłem napięcia a pinem DATA, aby uzyskać stabilny, prawidłowy odczyt.

Dodatkowo czujnik ma 4 piny, a moduł tylko 3.

Dzieje się tak, ponieważ czujnik posiada pin NC (Not Connected), który w module jest ignorowany.

DHT11 mierzy temperaturę w zakresie od 0 do 50°C z dokładnością ±2°C oraz wilgotność w zakresie 20-90% RH ±5%.

Nasz moduł mierzy temperaturę przy pomocy termistora typu NTC (wraz ze wzrostem temperatury rezystancja spada), natomiast wilgotność jest mierzona pojemnościowym czujnikiem wilgotności.

Jak Stworzyć Swój Serwer z ESP8266 w Arduino IDE?

Aby stworzyć serwer z ESP8266 w Arduino IDE, najpierw musimy zintegrować naszą płytkę z tym środowiskiem.

Jeśli jeszcze tego nie zrobiłeś, znajdziesz instrukcję w artykule Jak rozpocząć programowanie ESP8266 w Arduino IDE.

Połączenie z WiFi: Mikrokontroler musi znać nazwę sieci (SSID) oraz hasło.

Edycja funkcji setup(): Standardem w Arduino jest rozpoczęcie od funkcji void setup() (operacje wykonują się tylko raz), a następnie wykorzystanie funkcji void loop() (operacje powtarzają się).

W tym fragmencie inicjalizujemy port szeregowy (nie jest to niezbędny krok jednak ułatwia debugowanie i zrozumienie jak działa nasz kod) oraz rozpoczynamy proces łączenia z Internetem.

Pętla while będzie wykonywana, dopóki ESP nie połączy się z naszym WiFi.

Jak Podłączyć DHT11 do ESP8266 NodeMCU V2?

Aby podłączyć DHT11 do ESP8266 NodeMCU V2 należy pin sygnałowy (oznaczony literą S) oraz dwa piny odpowiedzialne za zasilanie: + (moduł może być zasilany napięciem od 3V do 5,5V) oraz - (standardowo 0V).

Piny NodeMCU Piny DHT11 3v3 + lub nieoznaczony GND - Pin np. D2 S Nasz mikrokontroler komunikuje się z czujnikiem DHT, ale to my musimy wskazać o jaki pin konkretnie nam chodzi.

Dobrą praktyką będzie zdefiniowanie tego pinu na samym początku.

Warto pamiętać, że oznaczenia na płytkach nie muszą być zgodne z oznaczeniami na mikrokontrolerze, a to z nim musimy się porozumieć.

GPIO to piny naszego ESP8266, a więc D2 na płytce to GPIO4, do którego odnosimy się w kodzie.

Gdybyśmy wybrali pin D1 na płytce, do jakiego pinu powinniśmy się odnieść w kodzie?

Do pinu 5, ponieważ pin D2 na naszej płytce NodeMCU odnosi się do GPIO5 na mikrokontrolerze ESP8266.

Delay (przerwa w wykonywaniu kodu) jest tutaj po to, aby czujnik mógł ustabilizować sygnał.

Bez niego pierwszy odczyt może być błędny.

Kod odpowiadający za łączenie z WiFi zostawiamy bez zmian.

Zmienimy jednak to co będzie się wyświetlać na naszej stronie.

Początek kodu bardzo przypomina stronę, którą pisaliśmy wcześniej.

Mamy nagłówek znajdujący się między

i tekst poniżej wewnątrz

, w środku znajduje się dodatkowo .

Element służy nam do oznaczenia fragmentu tekstu, który następnie przy pomocy innych narzędzi możemy dowolnie modyfikować.

Między elementem znajduje się nasz kod w JavaScript osadzony w HTML.

Wewnątrz tworzymy dwie funkcje getTemp() i getHumi(), obie zaczynają się od groźnie wyglądającego kodu, w skrócie tworzymy obiekt AJAX.

AJAX-em nazywamy również technologie, która umożliwia zmianę zawartości strony bez potrzeby jej odświeżania, co idealnie nadaje się do naszego projektu.

tags: #data #logger #temperatura #i #wilgotnosc #zasada

Popularne posty: