4. ESP32 DHT11 And LCD - EnglishNo/ESP32 GitHub Wiki

ESP32๋ฅผ ํ†ตํ•ด DHT11๋ฅผ ์‚ฌ์šฉํ•ด LCD์— ์˜จ๋„์™€ ์Šต๋„ ์ธก์ •ํ•œ ๊ฑฐ ๋„์šฐ๊ธฐ

20230331_162124.mp4

ํ•ด์•ผ ํ•  ์ผ

  • ESP32 ์ค€๋น„
  • DHT11ํ•˜๊ณ  ESP32 ์—ฐ๊ฒฐ
  • DHT11 ์ž‘๋™ ์‹คํ—˜
  • ESP32ํ•˜๊ณ  LCD ์—ฐ๊ฒฐ
  • LCD ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ์ง€ ํ™•์ธํ•˜๊ธฐ

ESP32ํ•˜๊ณ  DHT11 ์—ฐ๊ฒฐํ•˜๊ธฐ

DHT11์ด๋ž€?

20230331_194223
* DHT11์˜ ์ƒ๊น€์ƒˆ

DHT11๋Š” ์˜จ์Šต๋„์„ผ์„œ๋กœ, ESP32๋ฅผ ํ†ตํ•ด ์˜จ๋„๋‚˜ ์Šต๋„๋ฅผ ์ฒดํฌํ•  ๋•Œ ์“ฐ๋Š” ์„ผ์„œ์ด๋‹ค. ์ฐธ๊ณ ๋กœ DHT22๋ผ๊ณ  DHT11๋ณด๋‹ค ์„ฑ๋Šฅ์ด ๋” ์ข‹๊ณ , ์ •ํ™•ํ•œ ์˜จ๋„๋‚˜ ์Šต๋„ ์ฒดํฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์„ผ์„œ๋„ ์žˆ์œผ๋‚˜, ์šฐ๋ฆฌ๋Š” ๋” ๊ฐ’์‹ผ DHT11๋ฅผ ํ†ตํ•ด ์‹ค์Šตํ•œ๋‹ค.

ESP32ํ•˜๊ณ  DHT11๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฒ•


    20230331_195035


  1. ESP32ํ•˜๊ณ  DHT11๋ฅผ ์ค€๋น„ํ•œ๋‹ค.

    20230331_195224


  2. DHT11๋ฅผ ์ „์„ ์„ ํ†ตํ•ด ๋ธŒ๋ ˆ๋“œ ํŒ์—์„œ ESP32ํ•˜๊ณ  ์—ฐ๊ฒฐ์ด ๋˜๋„๋ก ํ•˜๋Š”๋ฐ, DHT11์—์„œ ์ „์„  ๊ฝ‚๋Š” ๊ณณ ์œ„๋ฅผ ๋ณด๋ฉด GND, DATA, VCC์ด ์žˆ๋Š”๋ฐ, GND๋Š” ESP32์˜ GNDํ•€์ด ์—ฐ๊ฒฐ๋œ ์ค„์—, DATA๋Š” FLASH๊ฐ™์€ ํŠน์ˆ˜ํ•œ ํ•€์„ ์ œ์™ธํ•œ ๋ชจ๋“  ํ•€(GPIO14, GPIO21 ๋“ฑ ๊ทผ๋ฐ ์ด์ƒํ•˜๊ฒŒ๋„ GPIO12์— ๊ฝ‚์œผ๋ฉด ์ปดํŒŒ์ผ์ด ์‹คํŒจํ•จ), VCC๋Š” 3.3Vํ•€์ด ๊ฝ‚ํžŒ ์ค„์—๋‹ค๊ฐ€ ์—ฐ๊ฒฐํ•œ๋‹ค.(5Vํ•€์ด ์—ฐ๊ฒฐ๋œ ๋ผ์ธ์— ๊ฝ‚๋‹ค๊ฐ€ ์ˆ˜๋ช…์ด ๊น์ด๊ฑฐ๋‚˜ ๊ณ ์žฅ๋‚  ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ 3.3V์— ๊ฝ‚์€ ๊ฒƒ์ด๋‹ค.)

    2023-04-02 (1)

  3. ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•œ๋‹ค.

    #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);
    }


  4. ์œ„์˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด USB ์ผ€์ด๋ธ”๋ฅผ ํ†ตํ•ด ์ปดํ“จํ„ฐ์™€ ์—ฐ๊ฒฐํ•ด ์ปดํŒŒ์ผํ•œ๋‹ค.
    -.Clipchamp.3.mp4

    * ์ฝ”๋“œ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๋ชจ์Šต

    2023-03-31


  5. ์ฝ”๋“œ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋ฉด Serial Monitor(์‹œ๋ฆฌ์–ผ ๋ชจ๋‹ˆํ„ฐ)์— ์˜จ๋„ํ•˜๊ณ  ์Šต๋„๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋œฌ๋‹ค.

ESP32ํ•˜๊ณ  DHT11, LCD๋ฅผ ์—ฐ๊ฒฐํ•ด LCD์— ์˜จ๋„์™€ ์Šต๋„ ๋„์šฐ๊ธฐ

LCD์ด๋ž€?

20230402_135315
* LCD์˜ ์ƒ๊น€์ƒˆ

  • LCD๋Š” ์•ก์ • ๋””์Šคํ”Œ๋ ˆ์ด ๋˜๋Š” ์•ก์ • ํ‘œ์‹œ์žฅ์น˜๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ๋’ท๋ฉด์— ๋น›์„ ๋‚ด๋Š” ๋ฐฑ๋ผ์ดํŠธ๋ฅผ ๋ฐฐ์น˜ํ•˜๊ณ  ์•ž๋ฉด์— ์•ก์ •์„ ๋‘์–ด ์ „๊ธฐ์‹ ํ˜ธ์— ๋”ฐ๋ผ ๋น›์„ ์ฐจ๋‹จํ•˜๊ฑฐ๋‚˜ ํ†ต๊ณผ์‹œํ‚ค๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฌธ์ž๋‚˜ ์ˆซ์ž ๋“ฑ์„ ํ‘œ์‹œํ•˜๋Š” ์žฅ์น˜์ด๋‹ค.
  • ์•„๋‘์ด๋ˆ„ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ์ œ๊ณตํ•˜๋Š” LCD๋ฅผ 1602 LCD๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ๊ฐ€๋กœ๋กœ 16๊ฐœ, ์„ธ๋กœ๋กœ 2์ค„์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” LCD๋ผ๋Š” ์˜๋ฏธ์ด๋‹ค. (์ฐธ๊ณ ๋กœ ์šฐ๋ฆฌ ์ˆ˜์—…์‹œ๊ฐ„์— ์‚ฌ์šฉํ•œ LCD๋„ ๊ฐ€๋กœ๋กœ 16๊ฐœ ๋ฌธ์ž, ์„ธ๋กœ๋กœ 2์ค„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.)
  • ์ž์„ธํ•œ ๋‚ด์šฉ์€ https://wikidocs.net/30884

LCD์—์„œ ์˜จ๋„์™€ ์Šต๋„ ๋„์šฐ๋Š” ๊ณผ์ •


    20230402_105836


  1. ESP32ํ•˜๊ณ  DHT11์ด ์—ฐ๊ฒฐ๋œ ๋ธŒ๋ ˆ๋“œํŒํ•˜๊ณ  LCD๋ฅผ ์ค€๋น„ํ•œ๋‹ค.

    20230402_114527


  2. LCD๋ฅผ ๋ธŒ๋ ˆ๋“œํŒ์— ์—ฐ๊ฒฐ์„ ํ•˜๋Š”๋ฐ, GND๋Š” ESP32์˜ GNDํ•€ํ•˜๊ณ  ์—ฐ๊ฒฐ๋œ ์ค„์— ์ „์„ ์„ ํ†ตํ•ด ๊ฝ‚๊ณ , VCC๋Š” 5Vํ•€์ด ๊ฝ‚ํžŒ ์ค„์— ์—ฐ๊ฒฐํ•œ๋‹ค.
  3. ๊ทธ ๋‹ค์Œ์— LCD์˜ SDAํ•€ํ•˜๊ณ  SCLํ•€๋„ ์ „์„ ์„ ํ†ตํ•ด ์—ฐ๊ฒฐํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ฃผ์˜ํ•  ์ ์€ SDAํ•€์€ ESP32์˜ GPIO21์— ๊ฝ‚๊ณ , SCLํ•€์„ GPIO22์— ๊ฝ‚์•„์•ผ ํ•œ๋‹ค. ๋งŒ์•ฝ ๊ทธ๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š์œผ๋ฉด, ๋‚˜์ค‘์— ์ฝ”๋“œ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ปดํŒŒ์ผ ๋˜๋”๋ผ๋„ LCD์— ์ •์ƒ์ ์œผ๋กœ ์˜จ๋„์™€ ์Šต๋„๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š”๋‹ค.

    2023-04-02

  4. ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•œ๋‹ค.
    #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์— ํ‘œ์‹œ๋œ ๊ธ€์ž ์ง€์›Œ์ฃผ๋Š” ํ•จ์ˆ˜
    }


  5. ์œ„์˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ์ปดํŒŒ์ผํ•œ๋‹ค.
    -.Clipchamp.4.mp4

    * ์ฝ”๋“œ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๋ชจ์Šต
  6. EN๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ด์ œ LCD์— ์˜จ๋„์™€ ์Šต๋„๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค.

    ์ˆ˜์—…์„ ํ†ตํ•ด ์•Œ๊ฒŒ ๋œ ์ 

    • DATAํ•€์ด ์žˆ์„ ๋•Œ, ESP32์˜ ํŠน์ˆ˜ ํ•€์„ ์ œ์™ธํ•˜๊ณ  ๊ฑฐ์˜ ๋ชจ๋“  ํ•€์— ๊ฝ‚์•„๋„ ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋จ
    • DHT11ํ•˜๊ณ  LCD๋ฅผ ๋™์‹œ์— ์“ธ๋ ค๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋จ
    • ์ „์„ ์„ ํ†ตํ•ด ESP32์˜ GNDํ•€์„ -๊ทนํ•˜๊ณ  ์—ฐ๊ฒฐ์‹œํ‚ค๋ฉด ๊ทธ -๊ทน์€ GND ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค๋Š” ๊ฑธ ์•Œ๊ฒŒ ๋จ

    ๋ฌธ์ œ ๋ฐ ํ•ด๊ฒฐ๊ณผ์ •

    LCD ์ž‘๋™ ์‹คํ—˜์—์„œ...

    • LCD์— "Hello World!"๊ฐ€ ๋‚˜์˜ค์งˆ ์•Š์•˜์Œ.
    • ์ด๋Š” ๋‹ค๋ฅธ LCD์—๋„ ๋‚˜์˜ค์งˆ ์•Š์•„์„œ chat GPTํ•œํ…Œ ๋ฌผ์–ด๋ด„.
    • ๊ทธ๋ฆฌ๊ณ  ์›์ธ ์ค‘ ํ•˜๋‚˜๊ฐ€ LCD ์ฃผ์†Œ๋ฅผ ์ž˜๋ชป ์ž…๋ ฅ ํ–ˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ํ•ด์„œ ์ฃผ์†Œ๋ฅผ 0x3f์—์„œ 0x27๋กœ ๋ฐ”๊พธ์ž ์ •์ƒ ์ž‘๋™๋จ.

    LCD์— ์˜จ๋„์™€ ์Šต๋„ ๋„์šฐ๊ธฐ์—์„œ...


    • ์ฝ”๋“œ๋ฅผ ๋™์ž‘์‹œํ‚ฌ ๋•Œ, ์˜ค๋ฅ˜๊ฐ€ ๋– ์„œ ์ปดํŒŒ์ผ์ด ์‹คํŒจํ–ˆ์—ˆ์Œ.
    • ๊ทธ๋ž˜์„œ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ดค์„ ๋•Œ, ์˜คํƒ€๊ฐ€ ๋‚œ ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•จ.
    • ๊ทธ๋ž˜๋„ ์ปดํŒŒ์ผ์ด ์•ˆ๋˜์ž, ๋‹ค๋ฅธ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด์„œ ๋น„๊ตํ•ด ๋ดค๋Š”๋ฐ, ์˜จ๋„๋‚˜ ์Šต๋„๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์ฝ”๋“œ๋Š” F()ํ•จ์ˆ˜ ์•ˆ์— ๋“ค์–ด๊ฐ€์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•จ.
    • F()ํ•จ์ˆ˜๋ฅผ ์ œ๊ฑฐํ•œ ๊ฒฐ๊ณผ, ๋“œ๋””์–ด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๊ธฐ ์‹œ์ž‘ํ•จ.
    • ์ง‘์—์„œ LCDํ•˜๊ณ  DHT11๋ฅผ ๋‹ค์‹œ ์—ฐ๊ฒฐํ•  ๋•Œ, ์ด์ƒํ•˜๊ฒŒ๋„ LCD์— ์˜จ๋„์™€ ์Šต๋„๊ฐ€ ๋œจ์งˆ ์•Š์•„ LCD๊ฐ€ ๋˜ ๊ณ ์žฅ๋‚œ ๊ฒŒ ์•„๋‹๊นŒ ์ƒ๊ฐ ํ–ˆ์—ˆ๋Š”๋ฐ, LCD์˜ SDAํ•€์„ GPIO21์— ๊ฝ‚๊ณ , SCLํ•€์„ GPIO22์— ๊ฝ‚์œผ๋ฉด ์ •์ƒ ์ž‘๋™ํ•จ.
โš ๏ธ **GitHub.com Fallback** โš ๏ธ