- DHT11-anturin yleiskatsaus:
- Ennakkovaatimukset:
- Adafruit LCD -kirjaston asentaminen Raspberry Pi: lle:
- Adafruit DHT11 -kirjaston asentaminen Raspberry Pi: lle:
- Piirikaavio:
- Python-ohjelmointi DHT11-anturille:
- Kosteuden ja lämpötilan mittaaminen Vadelma Pi: llä:
Lämpötila ja kosteus ovat yleisimpiä parametreja, joita valvotaan missä tahansa ympäristössä. Lämpötilan ja kosteuden mittaamiseen on valittavissa tonnia antureita, mutta käytetyin anturi on DHT11 sen kunnollisen mittausalueen ja tarkkuuden vuoksi. Se toimii myös yhden nastaviestinnän kanssa, joten se on erittäin helppo liittää mikrokontrollereihin tai mikroprosessoreihin. Tässä opetusohjelmassa aiomme oppia käyttämään suosittua DHT11-anturia Raspberry Pi: n kanssa ja näyttämään lämpötilan ja kosteuden arvon 16x2-nestekidenäytöllä. Käytimme sitä jo IoT Raspberry Pi -sääaseman rakentamiseen.
DHT11-anturin yleiskatsaus:
DHT11-anturi voi mitata suhteellista kosteutta ja lämpötilaa seuraavilla ominaisuuksilla
Lämpötila-alue: 0-50 ° C Lämpötilatarkkuus: ± 2 ° C Kosteusalue: 20-90% RH Kosteuden tarkkuus: ± 5%
DHT11-anturi on saatavana joko moduulimuodossa tai anturimuodossa. Tässä opetusohjelmassa käytämme anturin moduulimuotoa, ainoa ero molempien välillä on se, että moduulimuodossa anturissa on suodatuskondensaattori ja ylösvetovastus, joka on kiinnitetty anturin ulostulotappiin. Joten jos käytät anturia yksin, varmista, että lisäät nämä kaksi komponenttia. Opi myös DHT11-käyttöliittymä Arduinon kanssa.
Kuinka DHT11-anturi toimii:
DHT11-anturin mukana tulee sininen tai valkoinen väri. Tämän kotelon sisällä on kaksi tärkeää komponenttia, jotka auttavat meitä tunnistamaan suhteellisen kosteuden ja lämpötilan. Ensimmäinen komponentti on elektrodipari; näiden kahden elektrodin välinen sähkövastus päätetään kosteutta pitävällä alustalla. Joten mitattu vastus on kääntäen verrannollinen ympäristön suhteelliseen kosteuteen. Korkeampi suhteellinen kosteus pienempi on vastuksen arvo ja päinvastoin. Huomaa myös, että suhteellinen kosteus eroaa todellisesta kosteudesta. Suhteellinen kosteus mittaa ilman vesipitoisuutta suhteessa ilman lämpötilaan.
Toinen komponentti on pinta-asennettava NTC-termistori. Termi NTC tarkoittaa negatiivista lämpötilakerrointa, lämpötilan nousun kohdalla resistanssin arvo pienenee
Ennakkovaatimukset:
Oletetaan, että Raspberry Pi: lläsi on jo flash-käyttöjärjestelmä ja että se pystyy muodostamaan yhteyden Internetiin. Jos ei, seuraa Aloittaminen Raspberry Pi -oppaalla ennen jatkamista.
Oletetaan myös, että sinulla on pääsy piiisi joko pääteikkunoiden kautta tai muun sovelluksen kautta, jonka kautta voit kirjoittaa ja suorittaa python-ohjelmia ja käyttää pääteikkunaa.
Adafruit LCD -kirjaston asentaminen Raspberry Pi: lle:
Lämpötilan ja kosteuden arvo näytetään 16 * 2 LCD-näytöllä. Adafruit tarjoaa meille kirjaston, jolla tätä LCD-näyttöä voidaan käyttää helposti 4-bittisessä tilassa, joten lisää se Raspberry Pi -laitteeseemme avaamalla pääteikkuna Pi ja seuraamalla seuraavia ohjeita.
Vaihe 1: Asenna git Raspberry Pi -laitteeseesi alla olevan rivin avulla. Gitin avulla voit kloonata kaikki projektitiedostot Githubissa ja käyttää niitä Vadelma pi -laitteellasi. Kirjastomme on Githubissa, joten meidän on asennettava git ladataksesi kyseisen kirjaston pi: iin.
apt-get install git
Vaihe 2: Seuraavat rivilinkit GitHub-sivulle, jolla kirjasto on, suorita vain rivi kloonataksesi projektitiedoston Pi-kotihakemistossa
git-klooni git: //github.com/adafruit/Adafruit_Python_CharLCD
Vaihe 3: Käytä alla olevaa komentoa vaihtaaksesi hakemistoriviä päästäksesi juuri lataamaan projektitiedostoon. Komentorivi on annettu alla
cd Adafruit_Python_CharLCD
Vaihe 4: Hakemiston sisällä on tiedosto nimeltä setup.py , meidän on asennettava se, jotta voimme asentaa kirjaston. Asenna kirjasto seuraavalla koodilla
sudo python setup.py asennus
Eli kirjaston olisi pitänyt asentaa onnistuneesti. Jatketaan nyt samalla tavalla DHT-kirjaston asentamista, joka on myös Adafruitilta.
Adafruit DHT11 -kirjaston asentaminen Raspberry Pi: lle:
DHT11-anturi toimii yhden johtimen järjestelmän periaatteella. Anturi tunnistaa lämpötilan ja kosteuden arvon ja välittää sen sitten ulostulon kautta sarjatietoina. Voimme sitten lukea nämä tiedot käyttämällä MCU / MPU: n I / O-nastaa. Jotta voisit ymmärtää näiden arvojen lukemisen, joudut lukemaan DHT11-anturin datalehden, mutta toistaiseksi asioiden yksinkertaistamiseksi käytämme kirjastoa DHT11-anturin kanssa.
DHT11 kirjasto, jonka Adafruit voidaan käyttää DHT11, DHT22 ja toinen langan lämpötila-anturit samoin. DHT11-kirjaston asennusmenettely on myös samanlainen kuin LCD-kirjaston asennuksessa noudatettu menettely. Ainoa muutettava rivi on GitHub-sivun linkki, jolle DHT-kirjasto on tallennettu.
Kirjoita neljä komentoriviä yksitellen päätelaitteeseen DHT-kirjaston asentamiseksi
git-klooni
cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py asenna
Kun se on valmis, molemmat kirjastot on asennettu onnistuneesti Raspberry Pi -laitteeseemme. Nyt voimme jatkaa laitteistoyhteyttä.
Piirikaavio:
Täydellinen kytkentäkaavio, joka yhdistää DH11: n Raspberry pi: n kanssa, on esitetty alla, se rakennettiin Fritzingillä. Seuraa liitäntöjä ja tee piiri
Sekä LCD- että DHT11-anturi toimii + 5 V: n virtalähteellä, joten käytämme Raspberry Pi: n 5 V: n nastoja molempien virtalähteeseen. DHT11-anturin lähtötapissa käytetään arvoa 1k vetovastusta, jos käytät moduulia, voit välttää tämän vastuksen.
Leikkuri potin 10k lisätään Vee pin LCD valvoa kontrasti LCD. Muutoin kaikki yhteydet ovat melko suoraviivaisia. Mutta kirjoita muistiin ne GPIO-nastat, joita käytät nastojen liittämiseen, koska tarvitsemme ohjelmasi. Alla olevan kaavion pitäisi antaa sinun selvittää GPIO-pin-numerot.
Käytä kaaviota ja tee liitännät piirikaavion mukaisesti. Käytin leipälevyä ja hyppyjohtoja liitäntöjen tekoon. Koska käytin DHT11-moduulia, johdin sen suoraan Raspberry Pi -laitteeseen. Laitteeni näytti tältä alla
Python-ohjelmointi DHT11-anturille:
Meidän on kirjoitettava ohjelma lukemaan lämpötilan ja kosteuden arvo DHT11-anturista ja näyttämään sama sitten LCD-näytöllä. Koska olemme ladanneet kirjastoja sekä LCD- että DHT11-antureille, koodin pitäisi olla melko suoraviivainen. Python täydellinen ohjelma löytyy lopussa tämän sivun, mutta voit lukea lisää ymmärtää, miten ohjelma toimii.
Meidän on tuotava LCD-kirjasto ja DHT11-kirjasto ohjelmaamme käyttääksemme siihen liittyviä toimintoja. Koska olemme jo ladanneet ja asentaneet ne Pi: ään, voimme yksinkertaisesti tuoda ne seuraavilla riveillä. Tuomme myös aikakirjaston viivetoiminnon käyttämistä varten.
tuontiaika # tuontiaika viivästetyn tuonnin luomiseksi Adafruit_CharLCD LCD- kuvana # Tuo LCD-kirjaston tuonti Adafruit_DHT # Tuo DHT-kirjasto anturille
Seuraavaksi meidän on määritettävä, mihin nastoihin anturi on kytketty ja minkä tyyppistä lämpötila-anturia käytetään. Muuttuja anturin_nimi on määritetty Adafruit_DHT.DHT11: lle, koska käytämme tässä DHT11-anturia. Anturin ulostulotappi on kytketty Vadelma Pi: n GPIO 17: een, ja siksi osoitamme 17 sensor_pin-muuttujalle alla olevan kuvan mukaisesti.
sensor_name = Adafruit_DHT.DHT11 # käytämme DHT11-anturia sensor_pin = 17 # Anturi on kytketty PiIO GPIO17: een
Samoin meidän on määriteltävä, mihin GPIO-nastoihin LCD on kytketty. Tässä käytämme nestekidenäyttöä 4-bittisessä tilassa, joten meillä on neljä datanastaa ja kaksi ohjaintappia yhteyden muodostamiseksi pi: n GPIO-nastoihin. Voit myös liittää taustavalotapin GPIO-nastaan, jos haluamme ohjata myös taustavaloa. Mutta toistaiseksi en käytä sitä, joten olen määrittänyt sille 0.
lcd_rs = 7 # LCD: n RSRS on kytketty GPIO 7: ään PI: ssä lcd_en = 8 # LCD: n LCD on kytketty GPIO 8: een PI: ssä lcd_d4 = 25 # LCD: n D4 on kytketty GPIO 25: een PI: ssä lcd_d5 = 24 # D5 LCD: stä on kytketty GPIO 24: een PI: ssä lcd_d6 = 23 # LCD: n D6 on kytketty GPIO 23: een PI: ssä lcd_d7 = 18 # LCD: n D7 on kytketty GPIO 18: een PI lcd_backlight = 0 # LED ei ole kytketty, joten osoitamme 0: lle
Voit myös liittää LCD-näytön 8-bittisessä tilassa Raspberry pi: n kanssa, mutta silloin vapaat nastat vähenevät.
Ladattua Adafruitin LCD-kirjastoa voidaan käyttää kaiken tyyppisiin LCD-näyttöihin. Tässä projektissamme käytämme 16 * 2 LCD-näyttöä, joten mainitsemme rivien ja sarakkeiden lukumäärän muuttujaksi alla olevan kuvan mukaisesti.
lcd_columns = 16 # 16 * 2 nestekidenäytölle lcd_rows = 2 # 16 * 2 nestekidenäytölle
Nyt kun olemme ilmoittaneet LCD-nastat ja nestekidenäytön rivien ja sarakkeiden määrän, voimme alustaa LCD-näytön seuraavalla rivillä, joka lähettää kaikki vaaditut tiedot kirjastoon.
lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) #Lähetä kaikki nastatiedot kirjastoon
Ohjelman käynnistämiseksi näytämme pienen introsanoman käyttämällä lcd.message () -toimintoa ja annamme sitten 2 sekunnin viiveen, jotta viesti on luettavissa. Tulostettaessa toiselle riville komentoa \ n voidaan käyttää alla olevan kuvan mukaisesti
LCD .message ('DHT11 Pi \ n -CircuitDigest') #Give intro viesti time.sleep (2) #wait 2 sekuntia
Lopuksi, sisällä meidän kun taas silmukan pitäisi lukea arvon lämpötilan ja kosteuden anturista ja näyttää sen nestekidenäytöllä 2 sekunnin välein. Koko ohjelma while-silmukan sisällä on esitetty alla
kun taas 1: # Ääretön silmukka
kosteus, lämpötila = Adafruit_DHT.read_retry (anturin_nimi, sensor_pin) #lue anturista ja tallenna vastaavat arvot lämpötilan ja kosteuden varibale
lcd.clear () #Poista LCD-näyttö lcd.message ('Lämpötila =%.1f C'% lämpötila) # Näytä lämpötilan lcd.message arvo ('\ nHum =%.1f %%'% kosteus) #Display Kosteuden kesto. uni (2) # Odota 2 sekuntia ja päivitä sitten arvot
Voimme helposti saada lämpötilan ja kosteuden arvon anturista käyttämällä tätä yksittäistä alla olevaa riviä. Kuten näette, se palauttaa kaksi arvoa, jotka on tallennettu vaihtelevaan kosteuteen ja lämpötilaan. Sensor_name ja sensor_pin tiedot välitetään parametrit; nämä arvot päivitettiin ohjelman alussa
kosteus, lämpötila = Adafruit_DHT.read_retry (anturin_nimi, anturin_nasta)
Muuttujan nimen näyttämiseksi nestekidenäytössä voimme käyttää tunnuksia, kuten & d,% c jne. Tässä, koska näytämme liukuluvun numeron, jossa on vain yksi numero desimaalipilkun jälkeen, käytämme tunnusta%.1f arvon näyttämiseen vaihteleva lämpötila ja kosteus
lcd .message ('Temp =%.1f C'% lämpötila) lcd .message ('\ nHum =%.1f %%'% kosteus)
Kosteuden ja lämpötilan mittaaminen Vadelma Pi: llä:
Tee liitännät piirikaavion mukaisesti ja asenna tarvittavat kirjastot. Käynnistä sitten tämän sivun lopussa annettu python-ohjelma. Nestekidenäytössä tulisi olla esittelyviesti ja sen jälkeen nykyinen lämpötila- ja kosteusarvo alla olevan kuvan mukaisesti.
Jos nestekidenäytössä ei näy mitään, tarkista, näkyykö python-kuori-ikkunassa virheitä, jos virhettä ei näy, tarkista yhteytesi vielä kerran ja säädä potentiometriä muuttamaan nestekidenäytön kontrastitasoa ja tarkista, tuleeko mitään näyttö.
Toivottavasti ymmärrät projektin ja nautit sen rakentamisesta, jos sinulla on ollut ongelmia tämän tekemisen yhteydessä, ilmoita siitä kommenttiosastossa tai käytä foorumia tekniseen apuun. Yritän parhaani mukaan vastata kaikkiin kommentteihin.
Voit myös tarkistaa muut projektimme käyttämällä DHT11: tä toisen mikrokontrollerin kanssa.