Egy előző bejegyzésben sikeresen csatlakoztattunk egy 16×2-es LCD kijelzőt a Raspberry-hez. Ezt itt olvashatod. Ebben a posztban pedig egy DHT22-es hő és páratartalom mérőt is csatlakoztatunk, és a mért értékeket az LCD kijelzőn jelenítjük meg egy egyszerű kis mintaprogrammal.
Amire szükségünk lesz:
- A már meglévő Raspberry és LCD konfiguráció
- DHT22 digitális hő és páratartalom mérő modul
- 1db 4,7K ohm ellenállás
- némi vezeték
- jókedv
DHT22 ismertetése, bekötése, lábkiosztása:
A DHT22 digitális hőmérséklet és páratartalom mérő szenzor négy kivezetéses tokozásban kapható. Tápfeszültsége 3-5V közötti. A hőmérsékletet +-0.5 fok pontossággal, míg a relatív páratartalmat 2-5% pontossággal tudja mérni. A szenzor digitális kimenettel rendelkezik, 1 vezetékes Dallas kompatibilis protokollt használ, így egyszerűen illeszthető Raspberry-hez.
Műszaki jellemzők:
- Hőmérséklet mérési tartomány: -40-125°C/±0.5°C
- Páratartalom mérési tartomáány: 0-100%/±2-5%
- Mintavételezés: 0.5Hz (két másodpercenként új mérés)
- Méretek: 15.1mm X 25mm x 7.7mm
- Tápfeszültség: 3-5V
- Áramfelvétel: 2.5mA (mérés közben)
Bekötése egyszerű, akár a Raspberry-re is köthetjük a tápfeszültség és a GND pontokat. A kettes, adat láb és a tápfeszültség közé rakjunk egy 4.7KOhm-os ellenállást.
A GPIO pin kivezetést csatlakoztassuk a Raspberry egy szabad bemenetére, és jegyezzük is meg hová kötöttük, ez majd a mintaprogram futtatásakor kell.
A mintaprogramok beszerzése, előkészítése a használathoz:
Mint az előző demóban itt is az adafruit github-os forrását fogjuk használni. https://github.com/adafruit/Adafruit_Python_DHT
pi@pi2:~ $ git clone https://github.com/adafruit/Adafruit_Python_DHT.git Cloning into 'Adafruit_Python_DHT'... remote: Counting objects: 223, done. remote: Total 223 (delta 0), reused 0 (delta 0), pack-reused 223 Receiving objects: 100% (223/223), 71.72 KiB | 0 bytes/s, done. Resolving deltas: 100% (125/125), done. Checking connectivity... done. pi@pi2:~ $ pi@pi2:~ $ cd Adafruit_Python_DHT pi@pi2:~/Adafruit_Python_DHT $ pi@pi2:~/Adafruit_Python_DHT $ sudo python setup.py install running install running bdist_egg running egg_info creating Adafruit_DHT.egg-info writing Adafruit_DHT.egg-info/PKG-INFO writing top-level names to Adafruit_DHT.egg-info/top_level.txt writing dependency_links to Adafruit_DHT.egg-info/dependency_links.txt writing manifest file 'Adafruit_DHT.egg-info/SOURCES.txt' reading manifest file 'Adafruit_DHT.egg-info/SOURCES.txt' writing manifest file 'Adafruit_DHT.egg-info/SOURCES.txt' installing library code to build/bdist.linux-armv7l/egg running install_lib running build_py creating build creating build/lib.linux-armv7l-2.7 creating build/lib.linux-armv7l-2.7/Adafruit_DHT copying Adafruit_DHT/__init__.py -> build/lib.linux-armv7l-2.7/Adafruit_DHT copying Adafruit_DHT/Test.py -> build/lib.linux-armv7l-2.7/Adafruit_DHT copying Adafruit_DHT/Raspberry_Pi.py -> build/lib.linux-armv7l-2.7/Adafruit_DHT copying Adafruit_DHT/Raspberry_Pi_2.py -> build/lib.linux-armv7l-2.7/Adafruit_DH T copying Adafruit_DHT/Beaglebone_Black.py -> build/lib.linux-armv7l-2.7/Adafruit_ DHT copying Adafruit_DHT/platform_detect.py -> build/lib.linux-armv7l-2.7/Adafruit_D HT copying Adafruit_DHT/common.py -> build/lib.linux-armv7l-2.7/Adafruit_DHT running build_ext building 'Adafruit_DHT.Raspberry_Pi_2_Driver' extension creating build/temp.linux-armv7l-2.7 creating build/temp.linux-armv7l-2.7/source creating build/temp.linux-armv7l-2.7/source/Raspberry_Pi_2 arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototyp es -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c source/_Raspberry_Pi_ 2_Driver.c -o build/temp.linux-armv7l-2.7/source/_Raspberry_Pi_2_Driver.o -std=g nu99 arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototyp es -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c source/common_dht_rea d.c -o build/temp.linux-armv7l-2.7/source/common_dht_read.o -std=gnu99 arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototyp es -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c source/Raspberry_Pi_2 /pi_2_dht_read.c -o build/temp.linux-armv7l-2.7/source/Raspberry_Pi_2/pi_2_dht_r ead.o -std=gnu99 arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototyp es -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c source/Raspberry_Pi_2 /pi_2_mmio.c -o build/temp.linux-armv7l-2.7/source/Raspberry_Pi_2/pi_2_mmio.o -s td=gnu99 arm-linux-gnueabihf-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z ,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -D _FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security - Wl,-z,relro -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=for mat-security build/temp.linux-armv7l-2.7/source/_Raspberry_Pi_2_Driver.o build/t emp.linux-armv7l-2.7/source/common_dht_read.o build/temp.linux-armv7l-2.7/source /Raspberry_Pi_2/pi_2_dht_read.o build/temp.linux-armv7l-2.7/source/Raspberry_Pi_ 2/pi_2_mmio.o -lrt -o build/lib.linux-armv7l-2.7/Adafruit_DHT/Raspberry_Pi_2_Dri ver.so creating build/bdist.linux-armv7l creating build/bdist.linux-armv7l/egg creating build/bdist.linux-armv7l/egg/Adafruit_DHT copying build/lib.linux-armv7l-2.7/Adafruit_DHT/__init__.py -> build/bdist.linux -armv7l/egg/Adafruit_DHT copying build/lib.linux-armv7l-2.7/Adafruit_DHT/Test.py -> build/bdist.linux-arm v7l/egg/Adafruit_DHT copying build/lib.linux-armv7l-2.7/Adafruit_DHT/Raspberry_Pi_2_Driver.so -> buil d/bdist.linux-armv7l/egg/Adafruit_DHT copying build/lib.linux-armv7l-2.7/Adafruit_DHT/Raspberry_Pi.py -> build/bdist.l inux-armv7l/egg/Adafruit_DHT copying build/lib.linux-armv7l-2.7/Adafruit_DHT/Raspberry_Pi_2.py -> build/bdist .linux-armv7l/egg/Adafruit_DHT copying build/lib.linux-armv7l-2.7/Adafruit_DHT/Beaglebone_Black.py -> build/bdi st.linux-armv7l/egg/Adafruit_DHT copying build/lib.linux-armv7l-2.7/Adafruit_DHT/platform_detect.py -> build/bdis t.linux-armv7l/egg/Adafruit_DHT copying build/lib.linux-armv7l-2.7/Adafruit_DHT/common.py -> build/bdist.linux-a rmv7l/egg/Adafruit_DHT byte-compiling build/bdist.linux-armv7l/egg/Adafruit_DHT/__init__.py to __init__ .pyc byte-compiling build/bdist.linux-armv7l/egg/Adafruit_DHT/Test.py to Test.pyc byte-compiling build/bdist.linux-armv7l/egg/Adafruit_DHT/Raspberry_Pi.py to Rasp berry_Pi.pyc byte-compiling build/bdist.linux-armv7l/egg/Adafruit_DHT/Raspberry_Pi_2.py to Ra spberry_Pi_2.pyc byte-compiling build/bdist.linux-armv7l/egg/Adafruit_DHT/Beaglebone_Black.py to Beaglebone_Black.pyc byte-compiling build/bdist.linux-armv7l/egg/Adafruit_DHT/platform_detect.py to p latform_detect.pyc byte-compiling build/bdist.linux-armv7l/egg/Adafruit_DHT/common.py to common.pyc creating stub loader for Adafruit_DHT/Raspberry_Pi_2_Driver.so byte-compiling build/bdist.linux-armv7l/egg/Adafruit_DHT/Raspberry_Pi_2_Driver.p y to Raspberry_Pi_2_Driver.pyc creating build/bdist.linux-armv7l/egg/EGG-INFO copying Adafruit_DHT.egg-info/PKG-INFO -> build/bdist.linux-armv7l/egg/EGG-INFO copying Adafruit_DHT.egg-info/SOURCES.txt -> build/bdist.linux-armv7l/egg/EGG-IN FO copying Adafruit_DHT.egg-info/dependency_links.txt -> build/bdist.linux-armv7l/e gg/EGG-INFO copying Adafruit_DHT.egg-info/top_level.txt -> build/bdist.linux-armv7l/egg/EGG- INFO writing build/bdist.linux-armv7l/egg/EGG-INFO/native_libs.txt zip_safe flag not set; analyzing archive contents... creating dist creating 'dist/Adafruit_DHT-1.3.0-py2.7-linux-armv7l.egg' and adding 'build/bdis t.linux-armv7l/egg' to it removing 'build/bdist.linux-armv7l/egg' (and everything under it) Processing Adafruit_DHT-1.3.0-py2.7-linux-armv7l.egg Copying Adafruit_DHT-1.3.0-py2.7-linux-armv7l.egg to /usr/local/lib/python2.7/di st-packages Adding Adafruit-DHT 1.3.0 to easy-install.pth file Installed /usr/local/lib/python2.7/dist-packages/Adafruit_DHT-1.3.0-py2.7-linux- armv7l.egg Processing dependencies for Adafruit-DHT==1.3.0 Finished processing dependencies for Adafruit-DHT==1.3.0 pi@pi2:~/Adafruit_Python_DHT $
Remek, ha eddig eljutottunk, akkor már ki is próbálhatjuk működik e a hőmérő, bár itt még csak a konzolt használjuk megjelenítőként nem az LCD-t. Ha nem jelenik meg semmi, vagy hibaüzenetet kapunk, akkor ellenőrizzük a telepítést.
Az első teszt, még nem az LCD-re:
pi@pi2:~/Adafruit_Python_DHT/examples $ sudo ./AdafruitDHT.py 22 26
Temp=18.7* Humidity=47.2%
pi@pi2:~/Adafruit_Python_DHT/examples $
A 22 a modul típust jelöli (DHT11-nél ez az érték 11), míg a 26 a GPIO 26 portszámot jelöli.
Teszt, LCD modul használatával:
#!/usr/bin/python import time import sys import Adafruit_CharLCD as LCD import Adafruit_DHT # DHT konfig humidity, temperature = Adafruit_DHT.read_retry(22, 26) # Raspberry Pi pin configuration: lcd_rs = 27 # Note this might need to be changed to 21 for older revisi$ lcd_en = 22 lcd_d4 = 25 lcd_d5 = 24 lcd_d6 = 23 lcd_d7 = 18 lcd_backlight = 4 # Define LCD column and row size for 16x2 LCD. lcd_columns = 16 lcd_rows = 2 # Initialize the LCD using the pins above. lcd = LCD.Adafruit_CharLCD(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) if humidity is not None and temperature is not None: temp = 'Temp={0:0.1f} C'.format(temperature) humidity = 'Humidity={1:0.1f} %'.format(temperature,humidity) else: print('Failed to get reading. Try again!') # Print a two line message lcd.clear() lcd.message(temp + "\n" + humidity)
Hozzunk létre egy fájlt, és a fenti programot másoljuk bele. Módosítsuk a paramétereket a saját bekötésünknek megfelelően. “humidity, temperature = Adafruit_DHT.read_retry(22, 26)” mint feljebb már írtam 22 a DHT22, ha ilyen szenzorunk van akkor a 22 maradhat, 26 pedig a GPIO portszám. Ha másra kötöttük akkor azt a portszámot írjuk be itt.
Ha mindet jól csináltunk és futtatjuk a kis programunkat, akkor az LCD kijelzőn megjelenik az aktuális hőmérséklet és páratartalom.