라즈베리파이에 온습도 센서를 장착 및 테스트 하는 방법입니다.
환경
- 라즈베리파이 4
- 온습도 센서: AM2302 (DHT22)
- https://www.adafruit.com/product/393 를 보면 AM2302는 DHT22에 케이블을 추가한 버전입니다만, 생산 업체마다 형태가 조금씩 다른거 같습니다. 제가 사용한 것은 ASAIR의 AM2302로 사진에 나오는 것처럼 케이블 연결이 쉽게 핀이 있는 형태입니다.
핀 연결
온습도 센서 + : 1번 핀 (3.3v) - 1번 핀 아니어도 3.3v 전압 핀이면 됩니다.
온습도 센서 - : 6번 핀 (Ground) - 6번 핀 아니어도 ground면 됩니다.
온습도 센서 out : GPIO 4 (7번핀) - 다른 GPIO 핀도 가능합니다.
Python Package 설치
Pi OS를 기본 옵션으로 설치한 경우에는 pip로 전역 설치가 가능한 패키지는 데비안에 등록된 파이썬 패키지만이 가능합니다. 그렇지 않은 패키지를 사용해야 하는 경우에는 가상 환경(venv)으로 설치해야 합니다.
mkdir dht22
cd dht22
python3 -m venv env --system-site-packages
source env/bin/activate
pip3 install adafruit-circuitpython-dht
관련된 상세 정보는
- 사전 준비: https://learn.adafruit.com/circuitpython-on-raspberrypi-linux/installing-circuitpython-on-raspberry-pi
- 패키지 설치 및 테스트 방법: https://learn.adafruit.com/dht-humidity-sensing-on-raspberry-pi-with-gdocs-logging/python-setup
이전에 사용되던 라이브러리인 Adafruit_DHT(https://github.com/adafruit/Adafruit_Python_DHT)는 지원 중단(deprecated) 됐습니다.
테스트
# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT
import time
import board
import adafruit_dht
# GPIO 번호. 4번이므로 D4. 만약 다른 번호이면 해당 번호로 지정. 예) 17이면 D17
dhtDevice = adafruit_dht.DHT22(board.D4)
while True:
try:
# Print the values to the serial port
temperature_c = dhtDevice.temperature
temperature_f = temperature_c * (9 / 5) + 32
humidity = dhtDevice.humidity
print(
"Temp: {:.1f} F / {:.1f} C Humidity: {}% ".format(
temperature_f, temperature_c, humidity
)
)
except RuntimeError as error:
# Errors happen fairly often, DHT's are hard to read, just keep going
print(error.args[0])
time.sleep(2.0)
continue
except Exception as error:
dhtDevice.exit()
raise error
time.sleep(2.0)
위의 코드를 test.py로 저장합니다.
python test.py
실행하면 다음과 같이 출력됩니다.
'생활코딩' 카테고리의 다른 글
라즈베리파이에 docker 설치하기 (2) | 2024.10.27 |
---|---|
GoAccess - nginx 접속 로그 분석 (0) | 2024.10.26 |
라즈베리파이 먼지센서 사용하기 (0) | 2024.10.24 |
라즈베리파이 64비트 OS 설치 (0) | 2024.10.23 |
라즈베리파이 - nginx - 특정 국가 접속 차단 (1) | 2024.10.22 |