- Pregled senzorja DHT11:
- Predpogoji:
- Namestitev knjižnice Adafruit LCD na Raspberry Pi:
- Namestitev knjižnice Adafruit DHT11 na Raspberry Pi:
- Shema vezja:
- Programiranje Pythona za senzor DHT11:
- Merjenje vlažnosti in temperature z uporabo Raspberry Pi:
Temperatura in vlažnost sta najpogostejša parametra, ki ju spremljamo v katerem koli okolju. Na voljo je na tone senzorjev za merjenje temperature in vlažnosti, vendar je najbolj uporabljen DHT11 zaradi spodobnega merilnega območja in natančnosti. Deluje tudi z eno pin komunikacijo in je zato zelo enostaven za povezavo z mikrokrmilniki ali mikroprocesorji. V tej vadnici se bomo naučili, kako povezati priljubljeni senzor DHT11 z Raspberry Pi in prikazati vrednost temperature in vlažnosti na LCD zaslonu 16x2. Uporabili smo ga že za izdelavo vremenske postaje IoT Raspberry Pi.
Pregled senzorja DHT11:
Senzor DHT11 lahko meri naslednjo vlažnost in temperaturo z naslednjimi specifikacijami
Temperaturno območje: 0-50 ° C Natančnost temperature: ± 2 ° C Območje vlažnosti: 20-90% Vlažnost Natančnost: ± 5%
Senzor DHT11 je na voljo v obliki modula ali v obliki senzorja. V tej vadnici uporabljamo modularno obliko senzorja, edina razlika med obema je v tem, da ima senzor v obliki modula filtrirni kondenzator in vlečni upor, pritrjen na izhodni zatič senzorja. Torej, če uporabljate samo senzor, dodajte te dve komponenti. Naučite se tudi povezovanja DHT11 z Arduinom.
Kako deluje senzor DHT11:
Senzor DHT11 ima modro ali belo barvno ohišje. Znotraj tega ohišja imamo dve pomembni komponenti, ki nam pomagata zaznati relativno vlažnost in temperaturo. Prva komponenta je par elektrod; električni upor med tema dvema elektrodama določa podlaga, ki zadržuje vlago. Torej je izmerjena upornost obratno sorazmerna z relativno vlažnostjo okolja. Višja kot je relativna vlažnost zraka, bo vrednost upora in obratno. Upoštevajte tudi, da se relativna vlažnost razlikuje od dejanske. Relativna vlažnost meri vsebnost vode v zraku glede na temperaturo v zraku.
Druga komponenta je nadzemni NTC termistor. Izraz NTC pomeni negativni temperaturni koeficient, pri zvišanju temperature se bo vrednost upora zmanjšala
Predpogoji:
Predpostavlja se, da je vaš Raspberry Pi že nameščen z operacijskim sistemom in se lahko poveže z internetom. V nasprotnem primeru sledite navodilom za začetek uporabe Raspberry Pi.
Predpostavlja se tudi, da imate dostop do pi-ja bodisi prek terminalskih oken bodisi prek druge aplikacije, prek katere lahko pišete in izvajate programe python in uporabljate terminalsko okno.
Namestitev knjižnice Adafruit LCD na Raspberry Pi:
Vrednost temperature in vlažnosti bo prikazana na 16 * 2 LCD zaslonu. Adafruit nam ponuja knjižnico za enostavno upravljanje tega LCD-ja v 4-bitnem načinu, zato ga dodajte v naš Raspberry Pi tako, da odprete okno terminala Pi in sledite spodnjim korakom.
1. korak: Namestite git na Raspberry Pi z uporabo spodnje vrstice. Git vam omogoča kloniranje vseh projektnih datotek na Githubu in njihovo uporabo na vašem Raspberry pi. Naša knjižnica je na Githubu, zato moramo namestiti git, da jo prenesemo v pi.
apt-get install git
2. korak: Naslednja vrstica vodi do strani GitHub, kjer je knjižnica, samo izvedite vrstico za kloniranje projektne datoteke v domačem imeniku Pi
git klon git: //github.com/adafruit/Adafruit_Python_CharLCD
3. korak: Uporabite spodnji ukaz za spremembo imeniške vrstice, da pridete v projektno datoteko, ki smo jo pravkar prenesli. Ukazna vrstica je podana spodaj
cd Adafruit_Python_CharLCD
4. korak: V imeniku bo datoteka z imenom setup.py , namestiti jo moramo, da namestimo knjižnico. Za namestitev knjižnice uporabite naslednjo kodo
sudo python setup.py namestite
To je to, da bi morala biti knjižnica uspešno nameščena. Zdaj podobno nadaljujmo z namestitvijo knjižnice DHT, ki je prav tako iz Adafruit.
Namestitev knjižnice Adafruit DHT11 na Raspberry Pi:
Senzor DHT11 deluje po principu enožičnega sistema. Vrednost temperature in vlažnosti senzor zazna in nato posreduje skozi izhodni zatič kot serijske podatke. Te podatke lahko nato preberemo z vhodno / izhodnim zatičem na MCU / MPU. Da bi razumeli, kako se te vrednosti berejo, bi morali prebrati podatkovni list senzorja DHT11, za zdaj pa bomo za poenostavitev uporabili knjižnico za pogovor s senzorjem DHT11.
Knjižnica DHT11 zagotovil Adafruit se lahko uporablja za DHT11, DHT22 in drugih temperaturnih ena žica senzorjev, kot tudi. Postopek namestitve knjižnice DHT11 je prav tako podoben postopku namestitve knjižnice LCD. Edina vrstica, ki bi se spremenila, je povezava do strani GitHub, na kateri je shranjena knjižnica DHT.
V terminalsko eno za drugo vnesite štiri ukazne vrstice, da namestite knjižnico DHT
klon git
cd Adafruit_Python_DHT sudo apt-get install build-bistveno python-dev sudo python setup.py namestitev
Ko končate, bosta obe knjižnici uspešno nameščeni na naši Raspberry Pi. Zdaj lahko nadaljujemo s povezavo strojne opreme.
Shema vezja:
Celoten diagram vezja Interfacing DH11 z Raspberry pi je podan spodaj, zgrajen je bil s pomočjo Fritzinga. Sledite povezavam in naredite vezje
Tako LCD kot senzor DHT11 delujeta z napajanjem + 5V, zato za napajanje obeh uporabljamo 5V nožice na Raspberry Pi. Na izhodnem zatiču senzorja DHT11 se uporablja vlečni upor vrednosti 1k, če uporabljate modul, se temu uporu lahko izognete.
Na zatič Vee LCD-ja se doda loputa za obrezovanje 10k za nadzor stopnje kontrasta LCD-ja. Razen tega so vse povezave precej naravnost naprej. Vendar si zapišite, katere GPIO nožice uporabljate za povezavo nožic, saj jih bomo potrebovali v našem programu. Spodnja tabela naj vam omogoča, da ugotovite številke pinov GPIO.
Uporabite tabelo in vzpostavite povezave v skladu z vezjem. Za povezave sem uporabil lepenko in mostične žice. Ker sem uporabil modul DHT11, sem ga priklopil neposredno na Raspberry Pi. Moja strojna oprema je bila spodaj videti tako
Programiranje Pythona za senzor DHT11:
Napisati moramo program za odčitavanje vrednosti temperature in vlažnosti s senzorja DHT11 in nato istega prikazati na LCD-prikazovalniku. Ker smo prenesli knjižnice tako za LCD kot za senzor DHT11, bi morala biti koda precej preprosta. Celoten program piton lahko najdete na koncu te strani, vendar pa si lahko preberete še bolj razumeli, kako program deluje.
Za uporabo funkcij, povezanih z njo, moramo v svoj program uvoziti knjižnico LCD in knjižnico DHT11. Ker smo jih že prenesli in namestili na naš Pi, jih lahko preprosto uporabimo v naslednjih vrsticah. Za uporabo funkcije zakasnitve uvozimo tudi knjižnico časa.
uvozni čas #importni čas za ustvarjanje zamika uvoz Adafruit_CharLCD kot LCD #Import LCD knjižnica import Adafruit_DHT #Import DHT Library for sensor
Nato moramo določiti, na katere nožice je priključen senzor in kakšen tip temperaturnega senzorja se uporablja. Spremenljivka sensor_name je dodeljena Adafruit_DHT.DHT11, saj tu uporabljamo senzor DHT11. Izhodni zatič senzorja je povezan z GPIO 17 Raspberry Pi in zato dodelimo 17 spremenljivki sensor_pin, kot je prikazano spodaj.
sensor_name = Adafruit_DHT.DHT11 # uporabljamo senzor DHT11 sensor_pin = 17 # Senzor je povezan z GPIO17 na Pi
Podobno moramo določiti tudi, na katere GPIO nožice je povezan LCD. Tu uporabljamo LCD v 4-bitnem načinu, zato bomo imeli štiri podatkovne nožice in dva kontrolna nožica za povezavo z GPIO nožicami pi. Prav tako lahko pin za osvetlitev ozadja priključite na zatič GPIO, če želimo nadzorovati tudi osvetlitev ozadja. Toda za zdaj tega ne uporabljam, zato sem mu dodelil 0.
lcd_rs = 7 #RS LCD je povezan z GPIO 7 na PI lcd_en = 8 #EN LCD je povezan z GPIO 8 na PI lcd_d4 = 25 # D4 LCD je povezan z GPIO 25 na PI lcd_d5 = 24 # D5 LCD je povezan z GPIO 24 na PI lcd_d6 = 23 # D6 LCD je povezan z GPIO 23 na PI lcd_d7 = 18 # D7 LCD je povezan z GPIO 18 na PI lcd_backlight = 0 #LED ni povezan, zato dodelimo 0
LCD lahko v 8-bitnem načinu povežete tudi z Raspberry pi, vendar se bodo prosti zatiči zmanjšali.
Knjižnico LCD iz podjetja Adafruit, ki smo jo prenesli, lahko uporabimo za vse vrste značilnih LCD zaslonov. Tukaj v našem projektu uporabljamo LCD zaslon 16 * 2, zato omenimo število vrstic in stolpcev na spremenljivko, kot je prikazano spodaj.
lcd_columns = 16 #za 16 * 2 LCD lcd_rows = 2 #za 16 * 2 LCD
Zdaj, ko smo razglasili zatiče LCD in število vrstic in stolpcev za LCD, lahko LCD zaslon inicializiramo z uporabo naslednje vrstice, ki knjižnici pošlje vse zahtevane informacije.
lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) # Pošlji vse podrobnosti o zatičih v knjižnico
Za zagon programa s funkcijo lcd.message () prikažemo majhno uvodno sporočilo in nato damo 2 sekundi zamika, da je sporočilo berljivo. Za tiskanje v 2. vrstici lahko uporabite ukaz \ n, kot je prikazano spodaj
lcd .message ('DHT11 s Pi \ n -CircuitDigest') # Podajte uvodno sporočilo time.sleep (2) # počakajte 2 sekundi
Končno, znotraj naše zanke while moramo s senzorja odčitati vrednost temperature in vlažnosti ter jo prikazovati na LCD zaslonu vsaki 2 sekundi. Celoten program znotraj zanke while je prikazan spodaj
medtem ko 1: # Neskončna zanka
vlaga, temperatura = Adafruit_DHT.read_retry (ime_senzorja, senzor_pin) #berdite s senzorja in shranite ustrezne vrednosti v temperaturi in vlažnosti
lcd.clear () # Počistite LCD zaslon lcd.message ('Temp =%.1f C'% temperature) # Prikažite vrednost temperature lcd.message ('\ nHum =%.1f %%'% vlage) #Prikaži vrednost Humidity time.sleep (2) # Počakajte 2 sekundi in nato posodobite vrednosti
Vrednost temperature in vlažnosti lahko s pomočjo te ene vrstice spodaj enostavno dobimo iz senzorja. Kot vidite, vrne dve vrednosti, ki sta shranjeni v spremenljivi vlažnosti in temperaturi. Podrobnosti ime_senzorja in senzorja_pina se posredujeta kot parametra; te vrednosti so bile posodobljene na začetku programa
vlažnost, temperatura = Adafruit_DHT.read_retry (ime_senzorja, ime_senzorja)
Za prikaz imena spremenljivke na LCD zaslonu lahko uporabimo identifikatorje, kot so & d,% c itd. Tukaj, ker prikazujemo število s plavajočo vejico z eno številko za decimalno vejico, za prikaz vrednosti uporabimo identifikator%.1f spremenljiva temperatura in vlažnost
lcd .message ('Temp =%.1f C'% temperature) lcd .message ('\ nHum =%.1f %%'% vlage)
Merjenje vlažnosti in temperature z uporabo Raspberry Pi:
Vzpostavite povezave po shemi vezja in namestite potrebne knjižnice. Nato zaženite program python, podan na koncu te strani. Vaš LCD mora prikazati uvodno sporočilo, nato pa trenutno vrednost temperature in vlažnosti, kot je prikazano na spodnji sliki.
Če se na LCD-prikazovalniku ne prikaže ničesar, preverite, ali se v oknu lupine pythona prikažejo napake, če ni prikazana nobena napaka, še enkrat preverite povezave in prilagodite potenciometer, da spreminja stopnjo kontrasta LCD-ja, in preverite, ali je kaj vklopljeno zaslon.
Upam, da ste projekt razumeli in ste ga radi zgradili, če ste naleteli na kakršno koli težavo pri tem, ga prijavite v odsek za komentarje ali uporabite forum za tehnično pomoč. Trudil se bom po najboljših močeh odgovoriti na vse komentarje.
Naše druge projekte lahko preverite tudi z uporabo DHT11 z drugim mikrokrmilnikom.