라즈베리파이에서 온도와 습도의 센서값을 출력하기 위해선 DHT11 센서 모듈이 추가로 필요하다.

DHT11

상대 습도와 온도의 동시 측정이 가능한 센서로, 측정 가능범위와 오차 관련 스펙은 아래와 같다.


DHT11 모듈의 구조는 아래와 같고, 3번 핀은 사용되지 않는다.
대부분 판매 모듈은 풀업저항이 결합된 상태로 판매되어, 별도 납땜 필요 x


회로 연결

아래의 라즈베리파이 GPIO 핀 번호를 참고하여, DHT11과 라즈베이파이를 연결한다.

1. VCC - 3.3V or 5V 핀에 연결 (1, 2, 4)
2. GND - GND 핀 연결 (6, 14, 20, 30, 34, 39)
3. DATA - GPIO 중 원하는 핀에 연결


온습도 정보 읽기

라즈베리파이는 기본 내장 파이썬 언어를 제공하기에, C/C++이 아닌 파이썬으로 진행하겠다.
파이썬 코드에 들어가기 전, DHT11을 제어하기 위한 파이썬 라이브러리를 설치하는 과정은 아래와 같다.


// 라즈베리파이의 패키지 목록 최신화 및 업그레이드
sudo apt-get update
sudo apt-get upgrade

// 파이썬의 패키지를 다운받기 위한 툴 설치
sudo apt-get install python3-dev python3-pip

// 설치용 툴 최신화
pi@raspberrypi: sudo python3 -m pip install --upgrade pip setuptools wheel

// pip3 이용, DHT 패키지 설치
pi@raspberrypi:~ $ sudo pip3 install Adafruit_DHT

이후 .py 코드는 아래와 같다.


#!/usr/bin/python3

import Adafruit_DHT      # 라이브러리 호출

sensor = Adafruit_DHT.DHT11     #  sensor 객체 생성

pin = ??                        # ?? = Data핀의 GPIO핀 넘버

humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)   # 센서 객체에서 센서 값(온도, 습도) 읽기

      
if humidity is not None and temperature is not None: 
    print('Temp={0:0.1f}*C  Humidity={1:0.1f}%'.format(temperature, humidity))  # output 출력
else:                                                 
    print('Failed to get reading. Try again!')        #  에러 처리

output

Temp=??.?*C Humidity=??.?%



DHT이용 온도 습도 데이터 받아오기