본문 바로가기
Program/Language

파이썬을 활용한 온도센서 예제 : DHT11 및 DS18B20 센서 활용

by 소중하루 2025. 2. 23.
반응형

 

파이썬을 활용한 온도센서 예제

 

온도센서는 환경의 온도를 측정하고 데이터를 분석하는 데 필수적인 장치입니다. 파이썬을 이용하면 온도센서에서 읽은 데이터를 손쉽게 처리하고, 다양한 프로젝트에 응용할 수 있습니다.

이번 글에서는 파이썬으로 온도센서를 활용하는 방법과 실습 예제를 소개하겠습니다.


1. 사용 가능한 온도센서 종류

파이썬으로 온도 데이터를 읽어올 수 있는 센서는 여러 종류가 있으며, 가장 많이 사용되는 센서는 다음과 같습니다.

① DHT 시리즈 (DHT11, DHT22)

온도 및 습도를 동시에 측정할 수 있는 디지털 센서
✔ DHT11은 저가형이며, DHT22는 더 정밀한 측정 가능
라즈베리파이, 아두이노, ESP8266 등에서 사용 가능

② DS18B20

방수 기능이 있어 실외 및 액체 온도 측정 가능
✔ 1-Wire 프로토콜을 사용하여 여러 개의 센서를 연결 가능
정확한 온도 측정(±0.5°C 오차 범위)

이제, 파이썬으로 DHT11 및 DS18B20 센서를 활용하는 방법을 살펴보겠습니다.


2. DHT11 온도센서 활용 예제 (파이썬 + 라즈베리파이)

DHT11을 이용해 실시간 온도와 습도를 출력하는 파이썬 코드입니다.

① 필요한 라이브러리 설치

DHT 센서를 파이썬에서 사용하려면 Adafruit_DHT 라이브러리가 필요합니다.
다음 명령어를 입력하여 라이브러리를 설치합니다.

pip install Adafruit_DHT

② 파이썬 코드 – 온도 및 습도 출력

import Adafruit_DHT

# 사용할 센서 종류 (DHT11 또는 DHT22)
sensor = Adafruit_DHT.DHT11

# GPIO 핀 번호 (라즈베리파이에서 사용)
pin = 4  # DHT11을 연결한 GPIO 핀

# 온도 및 습도 읽기
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)

if humidity is not None and temperature is not None:
    print(f"온도: {temperature:.1f}°C, 습도: {humidity:.1f}%")
else:
    print("센서로부터 데이터를 읽을 수 없습니다.")

✔ 실행하면 실시간으로 온도와 습도 데이터가 출력됩니다.
✔ 센서가 제대로 연결되지 않으면 데이터가 None으로 반환될 수 있으니 배선 및 핀 번호를 확인해야 합니다.


3. DS18B20 온도센서 활용 예제 (파이썬 + 라즈베리파이)

DS18B20은 1-Wire 프로토콜을 사용하는 디지털 온도센서로, 여러 개의 센서를 동시에 연결할 수 있습니다.

① DS18B20 설정 및 드라이버 활성화

라즈베리파이에서 DS18B20을 사용하려면 1-Wire 인터페이스를 활성화해야 합니다.

  1. 터미널에서 Raspberry Pi 설정 열기
    sudo raspi-config
  2. Interface Options → 1-Wire 활성화
  3. 설정을 적용한 후 라즈베리파이 재부팅
    sudo reboot

이제 DS18B20 센서가 연결된 디바이스 ID를 확인해야 합니다.
다음 명령어를 입력하여 연결된 센서를 확인합니다.

ls /sys/bus/w1/devices/

예를 들어, "28-00000xxxxxxx" 같은 형식의 디렉터리가 표시됩니다.
이제 해당 ID를 사용하여 데이터를 읽어올 수 있습니다.


② 파이썬 코드 – DS18B20 온도 출력

import glob

# DS18B20 센서 파일 경로 가져오기
base_dir = "/sys/bus/w1/devices/"
device_folder = glob.glob(base_dir + "28*")[0]  # 여러 개의 센서가 있을 경우 첫 번째 센서 선택
device_file = device_folder + "/w1_slave"

def read_temp():
    with open(device_file, "r") as f:
        lines = f.readlines()

    # 온도 데이터 추출
    if "YES" in lines[0]:
        temp_pos = lines[1].find("t=")
        if temp_pos != -1:
            temp_string = lines[1][temp_pos+2:]
            temp_c = float(temp_string) / 1000.0  # 온도를 섭씨로 변환
            return temp_c
    return None

# 온도 출력
temperature = read_temp()
if temperature is not None:
    print(f"현재 온도: {temperature:.2f}°C")
else:
    print("온도 센서에서 데이터를 읽을 수 없습니다.")

✔ 실행하면 실시간으로 온도 데이터가 출력됩니다.
✔ DS18B20은 1-Wire 프로토콜을 사용하므로 여러 개의 센서를 연결할 수도 있습니다.


4. 온도센서 데이터를 활용한 프로젝트 예제

온도센서 데이터를 활용하면 다양한 프로젝트를 만들 수 있습니다.

① IoT 기반 온도 모니터링 시스템

  • 온도센서 + Raspberry Pi + MQTT + 웹 대시보드를 활용하여 실시간 온도 모니터링 시스템을 구축
  • 센서 데이터를 클라우드에 업로드하고, 스마트폰이나 PC에서 확인 가능

② 온도에 따른 자동 환기 시스템

  • 온도가 일정 수준 이상이면 자동으로 창문을 열거나 팬을 작동하도록 설정
  • 라즈베리파이 + 온도센서 + 릴레이 모듈을 활용하여 구현

③ 데이터 로깅 및 분석

  • 장기간 온도 데이터를 수집하여 환경 분석 및 패턴 예측
  • Pandas 및 Matplotlib을 이용해 온도 변화를 그래프로 시각화

5. 파이썬으로 온도센서를 쉽게 활용할 수 있다

DHT11/DHT22 및 DS18B20 온도센서를 사용하면 파이썬으로 실시간 온도 데이터를 쉽게 수집할 수 있습니다.
온도 데이터를 활용하여 다양한 IoT 프로젝트를 만들 수 있으며, 자동화 시스템에도 적용할 수 있습니다.
파이썬 코드만으로 간단하게 센서 데이터를 읽고 가공할 수 있어 초보자도 쉽게 활용할 수 있습니다.

온도센서를 이용한 프로젝트는 스마트홈, 환경 모니터링, 산업 자동화 등 다양한 분야에서 활용될 수 있으므로, 직접 실습해 보며 응용해 보시기 바랍니다.

반응형

댓글