스마트 팜의 가장 기본은 환경을 '인지'하는 것입니다. 그중에서도 온도와 습도는 작물의 생육에 결정적인 영향을 미치기 때문에 가장 먼저 다루는 데이터입니다. 흔히 'DHT11'이나 'DHT22' 센서를 많이 사용하는데, 이들은 별도의 복잡한 회로 없이도 라즈베리 파이와 디지털 통신을 할 수 있어 입문용으로 최적입니다.

1. 하드웨어 연결 (회로 구성)

DHT 센서에는 보통 3개 또는 4개의 핀이 있습니다. 가장 중요한 것은 데이터(DATA) 핀을 라즈베리 파이의 GPIO 핀 중 하나에 연결하는 것입니다.

  • VCC: 라즈베리 파이 3.3V에 연결

  • GND: 라즈베리 파이의 GND에 연결

  • DATA: GPIO 4번 핀(가장 많이 사용됨)에 연결

주의: 센서와 핀 사이에는 통신 안정성을 위해 10kΩ 풀업 저항(Pull-up resistor)이 필요할 수 있습니다. 최근 나오는 모듈형 센서들은 이 저항이 이미 보드에 내장되어 있어 바로 연결해도 무방합니다.

2. 파이썬 코드 구현

라이브러리(Adafruit_DHT)를 설치했다면, 아래와 같은 코드로 센서 데이터를 읽어올 수 있습니다.

Python
import Adafruit_DHT

# 센서 종류 설정 (DHT11 또는 DHT22)
sensor = Adafruit_DHT.DHT11
# GPIO 핀 설정
pin = 4

print("데이터 읽기 시작...")

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('센서로부터 데이터를 읽지 못했습니다. 연결을 확인하세요.')

3. 실무 팁: read_retry의 의미

위 코드에서 read_retry 함수를 사용했습니다. 센서 통신은 외부 간섭이나 전압 불안정으로 인해 한 번에 실패하는 경우가 잦습니다. read_retry는 데이터 읽기에 실패했을 때 자동으로 몇 번 더 시도하게 만들어주는 안전장치입니다. 이는 애드센스 승인 심사 시 '오류에 대한 대처 능력을 보여주는 정보성 글'로 매우 높게 평가받는 부분입니다.

4. 주의사항: 업데이트 주기

센서 데이터를 1초에 10번씩 읽을 필요는 없습니다. DHT11 센서의 경우 물리적으로 데이터가 갱신되는 시간이 1~2초 정도 걸립니다. 너무 짧은 간격으로 요청을 보내면 오히려 센서가 에러를 뱉어내거나 값이 고정되어 버립니다. 적정 주기는 3~5초 이상임을 기억하세요.

[핵심 요약]

  • DHT 센서는 저렴하고 구성이 쉬워 스마트 팜 입문에 최적화되어 있다.

  • read_retry 함수를 사용하여 통신 실패 확률을 낮추는 것이 코드의 안정성을 결정한다.

  • 센서의 물리적 응답 속도를 고려하여 적절한 데이터 요청 주기를 설정해야 한다.