4. ESP32 DHT11 And LCD - EnglishNo/ESP32 GitHub Wiki
20230331_162124.mp4
ํด์ผ ํ ์ผ
- ESP32 ์ค๋น
- DHT11ํ๊ณ ESP32 ์ฐ๊ฒฐ
- DHT11 ์๋ ์คํ
- ESP32ํ๊ณ LCD ์ฐ๊ฒฐ
- LCD ์ ์์ ์ผ๋ก ์๋ํ๋ ์ง ํ์ธํ๊ธฐ
* DHT11์ ์๊น์
DHT11๋ ์จ์ต๋์ผ์๋ก, ESP32๋ฅผ ํตํด ์จ๋๋ ์ต๋๋ฅผ ์ฒดํฌํ ๋ ์ฐ๋ ์ผ์์ด๋ค. ์ฐธ๊ณ ๋ก DHT22๋ผ๊ณ DHT11๋ณด๋ค ์ฑ๋ฅ์ด ๋ ์ข๊ณ , ์ ํํ ์จ๋๋ ์ต๋ ์ฒดํฌ๊ฐ ๊ฐ๋ฅํ ์ผ์๋ ์์ผ๋, ์ฐ๋ฆฌ๋ ๋ ๊ฐ์ผ DHT11๋ฅผ ํตํด ์ค์ตํ๋ค.
ESP32ํ๊ณ DHT11๋ฅผ ์ฐ๊ฒฐํ๋ ๋ฒ
- ESP32ํ๊ณ DHT11๋ฅผ ์ค๋นํ๋ค.
- DHT11๋ฅผ ์ ์ ์ ํตํด ๋ธ๋ ๋ ํ์์ ESP32ํ๊ณ ์ฐ๊ฒฐ์ด ๋๋๋ก ํ๋๋ฐ, DHT11์์ ์ ์ ๊ฝ๋ ๊ณณ ์๋ฅผ ๋ณด๋ฉด GND, DATA, VCC์ด ์๋๋ฐ, GND๋ ESP32์ GNDํ์ด ์ฐ๊ฒฐ๋ ์ค์, DATA๋ FLASH๊ฐ์ ํน์ํ ํ์ ์ ์ธํ ๋ชจ๋ ํ(GPIO14, GPIO21 ๋ฑ ๊ทผ๋ฐ ์ด์ํ๊ฒ๋ GPIO12์ ๊ฝ์ผ๋ฉด ์ปดํ์ผ์ด ์คํจํจ), VCC๋ 3.3Vํ์ด ๊ฝํ ์ค์๋ค๊ฐ ์ฐ๊ฒฐํ๋ค.(5Vํ์ด ์ฐ๊ฒฐ๋ ๋ผ์ธ์ ๊ฝ๋ค๊ฐ ์๋ช
์ด ๊น์ด๊ฑฐ๋ ๊ณ ์ฅ๋ ์๋ ์์ผ๋ 3.3V์ ๊ฝ์ ๊ฒ์ด๋ค.)
- ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๋ค.
#include "DHT.h" // DTH.h ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐ DHT dht(13, DHT11); // DHT ์ค์ dht(ํ, DHT ์ข ๋ฅ)void setup() {
Serial.begin(9600); // ํจ์ ๊ดํธ ์์ ์ซ์๋ ์๋ฆฌ์ผ ํต์ ์๋๋ฅผ ์๋ฏธ, 9600(9600bps (๋นํธ/์ด))๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๊ฐ
dht.begin(); // ์ผ์์ ํต์ ํ๊ธฐ ์ ์ ์ ํ ๋๊ธฐ ์๊ฐ์ ์ค์ ํ๊ณ , ํต์ ํ๋กํ ์ฝ์ ์ด๊ธฐํํ๋ ํจ์, DHT11์์ ํต์ ์ด๊ธฐํํ๊ณ , ์ธก์ ์ ์์ํ๊ธฐ ์ํ ์์ ์ ์ํํ๋ ํจ์
}void loop() {
int tem = dht.readTemperature(); // ์จ๋ ๊ฐ ์ ์ํ ๋ณ์ tem์ ์ ์ฅ
int hum = dht.readHumidity(); // ์ต๋ ๊ฐ ์ ์ํ ๋ณ์ hum์ ์ ์ฅ
Serial.print(F("Hum: ")); // ๋ฌธ์ฅ "Hum: " ์๋ฆฌ์ผ ๋ชจ๋ํฐ(Serial Monitor)์ ์ถ๋ ฅ
Serial.print(hum); // ์ต๋ ๊ฐ ์ถ๋ ฅ
Serial.print(F(" % ")); // ๋ฌธ์ฅ " % " ์๋ฆฌ์ผ ๋ชจ๋ํฐ(Serial Monitor)์ ์ถ๋ ฅSerial.print(F("Temp: "));
Serial.print(tem);
Serial.println(F(" *C "));
delay(1200);
}
- ์์ ์ฝ๋๋ฅผ ์์ฑํด USB ์ผ์ด๋ธ๋ฅผ ํตํด ์ปดํจํฐ์ ์ฐ๊ฒฐํด ์ปดํ์ผํ๋ค.
-.Clipchamp.3.mp4
* ์ฝ๋๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ํ๋ ๋ชจ์ต
- ์ฝ๋๊ฐ ์ ์์ ์ผ๋ก ์๋ํ๋ฉด Serial Monitor(์๋ฆฌ์ผ ๋ชจ๋ํฐ)์ ์จ๋ํ๊ณ ์ต๋๊ฐ ์ ์์ ์ผ๋ก ๋ฌ๋ค.
* LCD์ ์๊น์
- LCD๋ ์ก์ ๋์คํ๋ ์ด ๋๋ ์ก์ ํ์์ฅ์น๋ฅผ ์๋ฏธํ๋ฉฐ, ๋ท๋ฉด์ ๋น์ ๋ด๋ ๋ฐฑ๋ผ์ดํธ๋ฅผ ๋ฐฐ์นํ๊ณ ์๋ฉด์ ์ก์ ์ ๋์ด ์ ๊ธฐ์ ํธ์ ๋ฐ๋ผ ๋น์ ์ฐจ๋จํ๊ฑฐ๋ ํต๊ณผ์ํค๋ ๋ฐฉ์์ผ๋ก ๋ฌธ์๋ ์ซ์ ๋ฑ์ ํ์ํ๋ ์ฅ์น์ด๋ค.
- ์๋์ด๋ ์๋ฎฌ๋ ์ดํฐ์์ ์ ๊ณตํ๋ LCD๋ฅผ 1602 LCD๋ผ๊ณ ํ๋๋ฐ, ๊ฐ๋ก๋ก 16๊ฐ, ์ธ๋ก๋ก 2์ค์ ํํํ ์ ์๋ LCD๋ผ๋ ์๋ฏธ์ด๋ค. (์ฐธ๊ณ ๋ก ์ฐ๋ฆฌ ์์ ์๊ฐ์ ์ฌ์ฉํ LCD๋ ๊ฐ๋ก๋ก 16๊ฐ ๋ฌธ์, ์ธ๋ก๋ก 2์ค ํํํ ์ ์๋ค.)
- ์์ธํ ๋ด์ฉ์ https://wikidocs.net/30884
LCD์์ ์จ๋์ ์ต๋ ๋์ฐ๋ ๊ณผ์
- ESP32ํ๊ณ DHT11์ด ์ฐ๊ฒฐ๋ ๋ธ๋ ๋ํํ๊ณ LCD๋ฅผ ์ค๋นํ๋ค.
- LCD๋ฅผ ๋ธ๋ ๋ํ์ ์ฐ๊ฒฐ์ ํ๋๋ฐ, GND๋ ESP32์ GNDํํ๊ณ ์ฐ๊ฒฐ๋ ์ค์ ์ ์ ์ ํตํด ๊ฝ๊ณ , VCC๋ 5Vํ์ด ๊ฝํ ์ค์ ์ฐ๊ฒฐํ๋ค.
- ๊ทธ ๋ค์์ LCD์ SDAํํ๊ณ SCLํ๋ ์ ์ ์ ํตํด ์ฐ๊ฒฐํด์ผ ํ๋๋ฐ, ์ฃผ์ํ ์ ์ SDAํ์ ESP32์ GPIO21์ ๊ฝ๊ณ , SCLํ์ GPIO22์ ๊ฝ์์ผ ํ๋ค. ๋ง์ฝ ๊ทธ๋ ๊ฒ ํ์ง ์์ผ๋ฉด, ๋์ค์ ์ฝ๋๊ฐ ์ ์์ ์ผ๋ก ์ปดํ์ผ ๋๋๋ผ๋ LCD์ ์ ์์ ์ผ๋ก ์จ๋์ ์ต๋๊ฐ ํ์๋์ง ์๋๋ค.
- ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๋ค.
#include // DHT11๋ฅผ ์๋์ํค๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ์ ธ์ค๊ธฐ
#include // LCD๋ฅผ ์ฐ๊ฒฐ์ํค๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ์ ธ์ค๊ธฐ
#include // I2C(์ฌ๋ฌ ๊ฐ์ ๋๋ฐ์ด์ค๋ค์ด ์๋ก ํต์ ํ ์ ์๋๋ก ํ๋ ํต์ ํ๋กํ ์ฝ ์ค ํ๋๋ก, I2C๋ 2๊ฐ์ ์ (SCL, SDA)์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ก) ํต์ ์ ์ฌ์ฉ์ ์ํด ๊ฐ์ ธ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
int col = 16; // LCD์ ๊ฐ๋ก์ ๊ธธ์ด(16๊ฐ์ ๋ฌธ์ฅ)
int row = 2; // LCD์ ์ธ๋ก์ ๊ธธ์ด(2์ค)
LiquidCrystal_I2C lcd(0x27, col, row); // ์์๋๋ก LCD์ ์ฃผ์, ๊ฐ๋ก์ ๊ธธ์ด, ์ธ๋ก์ ๊ธธ์ด - LCD ์๋์ ์ํ ์ฝ๋DHT dht(13, DHT11); // DHT ์ค์ dht(ํ, DHT ์ข ๋ฅ)
void setup() {
Serial.begin(9600);
lcd.init(); // LCD ๋ชจ๋ ์ด๊ธฐํ
lcd.backlight(); // ํ๋ฉด ๋ฐ๊ธฐ ์ค์ (LCD์ ๋ฐฑ๋ผ์ดํธ๋ฅผ ์ผ์ค)
dht.begin();
}void loop() {
delay(1000);
printValues();
}// ์จ๋ํ๊ณ ์ต๋๋ฅผ LCD์ ํ์ํด ์ค ํจ์
void printValues() {
lcd.setCursor(0,0); // LCD์ ์ฒซ๋ฒ์งธ ์ค์ ๊ธ์จ๋ฅผ ํ์ํ๊ฒ ํด์ค
lcd.print(F("Hum: "));
lcd.print(dht.readHumidity());
lcd.print(F(" %"));lcd.setCursor(0,1); // LCD์ ๋๋ฒ์งธ ์ค์ ๊ธ์จ๋ฅผ ํ์ํ๊ฒ ํด์ค
lcd.print(F("Temp: "));
lcd.print(dht.readTemperature());
lcd.print(F(" *C"));
delay(2000);
lcd.clear(); // LCD์ ํ์๋ ๊ธ์ ์ง์์ฃผ๋ ํจ์
}
- ์์ ์ฝ๋๋ฅผ ์์ฑํด ์ปดํ์ผํ๋ค.
-.Clipchamp.4.mp4
* ์ฝ๋๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ํ๋ ๋ชจ์ต
- EN๋ฒํผ์ ๋๋ฅด๋ฉด ์ด์ LCD์ ์จ๋์ ์ต๋๊ฐ ํ์๋๋ค.
- DATAํ์ด ์์ ๋, ESP32์ ํน์ ํ์ ์ ์ธํ๊ณ ๊ฑฐ์ ๋ชจ๋ ํ์ ๊ฝ์๋ ๋๋ค๋ ๊ฒ์ ์๊ฒ ๋จ
- DHT11ํ๊ณ LCD๋ฅผ ๋์์ ์ธ๋ ค๋ฉด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ ธ์์ผ ํ๋ค๋ ๊ฒ์ ์๊ฒ ๋จ
- ์ ์ ์ ํตํด ESP32์ GNDํ์ -๊ทนํ๊ณ ์ฐ๊ฒฐ์ํค๋ฉด ๊ทธ -๊ทน์ GND ๊ธฐ๋ฅ์ ๊ฐ์ง๊ฒ ๋๋ค๋ ๊ฑธ ์๊ฒ ๋จ
- LCD์ "Hello World!"๊ฐ ๋์ค์ง ์์์.
- ์ด๋ ๋ค๋ฅธ LCD์๋ ๋์ค์ง ์์์ chat GPTํํ ๋ฌผ์ด๋ด.
- ๊ทธ๋ฆฌ๊ณ ์์ธ ์ค ํ๋๊ฐ LCD ์ฃผ์๋ฅผ ์๋ชป ์ ๋ ฅ ํ์ ์๋ ์๋ค๊ณ ํด์ ์ฃผ์๋ฅผ 0x3f์์ 0x27๋ก ๋ฐ๊พธ์ ์ ์ ์๋๋จ.
LCD์ ์จ๋์ ์ต๋ ๋์ฐ๊ธฐ์์...
- ์ฝ๋๋ฅผ ๋์์ํฌ ๋, ์ค๋ฅ๊ฐ ๋ ์ ์ปดํ์ผ์ด ์คํจํ์์.
- ๊ทธ๋์ ์ฝ๋๋ฅผ ์ดํด๋ดค์ ๋, ์คํ๊ฐ ๋ ๊ฒ์ ๋ฐ๊ฒฌํจ.
- ๊ทธ๋๋ ์ปดํ์ผ์ด ์๋์, ๋ค๋ฅธ ์ฝ๋๋ฅผ ๋ณด๋ฉด์ ๋น๊ตํด ๋ดค๋๋ฐ, ์จ๋๋ ์ต๋๋ฅผ ์๋ ค์ฃผ๋ ์ฝ๋๋ F()ํจ์ ์์ ๋ค์ด๊ฐ์ง ์๋ ๊ฒ์ ๋ฐ๊ฒฌํจ.
- F()ํจ์๋ฅผ ์ ๊ฑฐํ ๊ฒฐ๊ณผ, ๋๋์ด ์ ์์ ์ผ๋ก ์๋ํ๊ธฐ ์์ํจ.
- ์ง์์ LCDํ๊ณ DHT11๋ฅผ ๋ค์ ์ฐ๊ฒฐํ ๋, ์ด์ํ๊ฒ๋ LCD์ ์จ๋์ ์ต๋๊ฐ ๋จ์ง ์์ LCD๊ฐ ๋ ๊ณ ์ฅ๋ ๊ฒ ์๋๊น ์๊ฐ ํ์๋๋ฐ, LCD์ SDAํ์ GPIO21์ ๊ฝ๊ณ , SCLํ์ GPIO22์ ๊ฝ์ผ๋ฉด ์ ์ ์๋ํจ.