- Prehľad snímača DHT11:
- Predbežné požiadavky:
- Inštalácia knižnice LCD Adafruit na Raspberry Pi:
- Inštalácia knižnice Adafruit DHT11 na Raspberry Pi:
- Schéma zapojenia:
- Programovanie v jazyku Python pre senzor DHT11:
- Meranie vlhkosti a teploty pomocou Raspberry Pi:
Teplota a vlhkosť sú najbežnejšie parametre, ktoré sa sledujú v akomkoľvek prostredí. Existuje veľa senzorov na výber pre meranie teploty a vlhkosti, ale najpoužívanejší je DHT11 vďaka slušnému rozsahu merania a presnosti. Funguje tiež s komunikáciou jedným pinom, a preto je jeho prepojenie s mikrokontrolérmi alebo mikroprocesormi veľmi jednoduché. V tomto výučbe sa naučíme, ako prepojiť populárny snímač DHT11 s Raspberry Pi a zobraziť hodnotu teploty a vlhkosti na obrazovke LCD 16x2. Už sme ho použili na stavbu meteorologickej stanice IoT Raspberry Pi.
Prehľad snímača DHT11:
Senzor DHT11 môže merať relatívnu vlhkosť a teplotu s nasledujúcimi špecifikáciami
Teplotný rozsah: 0-50 ° C Presnosť teploty: ± 2 ° C Rozsah vlhkosti: 20-90% RH Presnosť vlhkosti: ± 5%
Snímač DHT11 je k dispozícii buď vo forme modulu alebo vo forme snímača. V tomto tutoriáli používame modulovú formu snímača, jediný rozdiel medzi nimi je ten, že v modulovej forme má snímač filtračný kondenzátor a pull up odpor pripojený k výstupnému kolíku snímača. Pokiaľ teda používate samotný snímač, nezabudnite pridať tieto dva komponenty. Naučte sa tiež prepojenie DHT11 s Arduino.
Ako funguje senzor DHT11:
Snímač DHT11 je dodávaný s modrou alebo bielou farbou krytu. Vo vnútri tohto krytu máme dve dôležité súčasti, ktoré nám pomáhajú snímať relatívnu vlhkosť a teplotu. Prvou zložkou je pár elektród; o elektrickom odpore medzi týmito dvoma elektródami rozhoduje substrát zadržiavajúci vlhkosť. Takže nameraný odpor je nepriamo úmerný relatívnej vlhkosti prostredia. Čím vyššia je relatívna vlhkosť, tým nižšia bude hodnota odporu a naopak. Upozorňujeme tiež, že relatívna vlhkosť sa líši od skutočnej vlhkosti. Relatívna vlhkosť meria obsah vody vo vzduchu v pomere k teplote vo vzduchu.
Ďalším komponentom je povrchovo namontovaný NTC termistor. Pojem NTC znamená záporný teplotný koeficient, pri zvyšovaní teploty sa hodnota odporu zníži
Predbežné požiadavky:
Predpokladá sa, že váš Raspberry Pi už má nainštalovaný operačný systém a je schopný sa pripojiť na internet. Ak nie, postupujte podľa pokynov v návode Začíname s Raspberry Pi.
Tiež sa predpokladá, že k svojmu pi máte prístup buď prostredníctvom terminálových okien, alebo prostredníctvom inej aplikácie, prostredníctvom ktorej môžete písať a spúšťať programy v jazyku python a používať okno terminálu.
Inštalácia knižnice LCD Adafruit na Raspberry Pi:
Hodnota teploty a vlhkosti sa zobrazí na 16 * 2 LCD displeji. Spoločnosť Adafruit nám poskytuje knižnicu na jednoduché ovládanie tohto LCD displeja v 4-bitovom režime, pridajme ho teda k nášmu Raspberry Pi otvorením okna terminálu Pi a vykonaním nasledujúcich krokov.
Krok 1: Nainštalujte git na svoje Raspberry Pi pomocou nasledujúceho riadku. Git umožňuje klonovať ľubovoľné súbory projektu na Github a použiť ich na vašom Raspberry pi. Naša knižnica je na Githube, takže musíme nainštalovať git, aby sme ju mohli stiahnuť do formátu pi.
apt-get nainštalovať git
Krok 2: Nasledujúci riadok odkazuje na stránku GitHub, kde je knižnica, stačí spustiť riadok na klonovanie súboru projektu do domovského adresára Pi.
git klon git: //github.com/adafruit/Adafruit_Python_CharLCD
Krok 3: Pomocou nižšie uvedeného príkazu zmeňte riadok adresára, aby ste sa dostali do súboru projektu, ktorý sme práve stiahli. Príkazový riadok je uvedený nižšie
cd Adafruit_Python_CharLCD
Krok 4: Vo vnútri adresára bude súbor s názvom setup.py , musíme si ho nainštalovať, aby sme nainštalovali knižnicu. Na inštaláciu knižnice použite nasledujúci kód
sudo python setup.py nainštalovať
To znamená, že knižnica mala byť úspešne nainštalovaná. Teraz podobne pokračujme v inštalácii knižnice DHT, ktorá je tiež z Adafruitu.
Inštalácia knižnice Adafruit DHT11 na Raspberry Pi:
Snímač DHT11 pracuje na princípe jednodrátového systému. Hodnota teploty a vlhkosti je snímaná snímačom a následne prenášaná cez výstupný kolík ako sériové dáta. Tieto dáta potom môžeme načítať pomocou I / O pinov na MCU / MPU. Aby ste pochopili, ako sa tieto hodnoty načítavajú, musíte si prečítať údajový list senzora DHT11, ale pre zjednodušenie budeme zatiaľ na komunikáciu so senzorom DHT11 používať knižnicu.
Knižnica DHT11 poskytované Adafruit môže byť použitý pre DHT11, DHT22 a ďalšie teplotné čidlá jeden drôt rovnako. Postup inštalácie knižnice DHT11 je tiež podobný ako pri inštalácii knižnice LCD. Jediný riadok, ktorý by sa zmenil, je odkaz na stránku GitHub, na ktorej je uložená knižnica DHT.
Zadajte štyri príkazové riadky jeden po druhom na termináli a nainštalujte knižnicu DHT
git klon
cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py install
Po dokončení budete mať obe knižnice úspešne nainštalované na našom Raspberry Pi. Teraz môžeme pokračovať v hardvérovom pripojení.
Schéma zapojenia:
Kompletná schéma zapojenia Interfacing DH11 s Raspberry pi je uvedená nižšie, bola postavená pomocou Fritzinga. Postupujte podľa pripojení a urobte obvod
Ako LCD a DHT11 senzor pracuje s + 5V napájanie, takže budeme používať 5V kolíky na Raspberry Pi k moci obaja. Na výstupnom kolíku snímača DHT11 sa používa pull-up odpor s hodnotou 1k. Ak používate modul, môžete sa mu vyhnúť.
Na kolík Vee na LCD displeji je pridaný trimer s veľkosťou 10 tis., Aby sa ovládala úroveň kontrastu LCD. Okrem toho sú všetky spojenia celkom priame. Poznačte si však, ktoré piny GPIO, ktoré na pripojenie pinov používate, pretože ich v našom programe budeme potrebovať. Nasledujúca tabuľka by vám mala umožniť zistiť čísla pinov GPIO.
Použite tabuľku a zapojte podľa schémy zapojenia. Na pripojenie som použil kontaktnú dosku a štartovacie drôty. Pretože som použil modul DHT11, zapojil som ho priamo do Raspberry Pi. Môj hardvér vyzeral nižšie
Programovanie v jazyku Python pre senzor DHT11:
Musíme napísať program na načítanie hodnoty teploty a vlhkosti zo snímača DHT11 a potom to isté zobraziť na LCD. Pretože sme si stiahli knižnice pre LCD aj pre snímač DHT11, kód by mal byť pekne rovný. Program Python Complete nájdete na konci tejto stránky. Môžete si však prečítať ďalšie informácie, aby ste pochopili, ako program funguje.
Musíme dovážať LCD knižnice a knižnice DHT11 do nášho programu Ak chcete používať funkcie súvisiace s ním. Pretože sme si ich už stiahli a nainštalovali na naše Pi, môžeme ich jednoducho importovať pomocou nasledujúcich riadkov. Importujeme tiež časovú knižnicu, aby sme mohli používať funkciu oneskorenia.
import time #import time for creating delay import Adafruit_CharLCD as LCD #Import LCD library import Adafruit_DHT #Import DHT Library for sensor
Ďalej musíme určiť, ku ktorým pinom je snímač pripojený a aký typ teplotného snímača sa používa. Premenná sensor_name je priradená k Adafruit_DHT.DHT11, pretože tu používame senzor DHT11. Výstupný pin snímača je pripojený k GPIO 17 na Raspberry Pi, a preto mu priradíme 17 k premennej sensor_pin, ako je to znázornené nižšie.
sensor_name = Adafruit_DHT.DHT11 #we using the DHT11 sensor sensor_pin = 17 #Senzor je pripojený k GPIO17 na Pi
Podobne musíme tiež definovať, ku ktorým pinom GPIO je pripojený LCD. Tu používame LCD v 4-bitovom režime, preto budeme mať štyri dátové piny a dva ovládacie piny na pripojenie k pinom GPIO pí. Môžete tiež pripojiť kolík podsvietenia k kolíku GPIO, ak chceme ovládať aj podsvietenie. Ale zatiaľ to nepoužívam, takže som tomu priradil 0.
lcd_rs = 7 #RS LCD je pripojený k GPIO 7 na PI lcd_en = 8 #EN LCD je pripojený k GPIO 8 na PI lcd_d4 = 25 # D4 LCD je pripojený k GPIO 25 na PI lcd_d5 = 24 # D5 LCD je pripojený k GPIO 24 na PI lcd_d6 = 23 # D6 LCD je pripojený k GPIO 23 na PI lcd_d7 = 18 # D7 LCD je pripojený k GPIO 18 na PI lcd_backlight = 0 # LED nie je pripojený, takže priradíme 0
Môžete tiež pripojiť LCD v 8-bitovom režime s Raspberry pi, ale potom sa počet voľných pinov zníži.
Knižnicu LCD od spoločnosti Adafruit, ktorú sme si stiahli, je možné použiť pre všetky typy charakteristických LCD displejov. Tu v našom projekte používame 16 * 2 LCD displej, takže uvádzame počet riadkov a stĺpcov premennej, ako je uvedené nižšie.
lcd_columns = 16 # pre 16 * 2 LCD lcd_rows = 2 # pre 16 * 2 LCD
Teraz, keď sme deklarovali kolíky LCD a počet riadkov a stĺpcov pre LCD, môžeme inicializovať LCD displej pomocou nasledujúceho riadku, ktorý odošle všetky požadované informácie do knižnice.
lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) # Pošlite všetky podrobnosti kolíka do knižnice
Na spustenie programu zobrazíme malú úvodnú správu pomocou funkcie lcd.message () a potom dáme oneskorenie 2 sekundy, aby bola správa čitateľná. Pre tlač na 2. riadok možno použiť príkaz \ n, ako je uvedené nižšie
lcd .message ('DHT11 with Pi \ n -CircuitDigest') # Dajte úvodnú správu time.sleep (2) # počkajte 2 sekundy
A konečne, v našom while slučky by sme mali prečítať hodnotu teploty a vlhkosti od snímača a zobrazí ich na LCD displeji na každých 2 sekúnd. Celý program vo vnútri while cyklu je uvedený nižšie
zatiaľ čo 1: #Infinite Loop
vlhkosť, teplota = Adafruit_DHT.read_retry (sensor_name, sensor_pin) # prečítajte zo senzora a príslušné hodnoty uložte do varibale teploty a vlhkosti
lcd.clear () # Vymazať obrazovku LCD lcd.message ('Temp =%.1f C'% teplota) # Zobraziť hodnotu teploty lcd.message ('\ nHum =%.1f %%'% vlhkosť) #Display hodnotu Humidity time.sleep (2) # Počkajte 2 s, potom aktualizujte hodnoty
Hodnotu teploty a vlhkosti zo senzora môžeme ľahko získať pomocou tohto jedného riadku uvedeného nižšie. Ako vidíte, vracajú sa dve hodnoty, ktoré sa ukladajú do premennej vlhkosti a teploty. Tieto sensor_name a sensor_pin údaje sú odovzdávané ako parametre; tieto hodnoty boli aktualizované na začiatku programu
vlhkosť, teplota = Adafruit_DHT.read_retry (sensor_name, sensor_pin)
Na zobrazenie názvu premennej na obrazovke LCD môžeme použiť identifikátory ako & d,% c atď. Pretože tu zobrazujeme číslo s pohyblivou rádovou čiarkou iba s jednou číslicou za desatinnou čiarkou, použijeme identifikátor%.1f na zobrazenie hodnoty v premenná teplota a vlhkosť
lcd .message ('Teplota =%.1f C'% teplota) lcd .message ('\ nHum =%.1f %%'% vlhkosť)
Meranie vlhkosti a teploty pomocou Raspberry Pi:
Pripojte káble podľa schémy zapojenia a nainštalujte požadované knižnice. Potom spustite program python uvedený na konci tejto stránky. Váš LCD by mal zobraziť úvodnú správu a potom zobraziť aktuálnu hodnotu teploty a vlhkosti, ako je to znázornené na obrázku nižšie.
Ak na LCD displeji nič nenájdete, skontrolujte, či okno v prostredí pythonu zobrazuje nejaké chyby, ak sa nezobrazí žiadna chyba, skontrolujte ešte raz svoje zapojenia a potenciometrom upravte úroveň kontrastu LCD a skontrolujte, či sa vám niečo nezobrazuje obrazovka.
Dúfam, že ste projektu porozumeli a páčilo sa vám jeho zostavenie. Ak ste pri realizácii narazili na akýkoľvek problém, nahláste ho v sekcii komentárov alebo použite technickú pomoc na fóre. Budem sa snažiť čo najlepšie odpovedať na všetky komentáre.
Môžete tiež skontrolovať naše ďalšie projekty pomocou DHT11 s iným mikrokontrolérom.