- DHT11 jutiklio apžvalga:
- Išankstiniai rekvizitai:
- „Adafruit“ LCD bibliotekos diegimas „Raspberry Pi“:
- „Adafruit DHT11“ bibliotekos diegimas „Raspberry Pi“:
- Grandinės schema:
- DHT11 jutiklio „Python“ programavimas:
- Drėgmės ir temperatūros matavimas naudojant avietę Pi:
Temperatūra ir drėgmė yra dažniausiai naudojami parametrai, stebimi bet kurioje aplinkoje. Temperatūrai ir drėgmei matuoti galima rinktis iš daugybės jutiklių, tačiau dėl tinkamo matavimo diapazono ir tikslumo dažniausiai naudojamas jutiklis. Jis taip pat veikia su vieno kontakto ryšiu, todėl jį labai lengva susieti su mikrovaldikliais ar mikroprocesoriais. Šioje pamokoje sužinosime, kaip susieti populiarųjį DHT11 jutiklį su „Raspberry Pi“ ir parodyti temperatūros ir drėgmės vertę 16x2 LCD ekrane. Mes jį jau panaudojome statydami IoT Raspberry Pi meteorologinę stotį.
DHT11 jutiklio apžvalga:
DHT11 jutiklis gali matuoti santykinę drėgmę ir temperatūrą pagal šias specifikacijas
Temperatūros diapazonas: 0-50 ° C Temperatūros tikslumas: ± 2 ° C Drėgmės diapazonas: 20-90% RH Drėgmės tikslumas: ± 5%
DHT11 jutiklis yra modulio arba jutiklio formos. Šioje pamokoje mes naudojame jutiklio modulio formą, vienintelis skirtumas tarp abiejų yra tas, kad modulio forma jutiklis turi filtravimo kondensatorių ir prisitraukimo rezistorių, pritvirtintą prie jutiklio išvesties kaiščio. Taigi, jei naudojate tik jutiklį, būtinai pridėkite šiuos du komponentus. Taip pat sužinokite DHT11 sąsają su „Arduino“.
Kaip veikia DHT11 jutiklis:
DHT11 jutiklis yra su mėlynos arba baltos spalvos korpusu. Šio korpuso viduje turime du svarbius komponentus, kurie padeda suvokti santykinę drėgmę ir temperatūrą. Pirmasis komponentas yra pora elektrodų; elektrinę varžą tarp šių dviejų elektrodų lemia drėgmę sulaikantis pagrindas. Taigi išmatuotas atsparumas yra atvirkščiai proporcingas santykinei aplinkos drėgmei. Aukštesnė santykinė drėgmė, mažesnė bus atsparumo vertė ir atvirkščiai. Taip pat atkreipkite dėmesį, kad santykinė drėgmė skiriasi nuo faktinės drėgmės. Santykinė drėgmė matuoja vandens kiekį ore, palyginti su oro temperatūra.
Kitas komponentas yra ant paviršiaus sumontuotas NTC termistorius. Terminas NTC reiškia neigiamą temperatūros koeficientą, temperatūros padidėjimui atsparumo vertė sumažės
Išankstiniai rekvizitai:
Daroma prielaida, kad jūsų „Raspberry Pi“ jau yra įdiegta su operacine sistema ir gali prisijungti prie interneto. Jei ne, prieš tęsdami vadovaukitės instrukcija „Pradėti naudoti„ Raspberry Pi ““.
Taip pat daroma prielaida, kad jūs turite prieigą prie savo pi per terminalo langus arba per kitą programą, per kurią galite rašyti ir vykdyti python programas ir naudoti terminalo langą.
„Adafruit“ LCD bibliotekos diegimas „Raspberry Pi“:
Temperatūros ir drėgmės vertė bus rodoma 16 * 2 LCD ekrane. „Adafruit“ suteikia mums biblioteką, leidžiančią lengvai valdyti šį skystųjų kristalų ekraną 4 bitų režimu, todėl pridėkime jį prie savo „Raspberry Pi“, atidarydami terminalo langą Pi ir atlikdami toliau nurodytus veiksmus.
1 žingsnis: įdiekite „git“ savo „Raspberry Pi“ naudodami žemiau esančią eilutę. „Git“ leidžia klonuoti visus projekto failus „Github“ ir naudoti juos „Raspberry pi“. Mūsų biblioteka yra „Github“, todėl norėdami atsisiųsti šią biblioteką į „pi“, turime įdiegti „git“.
apt-get install git
2 žingsnis: Šios eilutės nuorodos į „GitHub“ puslapį, kuriame yra biblioteka, tiesiog vykdykite eilutę, kad klonuotumėte projekto failą „Pi“ namų kataloge
„git clone“ git: //github.com/adafruit/Adafruit_Python_CharLCD
3 žingsnis: naudokite žemiau esančią komandą, kad pakeistumėte katalogo eilutę, kad patektumėte į ką tik atsisiųstą projekto failą. Komandinė eilutė pateikiama žemiau
CD „Adafruit_Python_CharLCD“
4 žingsnis: Katalogo viduje bus failas, vadinamas setup.py , mes turime jį įdiegti, kad įdiegtume biblioteką. Norėdami įdiegti biblioteką, naudokite šį kodą
sudo python setup.py įdiegti
Tai reiškia, kad biblioteka turėjo būti sėkmingai įdiegta. Dabar panašiai pradėkime įdiegti DHT biblioteką, kuri taip pat yra iš „Adafruit“.
„Adafruit DHT11“ bibliotekos diegimas „Raspberry Pi“:
DHT11 jutiklis veikia pagal vieno laido sistemos principą. Temperatūros ir drėgmės vertę jutiklis nustato ir perduoda per išvesties kaištį kaip nuoseklius duomenis. Tada mes galime perskaityti šiuos duomenis naudodami įvesties / išvesties kaištį MCU / MPU. Norėdami suprasti, kaip skaitomos šios vertės, turėtumėte perskaityti DHT11 jutiklio duomenų lapą, tačiau kol kas viskas bus paprasta, naudosime biblioteką, kad galėtume kalbėtis su DHT11 jutikliu.
„ Adafruit“ teikiamą DHT11 biblioteką galima naudoti ir DHT11, DHT22 bei kitiems vienos vielos temperatūros jutikliams. DHT11 bibliotekos diegimo procedūra taip pat yra panaši į tą, kurios buvo laikomasi diegiant LCD biblioteką. Vienintelė eilutė, kuri pasikeistų, yra „GitHub“ puslapio nuoroda, kurioje išsaugota DHT biblioteka.
Įveskite keturias komandines eilutes po vieną terminale, kad įdiegtumėte DHT biblioteką
„git“ klonas
CD „Adafruit_Python_DHT“ sudo apt-get install „build-essential python-dev sudo python setup.py install“
Kai tai bus padaryta, abi bibliotekos bus sėkmingai įdiegtos mūsų „Raspberry Pi“. Dabar galime tęsti aparatinės įrangos ryšį.
Grandinės schema:
Visa grandinės schema „ Interfacing DH11“ su „Raspberry pi “ pateikta žemiau, ji buvo sukurta naudojant „Fritzing“. Vykdykite jungtis ir atlikite grandinę
Tiek skystųjų kristalų, tiek DHT11 jutiklis veikia su + 5 V maitinimo šaltiniu, todėl abiejų maitinimui naudojame „Raspberry Pi“ 5 V kaiščius. DHT11 jutiklio išvesties kaiščiui naudojamas 1k vertės traukimo rezistorius, jei naudojate modulį, galite išvengti šio rezistoriaus.
Peiliukas puodai 10k yra įtraukta į Vee kaiščio LCD kontroliuoti kontrasto lygį skystųjų kristalų ekrano. Išskyrus tai, kad visos jungtys yra gana tiesios. Bet pažymėkite, kuriuos GPIO kaiščius naudojate smeigtukams sujungti, nes mums jų reikės mūsų programoje. Žemiau pateikiama diagrama turėtų leisti jums išsiaiškinti GPIO PIN kodus.
Naudokitės diagrama ir atlikite ryšius pagal grandinės schemą. Savo ryšiams užmegzti naudoju duonos lentą ir laidų laidus. Kadangi naudojau DHT11 modulį, jį prijungiau tiesiai prie „Raspberry Pi“. Mano aparatūra atrodė taip žemiau
DHT11 jutiklio „Python“ programavimas:
Turime parašyti programą, kad galėtume nuskaityti temperatūros ir drėgmės vertes iš DHT11 jutiklio ir tada tą patį rodyti LCD. Kadangi mes atsisiuntėme tiek LCD, tiek DHT11 jutiklio bibliotekas, kodas turėtų būti beveik tiesus. „ Python“ pilną programą rasite šio puslapio pabaigoje, tačiau galite perskaityti toliau, kad suprastumėte, kaip programa veikia.
Turime importuoti LCD biblioteką ir DHT11 biblioteką į savo programą, kad galėtume naudoti su ja susijusias funkcijas. Kadangi mes jau atsisiuntėme ir įdiegėme juos savo „Pi“, juos importuoti galime tiesiog naudodami šias eilutes. Mes taip pat importuojame laiko biblioteką, kad galėtume naudoti uždelsimo funkciją.
importavimo laikas #importavimo laikas uždelsimo importavimui sukurti „ Adafruit_CharLCD“ kaip LCD #importuoti LCD bibliotekos importavimą „Adafruit_DHT“ #importuoti jutiklio DHT biblioteką
Toliau turime nurodyti, prie kurių kaiščių jungiamas jutiklis ir koks temperatūros jutiklis naudojamas. Kintamasis jutiklio_vardas priskiriamas „Adafruit_DHT.DHT11“, nes čia naudojame DHT11 jutiklį. Jutiklio išvesties kaištis yra prijungtas prie „Raspberry Pi“ GPIO 17 ir todėl 17 priskiriame „sensor_pin“ kintamajam, kaip parodyta žemiau.
sensor_name = Adafruit_DHT.DHT11 # mes naudojame DHT11 jutiklio sensor_pin = 17 # jutiklis yra prijungtas prie GPIO17 Pi
Panašiai mes taip pat turime apibrėžti, prie kurių GPIO kaiščių yra prijungtas LCD ekranas. Čia mes naudojame LCD 4 bitų režimu, taigi turėsime keturis duomenų kaiščius ir du valdymo kaiščius, kad galėtume prisijungti prie pi GPIO kaiščių. Taip pat galite prijungti apšvietimo kaištį prie GPIO kaiščio, jei taip pat norime valdyti apšvietimą. Bet kol kas to nenaudoju, todėl priskyriau jai 0.
lcd_rs = 7 # LCD ekranas yra prijungtas prie PI GPIO 7 lcd_lt = 8 # LCD ekranas prijungtas prie PI GPIO 8 lcd_d4 = 25 # LCD D4 prijungtas prie PI GPIO 25 lcd_d5 = 24 # D5 LCD yra prijungtas prie GPIO 24 PI lcd_d6 = 23 # LCD D6 yra prijungtas prie GPIO 23 PI lcd_d7 = 18 # LCD # D7 prijungtas prie GPIO 18 PI lcd_backlight = 0 #LED nėra prijungtas, todėl priskiriame 0
Taip pat galite prijungti skystųjų kristalų ekraną 8 bitų režimu su „Raspberry pi“, bet tada sumažės laisvų kaiščių.
Atsisiųstą „Adafruit“ skystųjų kristalų biblioteką galima naudoti visų tipų LCD ekranams. Savo projekte mes naudojame 16 * 2 skystųjų kristalų ekraną, todėl mes nurodome eilučių ir stulpelių skaičių kintamajam, kaip parodyta žemiau.
lcd_columns = 16 # už 16 * 2 LCD lcd_rows = 2 # už 16 * 2 LCD
Dabar, kai mes paskelbėme LCD kaiščius ir LCD eilučių ir stulpelių skaičių, mes galime inicijuoti LCD ekraną naudodami šią eilutę, kuri visą reikiamą informaciją siunčia į biblioteką.
lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) # Išsiųskite visą PIN kodo informaciją į biblioteką
Norėdami paleisti programą, naudodami funkciją „ lcd.message () “ rodome mažą įvesties pranešimą ir tada duodame 2 sekundžių uždelsimą, kad pranešimas būtų įskaitomas. Jei norite spausdinti antroje eilutėje, galite naudoti komandą \ n, kaip parodyta žemiau
LCD .message ("DHT11 su Pi \ N -CircuitDigest) #Give Intro žinutė time.sleep (2) #wait 2 sek
Galiausiai, o „ loop“ viduje turėtume iš jutiklio nuskaityti temperatūros ir drėgmės vertę ir kas 2 sekundes rodyti ją LCD ekrane. Visa programa „loop“ viduje yra parodyta žemiau
o 1: #Begalinė kilpa
drėgmė, temperatūra = Adafruit_DHT.read_retry (sensor_name, sensor_pin) #skaityti iš jutiklio ir išsaugoti atitinkamas temperatūros ir drėgmės varibale reikšmes
lcd.clear () #Išvalykite skystųjų kristalų ekraną lcd.message ('Temp =%.1f C'% temperature) # Parodykite temperatūros lcd.message vertę ('\ nHum =%.1f %%'% drėgmės) #Display drėgmės laiko reikšmė.miega (2) # Palaukite 2 sekundes, tada atnaujinkite vertes
Mes galime lengvai gauti temperatūros ir drėgmės vertę iš jutiklio naudodami šią žemiau esančią eilutę. Kaip matote, pateikiamos dvi vertės, kurios saugomos kintamoje drėgmėje ir temperatūroje. Į sensor_name ir sensor_pin detalės praėjo kaip parametrus; šios vertės buvo atnaujintos programos pradžioje
drėgmė, temperatūra = „Adafruit_DHT.read_retry“ (jutiklio_vardas, jutiklio_kištukas)
Norėdami rodyti kintamojo pavadinimą LCD ekrane, galime naudoti tokius identifikatorius kaip & d,% c ir kt. Kadangi mes rodome slankiojo kablelio skaičių, kuriame po kablelio yra tik vienas skaitmuo, mes naudojame identifikatorių%.1f reikšmei rodyti kintama temperatūra ir drėgmė
lcd .message ('Temp =%.1f C'% temperatūra) lcd .message ('\ nHum =%.1f %%'% drėgmės)
Drėgmės ir temperatūros matavimas naudojant avietę Pi:
Prijunkite jungtis pagal grandinės schemą ir įdiekite reikiamas bibliotekas. Tada paleiskite „python“ programą, pateiktą šio puslapio pabaigoje. Jūsų skystųjų kristalų ekrane turėtų būti rodomas įvesties pranešimas, o tada - dabartinė temperatūros ir drėgmės vertė, kaip parodyta žemiau esančiame paveikslėlyje.
Jei LCD ekrane nieko nerodoma, patikrinkite, ar python apvalkalo lange nėra klaidų, jei klaidos nerodoma, dar kartą patikrinkite savo ryšius ir sureguliuokite potenciometrą, kad pakeistumėte LCD kontrasto lygį, ir patikrinkite, ar nieko neįmanoma ekranas.
Tikiuosi, kad supratote projektą ir patiko jį kurti, jei susidūrėte su bet kokia problema, kaip tai padaryti, praneškite apie tai komentarų skyriuje arba naudokite forumą techninei pagalbai. Pasistengsiu atsakyti į visus komentarus.
Taip pat galite patikrinti kitus mūsų projektus naudodami DHT11 su kitu mikrovaldikliu.