Czujnik DHT11
DHT11 jest podstawowym, niedrogim, cyfrowym czujnikiem wilgotności i temperatury. Mierzy on temperaturę w zakresie 0-50°C z dokładnością ±2°C. Mierzy również wilgotność w zakresie 20-90% RH z dokładnością ±5%. Dostępny jest w formie modułu i czujnika. W tym tutorialu będziemy używać formy modułowej. Obie formy różnią się tym, że czujnik posiada kondensator filtrujący oraz rezystor podciągający dołączony do pinu wyjściowego czujnika.
Działanie czujnika DHT11
Czujnik dostarczany jest w niebieskiej lub białej obudowie, w której znajdują się dwa ważne elementy. Jeden z nich to para elektrod; opór elektryczny pomiędzy tymi dwoma elektrodami jest kontrolowany przez podłoże utrzymujące wilgoć, tzn. mierzony opór jest odwrotnie proporcjonalny do wilgotności względnej otoczenia. Należy pamiętać, że jest to wilgotność względna, a nie rzeczywista, więc mierzy ona zawartość wody w powietrzu w stosunku do temperatury w powietrzu. Drugim elementem jest montowany powierzchniowo termistor NTC (Negative Temperature Coefficient). Wraz ze wzrostem temperatury wartość rezystancji będzie się zmniejszać.
Wymagania wstępne dla tego projektu
Twoje Raspberry Pi powinno być sprzężone z systemem operacyjnym i powinno łączyć się z internetem. Powinieneś także mieć dostęp do Raspberry Pi albo przez terminal windows lub przez inną aplikację, dzięki której możesz pisać i wykonywać programy python i używać terminal windows.
Zainstalowanie biblioteki Adafruit LCD na Twoim Raspberry Pi
Dane z czujników będą wyświetlane na wyświetlaczu LCD 16×2. Będziemy używać biblioteki Adafruit do łatwej obsługi tego wyświetlacza LCD w trybie 4-bitowym, więc zainstalujemy ją w naszym Raspberry Pi. W tym celu postępuj zgodnie z poniższymi krokami:
Krok 1: Po pierwsze, użyj poniższego linka, aby zainstalować go na swoim Raspberry Pi. To pozwoli nam sklonować nasz plik projektu na Github, więc musimy zainstalować Git w celu pobrania biblioteki.
apt-get install git
Krok 2: Podany link jest do strony Github, gdzie nasza biblioteka jest obecna, wykonaj tę linię i plik projektu zostanie sklonowany w katalogu domowym Pi.
git clone git://github.com/adafruit/Adafruit_Python_CharLCD
Krok 3: Następnie użyj podanego polecenia, aby zmienić linię katalogów i otworzyć plik projektu, który właśnie pobraliśmy.
cd Adafruit_Python_CharLCD
Krok 4: Zobaczysz plik setup.py w katalogu, będziemy musieli go zainstalować, aby zainstalować bibliotekę. Użyj poniższego kodu, aby zainstalować bibliotekę.
sudo python setup.py install
Teraz twoja biblioteka powinna być zainstalowana pomyślnie.
Instalacja biblioteki Adafruit DHT11 na Twoim Raspberry Pi
Czujnik DHT11 działa poprzez wykrywanie temperatury i wilgotności, a następnie przesyłanie danych przez pin wyjściowy jako dane szeregowe. Możemy odczytać te dane poprzez pin I/O na mikroprocesorze/mikrokontrolerze. Aby odczytać wartości, musiałbyś zapoznać się z datasheetem czujnika DHT11, ale na razie, aby utrzymać wszystko w prostocie, użyjemy biblioteki do rozmowy z czujnikiem DHT11. Do zainstalowania biblioteki DHT11 użyjemy tej samej procedury, co w przypadku biblioteki LCD. Zmienimy tylko link do strony Github. Aby zainstalować bibliotekę DHT, użyj poniższych poleceń jedno po drugim.
git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT
sudo apt-get install build-essential python-dev
sudo python setup.py install
Teraz powinieneś mieć zainstalowane obie biblioteki na swoim Raspberry Pi.
Schemat układu
Aby zbudować układ wykonaj następujące połączenia. Podłącz LCD i czujnik DHT11 do pinów 5V na Raspberry Pi. W przypadku gdy używasz modułu nie musisz dołączać rezystora na pinie wyjściowym czujnika DHT11. Jeśli nie, to użyj rezystora podciągającego 1k. Potencjometr trymera o wartości 10k jest dołączony do pinu VEE wyświetlacza LCD. Pin wyjściowy czujnika jest podłączony do GPIO17 (11) w Raspberry Pi.
Następnie kolejne połączenia są dość podstawowe, ale zwróć uwagę na to, których pinów GPIO używasz do podłączenia pinów, które będą nam potrzebne w naszym programie. Połączenia wykonaj zgodnie z załączonym schematem. Ponieważ my użyliśmy modułu DHT11, podłączyliśmy go bezpośrednio do naszego Raspberry Pi.
- DHT11 Sensor Output Pin GPIO17 (11)
- lcd_rs 7 #RS wyświetlacza LCD jest podłączony do GPIO 7 (26) na Pi
- lcd_en 8 #EN wyświetlacza LCD jest podłączony do GPIO 8 (24) na Pi
- lcd_d4 25 #D4 wyświetlacza LCD jest podłączony do GPIO 25 (22) na Pi
- lcd_d5 24 #D5 LCD jest podłączony do GPIO 24 (18) na Pi
- lcd_d6 23 #D6 LCD jest podłączony do GPIO 23 (16) na Pi
- lcd_d7 18 #D7 LCD jest podłączony do GPIO 18 (12) na Pi
- lcd_backlight 0 #LED nie jest podłączony, więc przypisujemy mu wartość 0
Pomiar wilgotności i temperatury za pomocą Raspberry Pi
Po wykonaniu wszystkich niezbędnych połączeń i zainstalowaniu wymienionych bibliotek, uruchamiasz program pythonowy podany na końcu tego projektu.
Jak tylko otworzysz IDLE, powinieneś dostać okno z Python Shell, na IDE, jak pokazano na poniższym obrazku.
Twój wyświetlacz LCD wyświetli komunikat wprowadzający, a następnie poda Ci aktualne wartości temperatury i wilgotności. W przypadku braku wyświetlania sprawdź, czy w oknie powłoki Pythona nie ma błędów, sprawdź połączenia, a także wyreguluj potencjometr. Teraz ukończyłeś ten projekt!
Kod źródłowy
#Program to read the values of Temp and Hum from the DHT11 sensor and display them on the LCD
import time #import time for creating delay
import Adafruit_CharLCD as LCD #Import LCD library
import Adafruit_DHT #Import DHT Library for sensor
sensor_name = Adafruit_DHT.DHT11 #we are using the DHT11 sensor
sensor_pin = 17 #The sensor is connected to GPIO17 on Pi
lcd_rs = 7 #RS of LCD is connected to GPIO 7 on PI
lcd_en = 8 #EN of LCD is connected to GPIO 8 on PI
lcd_d4 = 25 #D4 of LCD is connected to GPIO 25 on PI
lcd_d5 = 24 #D5 of LCD is connected to GPIO 24 on PI
lcd_d6 = 23 #D6 of LCD is connected to GPIO 23 on PI
lcd_d7 = 18 #D7 of LCD is connected to GPIO 18 on PI
lcd_backlight = 0 #LED is not connected so we assign to 0
lcd_columns = 16 #for 16*2 LCD
lcd_rows = 2 #for 16*2 LCD
lcd = LCD.Adafruit_CharLCD(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7,
lcd_columns, lcd_rows, lcd_backlight) #Send all the pin details to library
lcd.message('DHT11 with Pi \n -CircuitDigest') #Give a intro message
time.sleep(2) #wait for 2 secs
while 1: #Infinite Loop
humidity, temperature = Adafruit_DHT.read_retry(sensor_name, sensor_pin) #read from sensor and save respective values in temperature and humidity varibale
lcd.clear() #Clear the LCD screen
lcd.message ('Temp = %.1f C' % temperature) # Display the value of temperature
lcd.message ('\nHum = %.1f %%' % humidity) #Display the value of Humidity
time.sleep(2) #Wait for 2 sec then update the values
Projekt i zdjęcie dzięki uprzejmości © circuitdigest.com