본문 바로가기

개발자/라즈베리파이4

RaspberryPi AM2301 온도 습도 센서 python 코드 using the DHT22

반응형

 

 

RaspberryPi AM2301 온도 습도 센서 python 코드 using the DHT22 

 

파트명이 달라도 알고보면 결국은 dht22 온습도 센서다. 두려움에 떨지 말고 무엇이든 하면 결국 다다르게 된다. 우리가 가고자 하는 곳에. 본 포스팅은 Ubidots 사이트에 온도 습도 센서의 데이터를 수집하여 올리는 과정에서 참고로 작성하는 것입니다. 출처 문서는 DHT22 사용방법 링크를 참고하십시오.

 

DHT-22 (AM2302라고도 함)는 디지털 출력 상대 습도 및 온도 센서입니다. 용량성 습도 센서와 서미스터를 사용하여 주변 공기를 측정하고 데이터 핀에 디지털 신호를 뱉어냅니다. 이 튜토리얼에서는 Raspberry Pi 에서 DHT-22 센서를 사용하는 방법을 배웁니다.

 

튜토리얼 업데이트와 dht22 사용법에 대한 다른 내용은 이곳을 참고하십시요. 

 

시작합니다.

 

AM2301 센서 모양과 Pinmap

 

DHT22는 저렴한 기본 디지털 온도 및 습도 센서입니다. 용량성 습도 센서와 서미스터를 사용하여 주변 공기를 측정하고 데이터 핀에 디지털 신호를 뱉어냅니다 (아날로그 입력 핀 필요 없음). 연결은 간단합니다. 왼쪽의 첫 번째 핀은 3.3V 전원, 두 번째 핀은 데이터 입력 핀, 가장 오른쪽의 핀은 접지입니다.

기술적 세부 사항:

  • 전원 : 3.3V ~ 5V
  • 최대 전류 : 2.5mA
  • 습도 : 0-100 %, 2-5 % 정확도
  • 온도 : -40 ~ 80 ° C, ± 0.5 ° C 정확도 

 

센서모듈이 아니라 아래 이미지에 나오는 DHT22 센서를 사용한다면 우리는 GPIO 확장보드, 블레드 보드, 센서, 10k오옴 저항이 필요할 것이다. 여기에서는 아래 이미지와 같은 AM2301 센서 모듈을 직접 사용하기로 합니다. 아래 회로 사진은 참고하십시요. AM2301 센서는 아니지만 dht22 센서 사용과 동일하므로 회로도를 참고로 올려둡니다.

 

연결도 이미지 출처 https://www.instructables.com/Raspberry-Pi-Tutorial-How-to-Use-the-DHT-22/

 

파이선 코드를 입력하기 전에 Raspberry Pi에 DHT 라이브러리를 다운로드하여 설치해야합니다. 터미널 창을 열고 다음 사항을 하나씩 입력합니다. 아래 명령어를 하나씩 실행하는 과정과 출력을 아래에 표시합니다. 라즈베리파이 환경과 설정에 따라 다르게 나올 수도 있지만 유념치 마시고 결과 위주로 확인하십시오. 다 설치가 되었으면 재부팅이 필요할 수 있습니다.

 

  • git clone https://github.com/adafruit/Adafruit_Python_DHT.git
  • cd Adafruit_Python_DHT
  • sudo apt-get update
  • sudo apt-get install build-essential python-dev
  • sudo python setup.py install

 


pi@raspberrypi:~ $ git clone https://github.com/adafruit/Adafruit_Python_DHT.git
'Adafruit_Python_DHT'에 복제합니다...
remote: Enumerating objects: 325, done.
remote: Total 325 (delta 0), reused 0 (delta 0), pack-reused 325
오브젝트를 받는 중: 100% (325/325), 98.35 KiB | 0 bytes/s, 완료.
델타를 알아내는 중: 100% (176/176), 완료.


pi@raspberrypi:~ $ cd Adafruit_Python_DHT


pi@raspberrypi:~/Adafruit_Python_DHT $ sudo apt-get update
받기:1 http://archive.raspberrypi.org/debian stretch InRelease [25.4 kB]
받기:2 http://raspbian.raspberrypi.org/raspbian stretch InRelease [15.0 kB]
받기:3 http://raspbian.raspberrypi.org/raspbian stretch/main armhf Packages [11.7 MB]
내려받기 11.7 M바이트, 소요시간 24초 (481 k바이트/초)
패키지 목록을 읽는 중입니다... 완료
 
 
pi@raspberrypi:~/Adafruit_Python_DHT $ sudo apt-get install build-essential python-dev
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
build-essential is already the newest version (12.3).
python-dev is already the newest version (2.7.13-2).
python-dev 패키지는 수동설치로 지정합니다.
다음 패키지가 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  libmicrodns0 realpath
Use 'sudo apt autoremove' to remove them.
0개 업그레이드, 0개 새로 설치, 0개 제거 및 9개 업그레이드 안 함.


pi@raspberrypi:~/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'
reading manifest template 'MANIFEST.in'
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/Beaglebone_Black.py -> build/lib.linux-armv7l-2.7/Adafruit_DHT
copying Adafruit_DHT/platform_detect.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_DHT
copying Adafruit_DHT/common.py -> 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
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-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fdebug-prefix-map=/build/python2.7-ajc2xi/python2.7-2.7.13=. -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=gnu99
arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fdebug-prefix-map=/build/python2.7-ajc2xi/python2.7-2.7.13=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c source/common_dht_read.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-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fdebug-prefix-map=/build/python2.7-ajc2xi/python2.7-2.7.13=. -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_read.o -std=gnu99
arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fdebug-prefix-map=/build/python2.7-ajc2xi/python2.7-2.7.13=. -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 -std=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 -Wdate-time -D_FORTIFY_SOURCE=2 -g -fdebug-prefix-map=/build/python2.7-ajc2xi/python2.7-2.7.13=. -fstack-protector-strong -Wformat -Werror=format-security -Wl,-z,relro -Wdate-time -D_FORTIFY_SOURCE=2 -g -fdebug-prefix-map=/build/python2.7-ajc2xi/python2.7-2.7.13=. -fstack-protector-strong -Wformat -Werror=format-security build/temp.linux-armv7l-2.7/source/_Raspberry_Pi_2_Driver.o build/temp.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_Driver.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/Beaglebone_Black.py -> build/bdist.linux-armv7l/egg/Adafruit_DHT
copying build/lib.linux-armv7l-2.7/Adafruit_DHT/Raspberry_Pi_2_Driver.so -> build/bdist.linux-armv7l/egg/Adafruit_DHT
copying build/lib.linux-armv7l-2.7/Adafruit_DHT/platform_detect.py -> build/bdist.linux-armv7l/egg/Adafruit_DHT
copying build/lib.linux-armv7l-2.7/Adafruit_DHT/Raspberry_Pi.py -> build/bdist.linux-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/common.py -> 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-armv7l/egg/Adafruit_DHT
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 platform_detect.pyc
byte-compiling build/bdist.linux-armv7l/egg/Adafruit_DHT/Raspberry_Pi.py to Raspberry_Pi.pyc
byte-compiling build/bdist.linux-armv7l/egg/Adafruit_DHT/Raspberry_Pi_2.py to Raspberry_Pi_2.pyc
byte-compiling build/bdist.linux-armv7l/egg/Adafruit_DHT/common.py to common.pyc
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
creating stub loader for Adafruit_DHT/Raspberry_Pi_2_Driver.so
byte-compiling build/bdist.linux-armv7l/egg/Adafruit_DHT/Raspberry_Pi_2_Driver.py 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-INFO
copying Adafruit_DHT.egg-info/dependency_links.txt -> build/bdist.linux-armv7l/egg/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.4.0-py2.7-linux-armv7l.egg' and adding 'build/bdist.linux-armv7l/egg' to it
removing 'build/bdist.linux-armv7l/egg' (and everything under it)
Processing Adafruit_DHT-1.4.0-py2.7-linux-armv7l.egg
Copying Adafruit_DHT-1.4.0-py2.7-linux-armv7l.egg to /usr/local/lib/python2.7/dist-packages
Adding Adafruit-DHT 1.4.0 to easy-install.pth file

Installed /usr/local/lib/python2.7/dist-packages/Adafruit_DHT-1.4.0-py2.7-linux-armv7l.egg
Processing dependencies for Adafruit-DHT==1.4.0
Finished processing dependencies for Adafruit-DHT==1.4.0
pi@raspberrypi:~/Adafruit_Python_DHT $
pi@raspberrypi:~/Adafruit_Python_DHT $

 

이제 Adafruit 드라이버를 얻으려면 Pi 시스템을 재부팅해야합니다. 다음 명령어를 사용하세요. $sudo reboot 입니다.

 

아래 파이선 코드를 작성하세요. 파일 이름은 dht22.py 입니다. 에디터는 nano 에디터를 사용합니다. 에디터를 다음과 같은 명령어로 실행하여 아래 코드를 넣고 저장합니다.

$nano dht22.py

 

#Libraries
import Adafruit_DHT as dht
from time import sleep
#Set DATA pin
DHT = 4
while True:
    #Read Temp and Hum from DHT22
    h,t = dht.read_retry(dht.DHT22, DHT)
    #Print Temperature and Humidity on Shell window
    print('Temp={0:0.1f}*C  Humidity={1:0.1f}%'.format(t,h))
    sleep(5) #Wait 5 seconds and read again

 

파이선 코드를 실행하세요.

$python dht22.py

 

결과는 아래와 같이 5초 간격으로 반복하여 온도와 습도를 출력합니다. 축하합니다.

 

pi@raspberrypi:~ $ python dht22.py
Temp=25.2*C  Humidity=34.3%
Temp=25.2*C  Humidity=34.3%
Temp=25.2*C  Humidity=34.0%
Temp=25.5*C  Humidity=33.6%
Temp=25.5*C  Humidity=33.2%
Temp=25.7*C  Humidity=32.9%
Temp=25.9*C  Humidity=32.3%
Temp=26.0*C  Humidity=32.4%
Temp=26.3*C  Humidity=32.1%
Temp=26.4*C  Humidity=31.8%
Temp=26.5*C  Humidity=31.5%
Temp=27.0*C  Humidity=31.2%
Temp=27.0*C  Humidity=31.1%

 

 

 

 

반응형

더욱 좋은 정보를 제공하겠습니다.~ ^^