5.1 ESP32 온습도센서(DHT 11)와 액정 디스플레이(LCD) - sunbang123/Smart_device GitHub Wiki
- 온습도를 Serial Monitor에 출력하기
- LCD에 Hello world 출력하기
- 온습도를 LCD에 출력하기
- 아두이노에서 사용되는 온습도센서는 디지털 혹은 아날로그 신호를 출력하는 DHT(Digital Humidity and Temperature) 센서
- 온습도센서에서 아날로그 출력 신호는 습도와 온도 값으로 구성됩니다. 습도 값은 전기 저항을 이용하여 측정됨.
- 습도가 높을수록 전기 저항이 낮아지며, 습도가 낮을수록 전기 저항이 높아짐.
- 따라서 습도 측정 센서에서는 전기 저항값에 비례하는 아날로그 출력 신호를 생성함.

- 온도 값은 일반적으로 온도 계수가 있는 NTC(음극온도계) 센서를 사용하여 측정됨.
- 센서는 반도체 재료로 만들어지며, 온도가 올라가면 전기 저항이 증가함
- NTC 센서는 온도가 올라가면 전기 저항이 감소함.
- 이러한 방식으로 온도 측정 센서에서는 온도에 대한 아날로그 출력 신호를 생성함.
- 측정된 아날로그 신호는 디지털로 변환하여 아두이노 보드로 전달함.
- 이렇게 계산된 값은 사용자가 원하는 방식으로 표시하거나 다른 장치와 통신하는 데 사용될 수 있음
DHT 11 핀구조

- GND 핀: GND 핀은 전기 신호의 0V 기준점으로 사용되는 접지 핀. 전기 회로를 구성할 때는 GND 핀을 먼저 연결하고, 나머지 전기적 요소들도 GND 핀과 연결함.
- DATA 핀: 온습도 센서의 DATA 핀은 디지털 데이터 핀으로, 센서에서 측정된 온습도 값을 디지털 신호로 출력함.
- VCC 핀: 온습도 센서의 VCC 핀은 센서가 동작하는 데 필요한 전원 공급 핀. 3.3V 또는 5V의 전압을 필요로 함.
- 준비물 : 온습도 센서, ESP32, 브래드보드, 점퍼선 3개

- DHT 11 온습도 센서를 양극+에 연결함.
- 점퍼선을 GND핀 - GND, DATA핀 - PIN 13, VCC핀 - 3.3V에 연결함.
- 코드를 컴파일하고 아두이노 보드에 업로드하여 실행한 후, 아두이노에서 시리얼 모니터 창을 확인함. 출력: Temp: xx.x, xx.x *C
#include <DHT.h>
#define DHTPIN 13 // DHT11 센서 핀 번호
#define DHTTYPE DHT11 // DHT11 센서 타입설정
DHT dht(DHTPIN, DHT11);
void setup() {
Serial.begin(115200); // 시리얼 통신 시작
dht.begin(); // DHT11 센서 초기화
}
void loop() {
Serial.print(F("Hum: "));
Serial.print(dht.readHumidity());
Serial.print(F(" % "));
Serial.print(F("Temp: "));
Serial.print(dht.readTemperature());
Serial.println(F(" *C"));
delay(2000);
}
- Serial.begin(115200): 시리얼 통신을 시작함. 인수 115200은 시리얼 통신 속도를 나타냄.
- dht.begin(): DHT11 온습도 센서를 초기화함.
- Serial.print(): 시리얼 모니터에 값을 출력함.
- dht.readHumidity(): DHT11 센서에서 현재 습도 값을 읽어옴.
- dht.readTemperature(): DHT11 센서에서 현재 온도 값을 읽어옴.
- delay(2000): 2초 동안 코드 실행을 지연시킴.

- 준비물 : LCD, ESP32, 브래드보드, 점퍼선 4개

- 아두이노 라이브러리에서 LiquidCrystal by Arduino,Adafruit를 설치함.
- LCD에 연결한 점퍼선(암-수)을 GND핀 - GND, VCC핀 - 5V, SDA핀 - PIN 21, SCL핀 - PIN 22에 연결.
- 코드를 컴파일하고 아두이노 보드에 업로드하여 실행한 후, LCD 패널에 "Hello world"가 출력되는지 확인함.
#include <LiquidCrystal_I2C.h>
int lcdColumns = 16;
int lcdRows = 2;
LiquidCrystal_I2C lcd (0x27, lcdColumns, lcdRows); //0x27 or 0x3F
void setup(){
lcd.init();
lcd.backlight();
}
void loop(){
lcd.setCursor(0,0);
lcd.print("Hello, World!");
delay(1000);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Hello, World!");
delay(1000);
lcd.clear();
}
KakaoTalk_20230405_140326682.mp4
- 준비물 : LCD, 온습도센서, ESP32, 브래드보드, 점퍼선 7개

- DHT 11 온습도 센서를 빨간 레일에 연결.
- 브래드보드의 파란레일과 빨간레일: 전원 공급과 접지(Ground)를 위한 연결선
- 점퍼선을 GND핀 - GND, DATA핀 - PIN 13, VCC핀 - 3.3V에 연결.
- 아두이노 라이브러리에서 LiquidCrystal by Arduino,Adafruit를 설치.
- LCD에 연결한 점퍼선(암-수)을 GND핀 - GND, VCC핀 - 5V, SDA핀 - PIN 21, SCL핀 - PIN 22에 연결.
- 코드를 컴파일하고 아두이노 보드에 업로드하여 실행한 후, LCD 패널에 온습도가 출력되는지 확인. 출력: Temp: xx.x, xx.x *C
#include "DHT.h"
#define DHTPIN 13
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
unsigned long delayTime;
int lcdColumns = 16;
int lcdRows = 2;
LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows);
void setup(){
Serial.begin(115200);
lcd.init();
lcd.backlight();
dht.begin();
}
void loop(){
delay(1000);
printValues();
}
void printValues(){
lcd.setCursor(0,0);
lcd.print(F("Hum: "));
lcd.print(dht.readHumidity());
lcd.print(F(" %"));
lcd.setCursor(0,1);
lcd.print(F("Temp: "));
lcd.print(dht.readTemperature());
lcd.print(F(" *C "));
delay(2000);
lcd.clear();
}
KakaoTalk_20230405_145643052.mp4
연결할 핀이 늘어날수록 점퍼선을 브래드보드에 잘못 연결시키는 경우가 발생함.
- 첫번째로 핀번호를 잘못 연결했을때 아두이노 output에서 error가 발생하고, 두번째로 브래드보드 습도센서에서 누전됬을때 나는 탄 냄새가 났음.
- 이때 재빨리 USB를 뽑고 누전되서 상승한 센서의 온도를 식힘.
- 미리 그려놓은 설계도를 보면서 다시한번 올바르게 점퍼선을 연결했나 점검한 뒤 컴파일 해줌.
- 이렇게 하면 실습시 발생하는 실수를 줄일 수 있고 누전되는 결과를 막을 수 있음.
- 아두이노의 온습도센서는 DHT 센서를 사용하여 온도와 습도 값을 측정하는데, 이때 온도는 NTC 센서를 이용하여 아날로그 출력 신호로 전달되며, 습도는 전기 저항을 이용하여 아날로그 출력 신호를 생성한다는 것을 배움.
- 실습을 진행하면서 하드웨어 제작에서는 실수할 가능성이 있다는 점을 알게 되었고 전기적인 안전을 고려해야 한다는 것을 알게 됨.
- 하드웨어를 제작할 때에는 설계도와 함께 점검을 하여 안전하고 정확한 결과물을 만들 수 있도록 노력해야 한다는 것을 느낌.