- Przegląd czujnika DHT11:
- Wymagania wstępne:
- Instalacja biblioteki Adafruit LCD na Raspberry Pi:
- Instalacja biblioteki Adafruit DHT11 na Raspberry Pi:
- Schemat obwodu:
- Programowanie w Pythonie dla czujnika DHT11:
- Pomiar wilgotności i temperatury za pomocą Raspberry Pi:
Temperatura i wilgotność to najpowszechniejsze parametry monitorowane w każdym środowisku. Do wyboru jest mnóstwo czujników do pomiaru temperatury i wilgotności, ale najczęściej używanym jest DHT11 ze względu na przyzwoity zakres pomiarowy i dokładność. Działa również z komunikacją jednopinową, dzięki czemu jest bardzo łatwy do połączenia z mikrokontrolerami lub mikroprocesorami. W tym samouczku dowiemy się, jak połączyć popularny czujnik DHT11 z Raspberry Pi i wyświetlać wartość temperatury i wilgotności na ekranie LCD 16x2. Użyliśmy go już do budowy IoT Stacji Pogodowej Raspberry Pi.
Przegląd czujnika DHT11:
Czujnik DHT11 może mierzyć wilgotność względną i temperaturę zgodnie z następującymi specyfikacjami
Zakres temperatur: 0-50 ° C Dokładność temperatury: ± 2 ° C Zakres wilgotności: 20-90% RH Dokładność wilgotności : ± 5%
Czujnik DHT11 jest dostępny w postaci modułu lub czujnika. W tym samouczku używamy czujnika w postaci modułowej, jedyną różnicą między nimi jest to, że w postaci modułu czujnik ma kondensator filtrujący i rezystor podciągający przymocowany do styku wyjściowego czujnika. Więc jeśli używasz samego czujnika, upewnij się, że dodajesz te dwa komponenty. Naucz się również współpracy DHT11 z Arduino.
Jak działa czujnik DHT11:
Czujnik DHT11 jest dostarczany z obudową w kolorze niebieskim lub białym. Wewnątrz tej obudowy mamy dwa ważne elementy, które pomagają nam wyczuć wilgotność względną i temperaturę. Pierwszy element to para elektrod; o rezystancji elektrycznej między tymi dwoma elektrodami decyduje podłoże utrzymujące wilgoć. Zatem zmierzona rezystancja jest odwrotnie proporcjonalna do wilgotności względnej otoczenia. Im wyższa wilgotność względna, niższa będzie wartość oporu i odwrotnie. Należy również pamiętać, że wilgotność względna różni się od rzeczywistej. Wilgotność względna mierzy zawartość wody w powietrzu w stosunku do temperatury powietrza.
Drugim elementem jest termistor NTC do montażu powierzchniowego. Termin NTC oznacza ujemny współczynnik temperaturowy, dla wzrostu temperatury wartość rezystancji zmniejszy się
Wymagania wstępne:
Zakłada się, że Twoje Raspberry Pi jest już flashowane z systemem operacyjnym i jest w stanie połączyć się z Internetem. Jeśli nie, postępuj zgodnie z samouczkiem Wprowadzenie do Raspberry Pi przed kontynuowaniem.
Zakłada się również, że masz dostęp do swojego pi przez okna terminala lub przez inną aplikację, za pomocą której możesz pisać i uruchamiać programy w języku Python oraz używać okna terminala.
Instalacja biblioteki Adafruit LCD na Raspberry Pi:
Wartość temperatury i wilgotności zostanie wyświetlona na wyświetlaczu LCD 16 * 2. Adafruit zapewnia nam bibliotekę do łatwej obsługi tego LCD w trybie 4-bitowym, więc dodajmy go do naszego Raspberry Pi, otwierając okno terminala Pi i wykonując poniższe kroki.
Krok 1: Zainstaluj git na swoim Raspberry Pi, korzystając z poniższej linii. Git pozwala sklonować dowolne pliki projektu na Github i używać go na swoim Raspberry pi. Nasza biblioteka jest na Githubie, więc musimy zainstalować git, aby pobrać tę bibliotekę do pi.
apt-get install git
Krok 2: Poniższy wiersz prowadzi do strony GitHub, na której znajduje się biblioteka, po prostu wykonaj wiersz, aby sklonować plik projektu w katalogu domowym Pi
git clone git: //github.com/adafruit/Adafruit_Python_CharLCD
Krok 3: Użyj poniższego polecenia, aby zmienić wiersz katalogu, aby dostać się do pliku projektu, który właśnie pobraliśmy. Linia poleceń jest podana poniżej
cd Adafruit_Python_CharLCD
Krok 4: W katalogu będzie znajdował się plik o nazwie setup.py , musimy go zainstalować, aby zainstalować bibliotekę. Użyj poniższego kodu, aby zainstalować bibliotekę
sudo python setup.py install
To znaczy, że biblioteka powinna zostać pomyślnie zainstalowana. Teraz podobnie przejdźmy do instalacji biblioteki DHT, która również pochodzi z Adafruit.
Instalacja biblioteki Adafruit DHT11 na Raspberry Pi:
Czujnik DHT11 działa na zasadzie układu jednoprzewodowego. Wartość temperatury i wilgotności jest mierzona przez czujnik, a następnie przesyłana przez pin wyjściowy jako dane szeregowe. Możemy następnie odczytać te dane za pomocą pinów I / O na MCU / MPU. Aby zrozumieć, w jaki sposób odczytywane są te wartości, należy przeczytać arkusz danych czujnika DHT11, ale na razie, aby uprościć sprawę, użyjemy biblioteki do rozmowy z czujnikiem DHT11.
Biblioteki DHT11 zapewnia Adafruit można stosować DHT11, DHT22 i innych czujników temperatury, jak również jeden przewód. Procedura instalacji biblioteki DHT11 jest również podobna do procedury instalacji biblioteki LCD. Jedyną linią, która by się zmieniła, jest link do strony GitHub, na której zapisana jest biblioteka DHT.
Wprowadź kolejno cztery wiersze poleceń na terminalu, aby zainstalować bibliotekę DHT
klon git
cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py install
Po zakończeniu obie biblioteki zostaną pomyślnie zainstalowane na naszym Raspberry Pi. Teraz możemy przystąpić do podłączania sprzętu.
Schemat obwodu:
Pełny schemat obwodu Łączący DH11 z Raspberry pi jest podany poniżej, został zbudowany przy użyciu Fritzing. Postępuj zgodnie z połączeniami i wykonaj obwód
Zarówno czujnik LCD, jak i DHT11 współpracują z zasilaniem + 5 V, więc używamy pinów 5 V na Raspberry Pi do zasilania obu. Rezystor podciągający o wartości 1k jest używany na pinie wyjściowym czujnika DHT11, jeśli używasz modułu, możesz uniknąć tego rezystora.
Puli trymera z 10K dodano do sworznia Vee LCD kontrolować poziom kontrastu LCD. Poza tym wszystkie połączenia są dość proste. Ale zanotuj, których pinów GPIO używasz do podłączenia pinów, ponieważ będziemy potrzebować w naszym programie. Poniższa tabela powinna umożliwić ustalenie numerów pinów GPIO.
Skorzystaj z tabeli i wykonaj połączenia zgodnie ze schematem połączeń. Do wykonania połączeń użyłem płytki stykowej i przewodów połączeniowych. Ponieważ użyłem modułu DHT11, podłączyłem go bezpośrednio do Raspberry Pi. Mój sprzęt wyglądał tak poniżej
Programowanie w Pythonie dla czujnika DHT11:
Musimy napisać program, który odczyta wartość temperatury i wilgotności z czujnika DHT11, a następnie wyświetli to na LCD. Ponieważ pobraliśmy biblioteki zarówno dla czujnika LCD, jak i czujnika DHT11, kod powinien być prawie prosty. Pyton kompletny program można znaleźć na końcu tej strony, ale można czytać dalej, aby zrozumieć, jak działa program.
Musimy zaimportować bibliotekę LCD i bibliotekę DHT11 do naszego programu, aby korzystać z funkcji z nią związanych. Ponieważ już pobraliśmy i zainstalowaliśmy je na naszym Pi, możemy po prostu użyć następujących linii, aby je zaimportować. Importujemy również bibliotekę czasu, aby użyć funkcji opóźnienia.
import time #import time for create delay import Adafruit_CharLCD as LCD #Import biblioteki LCD import Adafruit_DHT #Import DHT Library dla czujnika
Następnie musimy określić, do których pinów jest podłączony czujnik i jakiego typu czujnik temperatury jest używany. Zmienna nazwa_czujnika jest przypisana do Adafruit_DHT.DHT11, ponieważ używamy tutaj czujnika DHT11. Pin wyjściowy czujnika jest podłączony do GPIO 17 Raspberry Pi i dlatego przypisujemy 17 do zmiennej sensor_pin, jak pokazano poniżej.
sensor_name = Adafruit_DHT.DHT11 # używamy czujnika DHT11 sensor_pin = 17 # Czujnik jest podłączony do GPIO17 na Pi
Podobnie musimy zdefiniować, do których pinów GPIO jest podłączony wyświetlacz LCD. Tutaj używamy wyświetlacza LCD w trybie 4-bitowym, dlatego będziemy mieć cztery piny danych i dwa piny sterujące do podłączenia do pinów GPIO pi. Możesz również podłączyć pin podświetlenia do pinów GPIO, jeśli chcemy również sterować podświetleniem. Ale na razie nie używam tego, więc przypisałem mu 0.
lcd_rs = 7 #RS LCD jest podłączony do GPIO 7 na PI lcd_en = 8 #EN LCD jest podłączony do GPIO 8 na PI lcd_d4 = 25 # D4 LCD jest podłączony do GPIO 25 na PI lcd_d5 = 24 # D5 LCD jest podłączony do GPIO 24 na PI lcd_d6 = 23 # D6 LCD jest podłączony do GPIO 23 na PI lcd_d7 = 18 # D7 LCD jest podłączony do GPIO 18 na PI lcd_backlight = 0 #LED nie jest podłączony, więc przypisujemy 0
Możesz także podłączyć LCD w trybie 8-bitowym do Raspberry pi, ale wtedy wolne piny zostaną zmniejszone.
Pobrana przez nas biblioteka LCD firmy Adafruit może być używana do wszystkich typów charakterystycznych wyświetlaczy LCD. W naszym projekcie używamy wyświetlacza LCD 16 * 2, więc wymieniamy liczbę wierszy i kolumn w zmiennej, jak pokazano poniżej.
lcd_columns = 16 # dla 16 * 2 LCD lcd_rows = 2 # dla 16 * 2 LCD
Teraz, gdy zadeklarowaliśmy wyprowadzenia LCD oraz liczbę wierszy i kolumn dla LCD, możemy zainicjować wyświetlacz LCD za pomocą następującego wiersza, który przesyła wszystkie wymagane informacje do biblioteki.
lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) # Wyślij wszystkie szczegóły pinów do biblioteki
Aby uruchomić program, wyświetlamy małą wiadomość wprowadzającą za pomocą funkcji lcd.message (), a następnie dajemy 2-sekundowe opóźnienie, aby wiadomość była czytelna. W przypadku drukowania na 2 nd linii polecenia \ n może być stosowany jak pokazano poniżej
lcd .message ('DHT11 z Pi \ n -CircuitDigest') # Przekaż wiadomość intro time.sleep (2) # czekaj przez 2 sekundy
Wreszcie, wewnątrz naszego while pętli należy odczytać wartość temperatury i wilgotności z czujnika i wyświetla go na ekranie LCD za każde 2 sekundy. Pełny program wewnątrz pętli while pokazano poniżej
podczas 1: #Infinite Loop
wilgotność, temperatura = Adafruit_DHT.read_retry (nazwa_czujnika, szpilka_czujnika) # wczytaj z czujnika i zapisz odpowiednie wartości w zmienności temperatury i wilgotności
lcd.clear () # Wyczyść ekran LCD lcd.message ('Temp =%.1f C'% temperature) # Wyświetl wartość temperatury lcd.message ('\ nHum =%.1f %%'% wilgotności) #Display wartość Humidity time.sleep (2) #Wait for 2 sec, a następnie zaktualizuj wartości
Możemy łatwo uzyskać wartość temperatury i wilgotności z czujnika, korzystając z tej pojedynczej linii poniżej. Jak widać zwraca dwie wartości, które są przechowywane w zmiennej wilgotności i temperaturze. Szczegóły sensor_name i sensor_pin są przekazywane jako parametry; wartości te zostały zaktualizowane na początku programu
wilgotność, temperatura = Adafruit_DHT.read_retry (nazwa_czujnika, szpilka_czujnika)
Aby wyświetlić nazwę zmiennej na ekranie LCD, możemy użyć identyfikatorów takich jak & d,% c itp. Tutaj, ponieważ wyświetlamy liczbę zmiennoprzecinkową z tylko jedną cyfrą po przecinku, używamy identyfikatora%.1f do wyświetlania wartości w zmienna temperatura i wilgotność
lcd .message ('Temp =%.1f C'% temperature) lcd .message ('\ nHum =%.1f %%'% wilgotności)
Pomiar wilgotności i temperatury za pomocą Raspberry Pi:
Wykonaj połączenia zgodnie ze schematem obwodu i zainstaluj wymagane biblioteki. Następnie uruchom program w języku Python podany na końcu tej strony. Na wyświetlaczu LCD powinien pojawić się komunikat powitalny, a następnie aktualna wartość temperatury i wilgotności, jak pokazano na poniższym obrazku.
Jeśli nic nie jest wyświetlane na wyświetlaczu LCD, sprawdź, czy okno powłoki Pythona wyświetla jakiekolwiek błędy, jeśli nie jest wyświetlany żaden błąd, sprawdź połączenia jeszcze raz i wyreguluj potencjometr, aby zmienić poziom kontrastu LCD i sprawdź, czy coś jest włączone ekran.
Mam nadzieję, że zrozumiałeś projekt i cieszyłeś się jego budowaniem. Jeśli napotkałeś jakiś problem z wykonaniem tego, zgłoś to w sekcji komentarzy lub skorzystaj z forum, aby uzyskać pomoc techniczną. Postaram się jak najlepiej odpowiedzieć na wszystkie komentarze.
Możesz również sprawdzić nasze inne projekty wykorzystujące DHT11 z innym mikrokontrolerem.