92 Õhuniiskuse ja temperatuuri jälgimine Pytoni abil
Peatükk annab ülevaate
- kuidas andur ühendada Raspberry Pi lahendusega riistvaraliselt ja tarkvaraliselt.
Anduri ühendamine
Järgmisena proovime oma Raspberry-Pi lugeda õhu temperatuuri ja niiskust.
NB! Pinge all ühendades võib tekkida staatiline elekter ja seade võib rikneda. Seepärast skeemi kokku seadmiseks lülitage oma seade/arvuti kindlasti välja!!!
Paneme kokku oma elektriskeemi nagu pildil näha on. Alustame anduri ühendamisega.
See diagramm peaks aitama aru saada, kuhu Raspberry PI iga nõel (pin/kontakt) peab minema.
Anduri ühendame vastavalt ülalolevale joonisele. Anduri jala 1 ühendame RB Pi nõelaga 1, keskmise jala RB PI sama rea neljanda nõelaga ja jala 3 ühendame ülemise rea kolmanda nõelaga.
Pilt katseseadmest. Sellel seadmel on ka radiaator, mis ei ole kohustuslik. Ilma selleta tegelikult töötab Raspberry Pi aeglasemalt!
Programmeerimine
Teeme endale Pythoni programmi, millega saame lugeda temperatuuri ja õhuniiskust.
Näide: selle faili loomise alustamiseks võite oma Raspberry PI-sse sisestada järgmise käsu:
nano katse.py
Näide koodis:
Selgitame, mida programm peaks tegema:
Vajalike lisamoodulite paigaldamine
- import time – operatsioonid ajaga
- import board – operatsioonid nõelaga/kontaktidega
- import adafruit_dht – operatsioonid DHT anduritega
Näide: nüüd seadistame vastava anduri tüübi, mis on kasutusel ja millise nõelaga ühendatud: dhtDevice = adafruit_dht.DHT11(board.D4)
Sellel real määratleme anduri seaded, mida soovime DHT teegi jaoks kasutada. Adafruit DHT teegil on kolm valikut, mille saab valida sõltuvalt kasutatavast andurist. Meie valisime selles juhendis DHT11 anduri, seega määratlesime oma andurina “adafruit_dht.DHT11”. NB! Kui kasutate kas DHT22 või AM2302 andureid, võite kasutada vastavalt kas ’adafruit_dht.DHT22’ või ’adafruit_dht.AM2302’.
Sulgudes määrame (GPIO) nõela numbri, millega anduri andmesignali väljund on Raspberry PI-ga ühendatud (Käesoleval juhul nõel 4). NB! Kui kasutasite teist GPIO nõela/kontakti, muutke seda numbrit vajadusel.
Järgmisena käivitame pideva (lõputu) tsükli, kasutades lauset “while TRUE: “. See tsükkel töötab seni, kuni kasutaja Pythoni programmi seiskab.
Iga tsükli alguses loeme andurilt niiskuse ja temperatuuri näidud.
while True:
try:
temperature_c = dhtDevice.temperature
humidity = dhtDevice.humidity
Trükime andmed ekraanile vastavas formaadis:
print(
“Temp: {:.1f} C Humidity: {}% “.format(
temperature_c, humidity
)
)
Juhul, kui andmete lugemine ei peaks õnnestuma (vigu juhtub üsna sageli, DHT-andureid on raske lugeda), jätkake. Veahalduse kohta loe siit.
except RuntimeError as error:
print(error.args[0])
time.sleep(2.0)
continue
except Exception as error:
dhtDevice.exit()
raise error
Teeme väikese pausi 2s, sest anduri aeglase reageerimiskiiruse tõttu ei saa andurist DHT11 andmeid lugead mitee tihedamini kui kord 2 sekundi jooksul (DHT22 puhul on seeaeg 1 s).
time.sleep(2.0)
Salvestame ja käivitame käsurealt:
python katse.py
Näeme terminalis järgmist pilti: