Wilgotność i temperatura to typowe parametry pomiaru warunków środowiskowych. W tym projekcie opartym na Arduino zamierzamy zmierzyć temperaturę i wilgotność otoczenia i wyświetlić je na ekranie LCD 16x2. Połączony czujnik temperatury i wilgotności DHT11 jest używany z Arduino uno do opracowania tego termometru w skali Celsjusza i projektu pomiaru wilgotności w skali procentowej. W jednym z moich poprzednich projektów opracowałem również termometr cyfrowy wykorzystujący czujnik temperatury LM35.
Projekt składa się z trzech sekcji - jedna mierzy wilgotność i temperaturę za pomocą czujnika wilgotności i temperatury DHT11. Druga sekcja odczytuje dane wyjściowe modułu czujnika DHT i wyodrębnia wartości temperatury i wilgotności w odpowiedniej liczbie w procentach i skali Celsjusza. Trzecia część systemu wyświetla wilgotność i temperaturę na wyświetlaczu LCD.
Działanie tego projektu opiera się na jednoprzewodowej komunikacji szeregowej. Najpierw arduino wysyła sygnał startu do modułu DHT, a następnie DHT daje sygnał odpowiedzi zawierający dane dotyczące temperatury i wilgotności. Arduino zbiera i wyodrębnia w dwóch częściach, jedna to wilgotność, a druga to temperatura, a następnie wysyła je na wyświetlacz LCD 16x2.
Tutaj w tym projekcie użyliśmy modułu czujnika a mianowicie DHT11. Moduł ten zawiera kompleks wilgotności i temperatury ze skalibrowanym cyfrowym wyjściem sygnałowym, co oznacza, że moduł czujnika DHT11 jest połączonym modułem do pomiaru wilgotności i temperatury, który daje skalibrowany cyfrowy sygnał wyjściowy. DHT11 podaje nam bardzo precyzyjną wartość wilgotności i temperatury oraz zapewnia wysoką niezawodność i długoterminową stabilność. Ten czujnik ma rezystancyjny element do pomiaru wilgotności i element do pomiaru temperatury typu NTC z wbudowanym 8-bitowym mikrokontrolerem, który ma szybką reakcję i jest ekonomiczny oraz dostępny w 4-pinowej obudowie jednorzędowej.
Moduł DHT11 pracuje na komunikacji szeregowej czyli jednoprzewodowej. Moduł ten przesyła dane w postaci ciągu impulsów o określonym czasie. Przed wysłaniem danych do arduino potrzebne jest polecenie inicjalizacji z opóźnieniem czasowym. A czas całego procesu to około 4 ms. Pełna transmisja danych jest 40-bitowa, a format danych tego procesu podano poniżej:
8-bitowe całkowane dane RH + 8-bitowe dziesiętne dane RH + 8-bitowe całkowite dane T + 8-bitowe dziesiętne dane T + 8-bitowa suma kontrolna.
Kompletny proces
Przede wszystkim arduino wysyła sygnał startu od wysokiego do niskiego do DHT11 z opóźnieniem 18 µs, aby zapewnić wykrywanie DHT. A potem arduino podnieś linię danych i poczekaj 20-40 µs na odpowiedź DHT. Gdy DHT wykryje sygnał startu, wyśle sygnał odpowiedzi niskiego poziomu napięcia do arduino z opóźnieniem czasowym około 80 µs. Następnie kontroler DHT podciąga linię danych i utrzymuje ją przez 80 µs w celu zorganizowania wysyłania danych przez DHT.
Gdy magistrala danych jest na niskim poziomie napięcia, oznacza to, że DHT11 wysyła sygnał odpowiedzi. Po zakończeniu DHT ponownie podciąga linię danych przez 80 µs w celu przygotowania transmisji danych.
Format danych wysyłanych przez DHT do arduino dla każdego bitu zaczyna się od 50 µs niskiego poziomu napięcia, a długość sygnału o wysokim poziomie napięcia określa, czy bit danych ma wartość „0” czy „1”.
Ważną rzeczą jest upewnienie się, że wartość rezystora podciąga się, ponieważ jeśli umieszczamy czujnik DHT w odległości <20 metrów, zalecany jest rezystor podciągający 5k. Jeśli umieszczasz DHT na długości 20 metrów, użyj rezystora podciągającego o odpowiedniej wartości.
Schemat obwodu i wyjaśnienie
Wyświetlacz ciekłokrystaliczny służy do wyświetlania temperatury i wilgotności, który jest bezpośrednio podłączony do arduino w trybie 4-bitowym. Piny LCD, a mianowicie RS, EN, D4, D5, D6 i D7 są podłączone do cyfrowego pinu arduino nr 2, 3, 4, 5, 6 i 7. Moduł czujnika DHT11 jest również podłączony do cyfrowego pinu 12 arduino za pomocą Rezystor podciągający 5k.
Opis programowania
Podczas programowania będziemy korzystać z gotowych bibliotek dla czujnika DHT11 i modułu wyświetlacza LCD.
Następnie zdefiniowaliśmy piny dla czujnika LCD i DHT i zainicjowaliśmy wszystkie elementy konfiguracji. Następnie w pętli za pomocą funkcji dht odczytuje czujnik DHT, a następnie za pomocą niektórych funkcji dht wyodrębniamy wilgotność i temperaturę i wyświetlamy je na LCD.
Tutaj symbol stopnia jest tworzony przy użyciu niestandardowej metody znakowej.