Chapter 02. 라즈베리파이 Adafruit DHT - Marvic1130/EmbeddedSystem_Class GitHub Wiki
라즈베리파이 Adafruit DHT (4주차)
Adafruit DHT와 DHT센서(온습도 센서)
Adafruit DHT 는 라즈베리파이에서 DHT 온습도 센서를 제어할 수 있게하는 Python 라이브러리 이다.
DHT센서(온습도 센서)는 DHT11 과 DHT22 두가지 종류가 있는데 DHT11은 분해능은 온도 1%, 습도 1%로 정수단위로만 측정이 가능하고, DHT22는 온도 0.1%, 습도 0.1%로 DHT11 보다 분해능이 10배가 차이난다.
Adafruit DHT 설치하기
Adafruit DHT를 사용하려면 먼저 라즈베리파이에 파이썬을 설치해야한다.
먼저 아래의 명령어로 apt를 업데이트 한다.
sudo apt-get update
그다음 파이썬3를 설치한다.
sudo apt-get install python3-pip
기존에 사용하던 Adafruit_DHT 라이브러리는 오래되어 라즈베리4 칩셋이 업데이트가 되어있지 않다.
따라서 라즈베리4 이상의 기기는 sudo pip3 install Adafruit_DHT
명령어로 설치를 진행하면 DHT를 사용할 수 없게되고 adafruit-circuitpython-dht를 설치한다.
sudo pip3 install adafruit-circuitpython-dht
위에 명령어로 설치하면 아래 package가 설치된다.
Adafruit-Blinka
adafruit-circuitpython-busdevice
adafruit-circuitpython-dht
adafruit-circuitpython-requests
adafruit-circuitpython-typing
Adafruit-PlatformDetect
Adafruit-PureIO
아래 명령어를 사용하면 현재 설치되어있는 Package를 볼 수 있다
pip3 list
VSCode를 이용하여 라즈베리파이에 SSH로 연결하기
VSCode에서 SSH를 연결하는 이유
Reason1
라즈베리파이 내부에서 파이썬 파일을 실행하면 Thonny Python IDE를 사용하여 파일을 열게되는데 Thonny Python IDE를 사용할 때 많은 불편함을 느꼈다.
Reason2
라즈베리파이 내부에서 VSCode를 설치가 가능하지만 Latency가 길어서 사용시에 많은 불편함을 느꼈다.
VSCode에서 라즈베리 파이 SSH연결하기
먼저 VSCode 를 설치한다.
VSCode 에서 Extension 탭에서 Remote-SSH를 설치한다.
설치가 완료되면 왼쪽에 Remote 탭이 생긴다.
Remote 탭을 누르고 SSH TARGETS(SSH 대상)에서 + 버튼을 누른다.
아래의 창에 ssh 계정명@라즈베리파이IP 를 입력한다.
Ex: ssh [email protected]
or ssh [email protected]
라즈베리 ip와 계정이 올바르면 아래와같이 SSH 설정 파일 저장 경로를 물어본다.
이후 운영체제를 물어보는데 Linux를 선택한다.
연결이 정상적으로 완료되었다면 비밀번호를 입력하는 창이 나온다.
비밀번호를 입력하면 자동으로 필요한 프로그램을 설치한다.
설치 완료 후 장치와 연결되었다면 라즈베리파이 Remote SSH 창에서 Extension 탭에 들어가서 Python과 Python Extension Pack을 설치한다.
라즈베리에서 DHT 사용하기 실습
라즈베리 파이에 DHT11 연결하기
아래 사진은 라즈베리 파이 pin map이다.
위의 사진을 참고하여 DHT11을 연결한다.
DAT는 GPIO 4, VCC 는 5v, GND 는 Ground에 연결한다
VSCode Remote SSH 를 이용하여 라즈베리 내부폴더 열기 및 파일 생성
먼저 위에서 설정한 VSCode Remote SSH 에 접속한다.
접속이 완료되었으면 Explorer 탭에서 폴더 열기 버튼을 누르면 파일 경로를 입력하는 창이 나온다.
이때 원하는 경로를 입력한 후 파일을 생성한다.
코드 리뷰
Adafruit_dht를 사용하기위해 Package를 import한다.
import adafruit_dht
time 함수를 사용하기 위해 time Package를 import한다.
import time
Adafruit_dht.DHT11 객체 생성
dht_device = adafruit_dht.DHT11(4) # 4번 pin 사용
온습도 값 가져오기
temperature = dht_device.temperature # 온도값 가져오기
humidity = dht_device.humidity # 습도값 가져오기