콘텐츠로 이동

Chapter 9: 온습도 센서로 교실 환경 측정하기

🎯 이 장에서 배우는 것

  • [ ] DHT11 온습도 센서를 연결하고 데이터를 읽을 수 있다
  • [ ] 센서 라이브러리를 설치하고 사용할 수 있다
  • [ ] f-string으로 측정값을 깔끔하게 출력할 수 있다

⏱️ 예상 학습 시간: 약 45분


📚 핵심 개념

개념: 라이브러리 (Library)

"라이브러리는 미리 만들어진 도구 상자예요!" 🧰

요리할 때 직접 칼을 만들지 않고 사서 쓰듯이, 코딩도 누군가 만들어둔 기능을 가져다 씁니다.

flowchart LR A[😫 직접 만들기] --> B[센서 통신 코드 500줄...] C[😊 라이브러리 사용] --> D[import 한 줄로 끝!] style C fill:#e8f5e9,stroke:#4caf50 style D fill:#e8f5e9,stroke:#4caf50

DHT 라이브러리: 온습도 센서와 대화하는 복잡한 코드를 미리 만들어둔 도구


🔨 따라하기

Step 1: 라이브러리 설치하기

Thonny 하단의 Shell에서 입력:

from machine import Pin
import dht

체크포인트: 에러 없이 실행되면 성공!

Step 2: 센서 연결하고 측정하기

회로 연결: | DHT11 핀 | 피코 연결 | |---------|----------| | VCC (+) | 3.3V | | DATA | GP15 | | GND (-) | GND |

코드:

from machine import Pin
import dht
import time

sensor = dht.DHT11(Pin(15))  # GP15에 연결

while True:
    sensor.measure()  # 측정!
    temp = sensor.temperature()  # 온도 읽기
    hum = sensor.humidity()      # 습도 읽기

    print(f"🌡️ 온도: {temp}°C, 💧 습도: {hum}%")
    time.sleep(2)

실행 결과:

🌡️ 온도: 24°C, 💧 습도: 55%
🌡️ 온도: 24°C, 💧 습도: 56%

💡 f-string 팁: f"텍스트 {변수}" 형식으로 변수를 문장 안에 쏙!


📝 전체 코드

from machine import Pin
import dht
import time

sensor = dht.DHT11(Pin(15))

while True:
    sensor.measure()
    temp = sensor.temperature()
    hum = sensor.humidity()
    print(f"🌡️ 온도: {temp}°C, 💧 습도: {hum}%")
    time.sleep(2)

⚠️ 주의할 점

  1. 측정 간격은 2초 이상! - DHT11은 느린 센서예요
  2. sensor.measure() 먼저! - 이걸 호출해야 새 값을 읽어요

✅ 점검하기

  1. 라이브러리는 왜 사용하나요?
정답 확인복잡한 코드를 직접 작성하지 않고 미리 만들어진 기능을 가져다 쓰기 위해서입니다.
  1. f"온도: {temp}도"에서 {temp}의 역할은?
정답 확인변수 temp의 값이 그 자리에 들어갑니다.

🔗 다음 장 미리보기

측정한 온습도를 LED로 표시해볼까요? 🚦

다음 장에서는 온도가 높으면 빨간 LED, 쾌적하면 초록 LED가 켜지도록 만들어봐요!