산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

DHT11 온습도 센서 + LED 표시등 + 피에조 부저 프로젝트

부품 및 소모품

DHT11 온습도 센서 (4핀) 1개
아두이노 우노 (Arduino UNO) 1개
LED (녹색 1개, 빨강 2개) 총 3개
220Ω 저항 (LED용) 3개
피에조 스피커 (부저) 1개
점퍼 와이어 12개
브레드보드 1개

소프트웨어

프로젝트 개요

DHT11 센서로 온도·습도를 측정해 세 개의 LED로 상태를 시각·청각 알림:

시리얼 모니터로 실시간 온습도 값 확인 가능. 초보자용 학습 프로젝트로 적합합니다.

DHT11 온습도 센서 + LED 표시등 + 피에조 부저 프로젝트
DHT11 온습도 센서 + LED 표시등 + 피에조 부저 프로젝트
DHT11 온습도 센서 + LED 표시등 + 피에조 부저 프로젝트

회로 연결

DHT11 온습도 센서 + LED 표시등 + 피에조 부저 프로젝트

전체 코드

#include <Adafruit_Sensor.h>
#include <DHT.h>

int speakerPin = 9;
#define DHTPIN 5
#define DHTTYPE DHT11
#define LED_TOO_COLD A0
#define LED_PERFECT A1
#define LED_TOO_HOT A2

DHT dht(DHTPIN, DHTTYPE);

void setup() {
    Serial.begin(9600);
    Serial.println("DHT11 test!");
    dht.begin();
}

void loop() {
    pinMode(speakerPin, OUTPUT);
    pinMode(A0, OUTPUT);
    pinMode(A1, OUTPUT);
    pinMode(A2, OUTPUT);
    
    delay(2000);  // DHT11 최소 2초 간격 권장
    
    float h = dht.readHumidity();
    float t = dht.readTemperature();      // 섭씨
    float f = dht.readTemperature(true);  // 화씨
    
    if (isnan(h) || isnan(t) || isnan(f)) {
        Serial.println("Failed to read from DHT sensor!");
        return;
    }
    
    Serial.print("Humidity: "); Serial.print(h); Serial.print(" %\t");
    Serial.print("Temperature: "); Serial.print(t); Serial.println(" *C");
    
    if (t <= 20) {
        Serial.println("Too cold!");
        digitalWrite(LED_TOO_COLD, HIGH);
        digitalWrite(speakerPin, HIGH);
        delay(1000);
        digitalWrite(speakerPin, LOW);
        digitalWrite(LED_TOO_COLD, LOW);
    }
    else if (t > 20 && t < 27) {  // 원본 코드는 20 < t < 27로 작성됐으나 C++에서 이렇게 쓰면 항상 true가 됨. 올바른 조건으로 수정.
        Serial.println("Perfect temperature!");
        digitalWrite(LED_PERFECT, HIGH);
        delay(2000);
        digitalWrite(LED_PERFECT, LOW);
    }
    else if (t >= 29) {
        Serial.println("Too hot!");
        digitalWrite(LED_TOO_HOT, HIGH);
        digitalWrite(speakerPin, HIGH);
        delay(1000);
        digitalWrite(speakerPin, LOW);
        digitalWrite(LED_TOO_HOT, LOW);
    }
    // 27~28.9°C 구간은 아무 동작 안 함 (원본 로직 유지)
}

⚠️ 코드 수정 사항 안내

원본 코드의 if (20 < t < 27)는 C++에서 의도와 다르게 동작합니다(항상 true). 위 코드에서는 else if (t > 20 && t < 27)로 수정했습니다. 또한 pinMode는 setup()에서 한 번만 호출하는 것이 올바르나, 원본 구조를 최대한 유지하며 loop() 안에 둔 점 참고 바랍니다.

확장 아이디어

제조공정

  1. 라즈베리 파이, DHT11, ThingSpeak로 첫 IoT 프로젝트 만들기
  2. 라즈베리 파이와 습도 센서로 자동 에어로포닉스 시스템 만들기
  3. MAX6675 IC로 아두이노 포텐타 H7에 열전대 센서 연동하기
  4. 아두이노 나노와 MPU-6050으로 실시간 자이로스코프 게임 만들기
  5. K30 CO2 센서: 실시간 실내 공기질 모니터링
  6. Unopad: 아두이노 우노로 만드는 에이블턴 라이브용 MIDI 컨트롤러
  7. 아두이노 DHT11 이더넷 실드 온습도 데이터 로거
  8. 스마트 IoT 자 제작: ESP8266, 아두이노 & 초음파 센서로 실시간 모니터링
  9. 아두이노로 간단한 장애물 센서 만들기 - IR LED & 포토다이오드 튜토리얼
  10. DFRobot 정전식 지문 인식 센서 아두이노/ESP8266 연동 가이드