Data Logger Temperatury i Wilgotności: Zasada Działania i Zastosowania
- Szczegóły
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

