- Přehled snímače DHT11:
- Předpoklady:
- Instalace knihovny Adafruit LCD na Raspberry Pi:
- Instalace knihovny Adafruit DHT11 na Raspberry Pi:
- Kruhový diagram:
- Programování v Pythonu pro senzor DHT11:
- Měření vlhkosti a teploty pomocí Raspberry Pi:
Teplota a vlhkost jsou nejběžnější parametry, které jsou sledovány v jakémkoli prostředí. Existuje spousta senzorů na výběr pro měření teploty a vlhkosti, ale nejpoužívanější je DHT11 díky slušnému měřicímu rozsahu a přesnosti. Funguje také s komunikací jedním pinem, a proto je velmi snadné jej propojit s mikrokontroléry nebo mikroprocesory. V tomto tutoriálu se naučíme, jak propojit populární senzor DHT11 s Raspberry Pi a zobrazit hodnotu teploty a vlhkosti na LCD obrazovce 16x2. Už jsme to použili k vybudování meteorologické stanice IoT Raspberry Pi.
Přehled snímače DHT11:
Senzor DHT11 může měřit relativní vlhkost a teplotu s následujícími specifikacemi
Teplotní rozsah: 0-50 ° C Přesnost teploty: ± 2 ° C Rozsah vlhkosti: 20-90% RH Přesnost vlhkosti: ± 5%
Senzor DHT11 je k dispozici buď ve formě modulu nebo ve formě senzoru. V tomto tutoriálu používáme modulovou formu senzoru, jediný rozdíl mezi nimi je ten, že v modulové formě má senzor filtrační kondenzátor a pull up odpor připojený k výstupnímu kolíku senzoru. Pokud tedy používáte samotný snímač, nezapomeňte přidat tyto dvě součásti. Naučte se také propojení DHT11 s Arduino.
Jak senzor DHT11 funguje:
Senzor DHT11 je dodáván s krytem v modré nebo bílé barvě. Uvnitř tohoto pouzdra máme dvě důležité součásti, které nám pomáhají snímat relativní vlhkost a teplotu. První složkou je dvojice elektrod; o elektrickém odporu mezi těmito dvěma elektrodami rozhoduje substrát zadržující vlhkost. Takže změřený odpor je nepřímo úměrný relativní vlhkosti prostředí. Čím vyšší bude relativní vlhkost, tím nižší bude hodnota odporu a naopak. Pamatujte, že relativní vlhkost se liší od skutečné vlhkosti. Relativní vlhkost měří obsah vody ve vzduchu v poměru k teplotě ve vzduchu.
Druhou součástí je povrchově namontovaný NTC termistor. Termín NTC znamená záporný teplotní koeficient, pro zvýšení teploty se hodnota odporu sníží
Předpoklady:
Předpokládá se, že váš Raspberry Pi již má nainstalovaný operační systém a je schopen se připojit k internetu. Pokud ne, postupujte podle pokynů v příručce Začínáme s Raspberry Pi.
Předpokládá se také, že máte přístup k vašemu pí buď prostřednictvím terminálových oken, nebo prostřednictvím jiné aplikace, prostřednictvím které můžete psát a spouštět pythonovské programy a používat terminálové okno.
Instalace knihovny Adafruit LCD na Raspberry Pi:
Hodnota teploty a vlhkosti se zobrazí na 16 * 2 LCD displeji. Adafruit nám poskytuje knihovnu pro snadné ovládání tohoto LCD ve 4bitovém režimu, přidejme jej tedy do Raspberry Pi otevřením okna terminálu Pi a provedením následujících kroků.
Krok 1: Nainstalujte git na svůj Raspberry Pi pomocí níže uvedeného řádku. Git vám umožňuje naklonovat všechny soubory projektu na Github a použít je na vašem Raspberry pi. Naše knihovna je na Githubu, takže si musíme nainstalovat git, abychom tuto knihovnu stáhli do pi.
apt-get install git
Krok 2: Následující řádek odkazuje na stránku GitHub, kde je knihovna, stačí spustit řádek a naklonovat soubor projektu do domovského adresáře Pi
git clone git: //github.com/adafruit/Adafruit_Python_CharLCD
Krok 3: Pomocí níže uvedeného příkazu změňte řádek adresáře, abyste se dostali do souboru projektu, který jsme právě stáhli. Příkazový řádek je uveden níže
cd Adafruit_Python_CharLCD
Krok 4: Uvnitř adresáře bude soubor s názvem setup.py , musíme jej nainstalovat a nainstalovat knihovnu. K instalaci knihovny použijte následující kód
sudo python setup.py nainstalovat
To znamená, že knihovna měla být úspěšně nainstalována. Nyní podobně pokračujme v instalaci knihovny DHT, která je také z Adafruitu.
Instalace knihovny Adafruit DHT11 na Raspberry Pi:
Senzor DHT11 pracuje na principu jednovodičového systému. Hodnota teploty a vlhkosti je snímána senzorem a poté přenášena přes výstupní kolík jako sériová data. Poté můžeme tato data číst pomocí I / O pinů na MCU / MPU. Abyste pochopili, jak jsou tyto hodnoty čteny, budete si muset přečíst datový list senzoru DHT11, ale pro zjednodušení zatím použijeme knihovnu pro komunikaci se senzorem DHT11.
Knihovna DHT11 poskytované Adafruit může být použit pro DHT11, DHT22 a další teplotní čidla jeden drát stejně. Postup instalace knihovny DHT11 je také podobný postupu při instalaci knihovny LCD. Jediný řádek, který by se změnil, je odkaz na stránku GitHub, na které je uložena knihovna DHT.
Zadejte čtyři příkazové řádky jeden po druhém na terminálu a nainstalujte knihovnu DHT
git klon
cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py install
Jakmile je hotovo, budete mít obě knihovny úspěšně nainstalované na našem Raspberry Pi. Nyní můžeme pokračovat v hardwarovém připojení.
Kruhový diagram:
Kompletní schéma zapojení Rozhraní DH11 s Raspberry pi je uvedeno níže, bylo vytvořeno pomocí Fritzing. Postupujte podle zapojení a proveďte obvod
Jak LCD a DHT11 senzor pracuje s + 5V napájení, takže budeme používat 5V kolíky na Raspberry Pi k moci oba. Na výstupním pinu senzoru DHT11 se použije pull up rezistor o hodnotě 1k, pokud používáte modul, můžete se tomuto rezistoru vyhnout.
Ke kolíku Vee LCD je přidán trimr 10k pro ovládání úrovně kontrastu LCD. Kromě toho jsou všechna spojení docela přímá. Všimněte si ale, které piny GPIO používáte k připojení pinů, protože to v našem programu budeme potřebovat. Níže uvedená tabulka by vám měla umožnit zjistit čísla pinů GPIO.
Použijte tabulku a proveďte připojení podle schématu zapojení. Pro připojení jsem použil prkénko a propojovací vodiče. Protože jsem použil modul DHT11, připojil jsem ho přímo k Raspberry Pi. Můj hardware vypadal níže
Programování v Pythonu pro senzor DHT11:
Musíme napsat program, který načte hodnotu teploty a vlhkosti ze snímače DHT11 a poté je zobrazit na LCD. Protože jsme si stáhli knihovny jak pro LCD, tak pro senzor DHT11, měl by být kód docela přímočarý. Python Kompletní program lze nalézt na konci této stránky, ale můžete si přečíst dále pochopit, jak program funguje.
Abychom mohli používat funkce s tím spojené, musíme do našeho programu importovat knihovnu LCD a knihovnu DHT11. Protože jsme si je již stáhli a nainstalovali na naše Pi, můžeme je jednoduše importovat pomocí následujících řádků. Také importujeme knihovnu času, abychom mohli používat funkci zpoždění.
import time #import time for creating delay import Adafruit_CharLCD as LCD #Import LCD library import Adafruit_DHT #Import DHT Library for sensor
Dále musíme určit, ke kterým pinům je senzor připojen a jaký typ teplotního senzoru se používá. Proměnná název_senzoru je přiřazena Adafruit_DHT.DHT11, protože zde používáme snímač DHT11. Výstupní kolík snímače je připojen k GPIO 17 Raspberry Pi, a proto přiřadíme 17 proměnné sensor_pin, jak je znázorněno níže.
sensor_name = Adafruit_DHT.DHT11 #we using the DHT11 sensor sensor_pin = 17 #Senzor je připojen k GPIO17 na Pi
Podobně musíme také definovat, ke kterým pinům GPIO je připojen LCD. Zde používáme LCD ve 4bitovém režimu, proto budeme mít čtyři datové piny a dva kontrolní piny pro připojení k pinům GPIO pi. Pokud chcete ovládat také podsvícení, můžete také připojit kolík podsvícení ke kolíku GPIO. Ale zatím to nepoužívám, takže jsem tomu přidělil 0.
lcd_rs = 7 #RS LCD je připojen k GPIO 7 na PI lcd_en = 8 #EN LCD je připojen k GPIO 8 na PI lcd_d4 = 25 # D4 LCD je připojen k GPIO 25 na PI lcd_d5 = 24 # D5 LCD je připojeno k GPIO 24 na PI lcd_d6 = 23 # D6 LCD je připojeno k GPIO 23 na PI lcd_d7 = 18 # D7 LCD je připojeno k GPIO 18 na PI lcd_backlight = 0 #LED není připojen, takže přiřadíme 0
Můžete také připojit LCD v 8bitovém režimu s Raspberry pi, ale volné piny budou sníženy.
Knihovnu LCD od společnosti Adafruit, kterou jsme si stáhli, lze použít pro všechny typy charakteristických LCD displejů. Tady v našem projektu používáme 16 * 2 LCD displej, takže zmiňujeme počet řádků a sloupců proměnné, jak je uvedeno níže.
lcd_columns = 16 # pro 16 * 2 LCD lcd_rows = 2 # pro 16 * 2 LCD
Nyní, když jsme deklarovali LCD piny a počet řádků a sloupců pro LCD, můžeme inicializovat LCD displej pomocí následujícího řádku, který odešle všechny požadované informace do knihovny.
lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) # Odeslat všechny podrobnosti o pinu do knihovny
Pro spuštění programu zobrazíme malou úvodní zprávu pomocí funkce lcd.message () a poté uděláme zpoždění 2 sekundy, aby byla zpráva čitelná. Pro tisk na 2. řádku lze použít příkaz \ n, jak je znázorněno níže
lcd .message ('DHT11 with Pi \ n -CircuitDigest') # Poskytnout úvodní zprávu time.sleep (2) #wait po dobu 2 s
Nakonec bychom v naší smyčce while měli číst hodnotu teploty a vlhkosti ze snímače a zobrazovat ji na obrazovce LCD každé 2 sekundy. Celý program uvnitř smyčky while je uveden níže
zatímco 1: # Nekonečná smyčka
vlhkost, teplota = Adafruit_DHT.read_retry (sensor_name, sensor_pin) # číst ze senzoru a uložit příslušné hodnoty do proměnné teploty a vlhkosti
lcd.clear () # Vymazat LCD obrazovku lcd.message ('Temp =%.1f C'% teplota) # Zobrazit hodnotu teploty lcd.message ('\ nHum =%.1f %%'% vlhkost) #Display hodnotu Humidity time.sleep (2) # Počkejte 2 s, poté aktualizujte hodnoty
Můžeme snadno získat hodnotu teploty a vlhkosti ze snímače pomocí tohoto jediného řádku níže. Jak vidíte, vrací dvě hodnoty, které jsou uloženy v proměnné vlhkosti a teploty. Tyto sensor_name a sensor_pin údaje jsou předávány jako parametry; tyto hodnoty byly aktualizovány na začátku programu
vlhkost, teplota = Adafruit_DHT.read_retry (sensor_name, sensor_pin)
Pro zobrazení názvu proměnné na LCD obrazovce můžeme použít identifikátory jako & d,% c atd. Zde, protože zobrazujeme číslo s plovoucí desetinnou čárkou pouze s jednou číslicí za desetinnou čárkou, použijeme identifikátor%.1f pro zobrazení hodnoty v proměnná teplota a vlhkost
lcd .message ('Teplota =%.1f C'% teplota) lcd .message ('\ nHum =%.1f %%'% vlhkost)
Měření vlhkosti a teploty pomocí Raspberry Pi:
Proveďte připojení podle schématu zapojení a nainstalujte požadované knihovny. Poté spusťte program python uvedený na konci této stránky. Váš LCD by měl zobrazit úvodní zprávu a poté zobrazit aktuální hodnotu teploty a vlhkosti, jak je znázorněno na obrázku níže.
Pokud nenajdete nic, co by zobrazovalo LCD, zkontrolujte, zda okno prostředí pythonu zobrazuje nějaké chyby, pokud se nezobrazí žádná chyba, zkontrolujte ještě jednou vaše připojení a upravte potenciometr, abyste změnili úroveň kontrastu LCD a zkontrolujte, zda se vám něco nepodaří obrazovka.
Doufám, že jste pochopili projekt a užili jste si jeho stavbu, pokud jste při provádění tohoto problému narazili na jakýkoli problém, nahlaste jej v sekci komentářů nebo použijte technickou pomoc ve fóru. Budu se snažit reagovat na všechny komentáře.
Můžete také zkontrolovat naše další projekty pomocí DHT11 s jiným mikrokontrolérem.