온도 감지 전원 제어 콘센트

완성된 모습

요즘 나오는 전기 난로는 이러한 기능이 있다고는 하나, 현재 사용중인 난로에는 특별히 온도 조절 기능이라던가 타이머라던가 하는 기능이 붙어있지 않다. 때문에 밀폐된 방안에서 사용할 경우 온도가 지나치게 높다던가 하는 일들이 종종 발생하기 마련이다. 그렇다고 문을 열어놓자니 열효율이 너무 떨어지고..

그래서 만들어보았습니다.

Parts List

온도센서는 DHT-11, DHT-22 모두 상관 없이 사용할 수 있다. 습도도 측정이 가능하지만, 이번에는 온도만 사용하도록 한다.

Wiring

Code

코딩은 단순하다. 온도를 측정하여 설정 온도보다 낮을때는 릴레이에 HIGH 신호를 보내고, 높을때는 릴레이를 LOW 신호를 보내되, 이를 10분마다 한번씩 작동시켜서 지나치게 자주 켜고 꺼는 것을 방지하였다.

#include "DHT.h"

#define DHT_PIN 7

#define RELAY_PIN 3
#define LED_PIN 13

#define DHT_TYPE DHT11 
//#define DHTTYPE DHT22
//#define DHTTYPE DHT21

#define TARGET_TEMERATURE 27
#define MINUTE_TO_WAIT 10

DHT dht(DHT_PIN, DHT_TYPE);

unsigned int aMinute = 1000 * 60;
//unsigned int aMinute = 1000;

void setup() {
  Serial.begin(9600); 

  pinMode(RELAY_PIN, OUTPUT);
  pinMode(LED_PIN, OUTPUT);
  dht.begin();
  delay(2000);
}

void loop() {
  float currentHumidity = dht.readHumidity();
  float currentTemperature = dht.readTemperature(); 

  boolean currentStatus = ( currentTemperature < TARGET_TEMERATURE );

  Serial.print("Humidity: "); 
  Serial.print(currentHumidity);
  Serial.print(" %\t");
  Serial.print("Temperature: "); 
  Serial.print(currentTemperature);
  Serial.println(" *C\t");

  digitalWrite(RELAY_PIN, currentStatus);
  digitalWrite(LED_PIN, currentStatus);

  for ( int i = 0; i < MINUTE_TO_WAIT; i++ ) {
    delay(aMinute);
  }
}
comments powered by Disqus