코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2017-11-01 10:14:19
[이전 프로젝트 제작 가이드] 햇빛에 따라 움직이는 스마트 블라인드 만들기 (조도센서+서보모터)
1. 개요
여름하면 빼놓을 수 있즌 필수적인 가전 기기, 과연 무엇일까요?
아마도 선풍기 혹은 에어컨을 떠올리시게 될 것 입니다.
여름철 무더위를 이겨내기 위해서 냉방 기기는 우리 생활에 꼭 필요한 기기가 되었습니다.
하지만 이런 냉방 기기의 사용 이면에는 냉방용 전력 수요가 계속해서 증가한다는 우려도 있습니다.
실제로 2006년부터 현재까지 냉방수요는 지속적으로 증가하는 추이를 보이고 있으며, 여름철 에너지 절약이 필요한 시점입니다.
여름철 냉방 에너지 절약을 위한 방안에는 어떤 것들이 있을까요?
집안의 불쾌지수가 굉장히 높을 때만 효율적으로 냉방기기들을 운행할 수 있다면 전기세와 에너지를 절약과 더불어 냉방병 예방에도 큰 도움이 될 것 입니다
스마트 홈 키트에 구성되어 있는 온·습도 센서와 RGB LED 모듈을 이용해 '불쾌지수에 따라 가동되는 스마트 에어컨'을 구현해보도록 하겠습니다.
- 온·습도 센서
온도와 습도를 측정해 불쾌 지수를 구하는데 사용됩니다.
- RGB LED 모듈
에어컨의 가동, 미가동을 표현합니다. 가동 시 LED가 점등되고, 미 가동 시 LED가 소등됩니다.
스마트 홈 키트에 구성되어 있는 적외선 장애물 감지 센서를 활용한다면, 사람이 있을 때만 가동되는 냉방 기기로도 아이디어 확장이 가능하겠습니다.
> 에너지를 절약하는 똑똑한 선풍기 프로젝트 구경하러 가기
2. 준비물
NO | 부품명 | 수량 | 상세설명 |
1 | MDF 외관 | 1 | |
2 | 우드락 가구 | 2 | 침대 / 스피커 |
3 | 오렌지보드 BLE | 1 | 블루투스 4.0 포함 보드 |
4 | 온·습도 센서 모듈 | 1 | KY-015 |
5 | RGB LED 모듈 | 1 | |
6 | 브레드보드 | 1 | SG-90 |
7 | 점퍼케이블 |
부품명 | MDF, 우드락 외관 | 오렌지보드 BLE | 온·습도 센서 모듈 |
파트 |
부품명 | RGB LED 모듈 | 브레드보드 | 점퍼케이블 |
파트 |
TIP / 조도센서와 피에조 부저의 사용 방법을 알아보도록 하겠습니다.
TIP / MDF 및 가구 제작 방법에 대해 알아보도록 하겠습니다.
4. 소프트웨어 코딩
#include "DHT.h" // DHT11를 사용하기 위한 라이브러리 호출하기
// 온습도 센서를 디지털 3번 핀에 연결합니다.
#define DHTPIN 3
#define DHTTYPE DHT11
int piezoPin = 2; // 피에조 부저의 +극을 오렌지보드 2번에 연결
int airCon = 7; // RGB LED의 파란색 핀을 디지털 7번 연결
int notes[] = {4186, 4698, 5274, 5587, 6271};
// 가까울 시 울릴 경보의 멜로디 작성
boolean flag = 0;
DHT dht(DHTPIN, DHTTYPE);
void setup() {
// 시리얼 통신을 위해 통신속도(Baudrate)를 9600으로 설정
Serial.begin(9600);
dht.begin();
pinMode(piezoPin, OUTPUT); // 피에조 핀을 출력핀으로 설정
pinMode(airCon, OUTPUT); // 3색 LED중 파란색 핀을 출력핀으로 설정
}
void loop() {
// 온습도센서로 온도와 습도값 측정
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (isnan(humidity) || isnan(temperature) ) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// 측정된 온도, 습도값으로 불쾌지수 값 계산 후 시리얼 모니터에 출력
float discomfortIndex = (1.8 * temperature) - (0.55 * (1 - humidity / 100.0) * (1.8 * temperature - 26)) + 32;
Serial.println(discomfortIndex);
// 불쾌지수값이 70보다 높을 경우
if (discomfortIndex > 70) {
// 에어콘(파란색 LED)를 켜주면서 멜로디를 재생
digitalWrite(airCon, HIGH);
if (flag == 0) {
for (int i = 0; i < 5; i++) {
tone(piezoPin, notes[i], 300);
delay(150);
}
flag = 1;
}
}
else {
// 에어콘(파란색 LED)를 끔
digitalWrite(airCon, LOW);
flag = 0;
}
delay(1500);
}
소프트웨어 코드 설명
#include "dht.h" // DHT11를 사용하기 위한 라이브러리 호출하기
DHT11 온습도 센서를 사용하기 쉽게 만들어 놓은 라이브러리를 호출하는 부분입니다. 라이브러리를 설치하고 사용하는 방법은 링크를 통해 확인하세요.
// 측정된 온도, 습도값으로 불쾌지수 값 계산 후 시리얼 모니터에 출력
float discomfortIndex = (1.8 * temperature) - (0.55 * (1 - humidity / 100.0) * (1.8 * temperature - 26)) + 32;
측정된 온도와 습도를 이용해 불쾌지수를 측정하는 코드입니다. 불쾌지수 측정식은 밑의 이미지를 참고하시면 됩니다.
if (discomfortIndex > 70) {
// 에어콘(파란색 LED)를 켜주면서 멜로디를 재생
digitalWrite(airCon, HIGH);
if (flag == 0) {
for (int i = 0; i < 5; i++) {
tone(piezoPin, notes[i], 300);
delay(150);
}
flag = 1;
}
}
else {
// 에어콘(파란색 LED)를 끔
digitalWrite(airCon, LOW);
flag = 0;
}
측정된 불쾌지수를 이용하여 에어콘(파란색 LED)를 제어하는 코드입니다.
여기서 측정한 불쾌 지수 값이 70보다 클 경우 에어콘(파란색 LED) 를 키고 멜로디를 재생하며, 70보다 작을 경우 에어콘을 꺼줍니다.
같은 상태가 유지될 경우(Ex == 불쾌지수 70 이상 -> 불쾌지수 70 이상 ) 멜로디 재생을 반복하지 않도록 flag를 사용하였습니다.
4. 프로젝트 시연 영상
[다음 프로젝트 제작 가이드] 스마트폰으로 제어하는 스마트 홈 만들기
kocoafabeditor
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!