오늘의 제작 가이드

ESP8266 + DHT22 실내 온습도 기록기

ESP8266에 DHT22를 연결하고 Arduino IDE에서 온도와 습도를 읽어 시리얼 모니터로 확인하는 기본 제작 가이드입니다. 이 단계가 끝나면 서버 전송, 저장, 알림 기능으로 확장할 수 있습니다.

DHT22와 ESP8266 배선을 확인할 수 있는 핀 이미지

완성 목표

USB로 연결한 ESP8266이 2초마다 DHT22 값을 읽고, Arduino IDE의 시리얼 모니터에 온도와 습도를 출력합니다. 처음에는 데이터 저장 없이 값이 정상적으로 들어오는지 확인하는 것이 목표입니다.

준비 부품

  • ESP8266 개발 보드: NodeMCU, Wemos D1 mini 계열
  • DHT22 온습도 센서: 3핀 모듈 또는 4핀 센서
  • 4.7kΩ~10kΩ 저항: 4핀 센서 사용 시 DATA 풀업용
  • USB 케이블, 브레드보드, 점퍼선

DHT22 모듈형 제품은 보드 안에 풀업 저항이 이미 들어간 경우가 많습니다. 센서 단품 4핀 타입이면 DATA와 VCC 사이에 풀업 저항을 넣는 편이 안정적입니다.

배선

예제 코드는 DHT22 DATA를 ESP8266의 D2(GPIO4)에 연결한 기준입니다. NodeMCU 보드의 D2 표기는 실제 GPIO4입니다.

DHT22 VCCESP8266 3V3
DHT22 DATAESP8266 D2(GPIO4)
DHT22 GNDESP8266 GND
풀업 저항DATA와 VCC 사이에 4.7kΩ~10kΩ

DHT22는 5V 전원에서도 동작하는 제품이 있지만, ESP8266 GPIO는 3.3V 기준입니다. 처음 제작할 때는 VCC도 3V3에 연결하는 구성이 안전합니다.

Arduino IDE 설정

  1. Arduino IDE에서 ESP8266 보드 패키지를 설치합니다.
  2. 보드 메뉴에서 사용하는 보드, 예를 들어 NodeMCU 1.0 또는 LOLIN(WEMOS) D1 mini를 선택합니다.
  3. 라이브러리 매니저에서 DHT sensor libraryAdafruit Unified Sensor를 설치합니다.
  4. USB 포트를 선택하고 아래 코드를 업로드합니다.

Arduino 예제 코드

Arduino IDE 예제 코드
1#include <DHT.h>
2
3#define DHTPIN D2
4#define DHTTYPE DHT22
5
6DHT dht(DHTPIN, DHTTYPE);
7
8void setup() {
9 Serial.begin(115200);
10 delay(1000);
11 Serial.println();
12 Serial.println("ESP8266 DHT22 room monitor start");
13 dht.begin();
14}
15
16void loop() {
17 float humidity = dht.readHumidity();
18 float temperature = dht.readTemperature();
19
20 if (isnan(humidity) || isnan(temperature)) {
21 Serial.println("DHT22 read failed. Check wiring and power.");
22 delay(2000);
23 return;
24 }
25
26 Serial.print("Temperature: ");
27 Serial.print(temperature, 1);
28 Serial.print(" C ");
29 Serial.print("Humidity: ");
30 Serial.print(humidity, 1);
31 Serial.println(" %");
32
33 delay(2000);
34}

온습도 값 확인

업로드가 끝나면 Arduino IDE의 시리얼 모니터를 열고 속도를 115200 baud로 맞춥니다. 정상이라면 아래처럼 값이 2초마다 표시됩니다.

시리얼 모니터 출력 예시
1ESP8266 DHT22 room monitor start
2Temperature: 24.8 C Humidity: 51.2 %
3Temperature: 24.8 C Humidity: 51.1 %
4Temperature: 24.9 C Humidity: 51.0 %

값이 안 나올 때

  • DHT22 read failed가 반복되면 VCC, GND, DATA 위치를 다시 확인합니다.
  • 4핀 센서 단품이면 DATA와 VCC 사이에 풀업 저항을 넣었는지 확인합니다.
  • 코드의 DHTPIN D2와 실제 연결 핀이 같은지 확인합니다.
  • 시리얼 모니터 속도가 115200인지 확인합니다.
  • 값이 가끔 튀면 센서를 손으로 만지지 말고 공기가 통하는 곳에 두고 10초 이상 기다립니다.

다음 확장

시리얼 모니터에서 값이 안정적으로 보이면, 다음 단계는 Wi-Fi 연결 후 웹서버로 값을 전송하는 것입니다. 확장편에서는 HTTP POST로 온습도 값을 보내고 PHP에서 받는 방법, 그리고 ESP-01 같은 소형 모듈을 배터리와 딥슬립으로 운용하는 기준을 다룹니다.