개발자 블로그

0. intro: 프로젝트 요약 본문

프로젝트/미세먼지 IOT환풍기 - 창업동아리(InA) in 2017

0. intro: 프로젝트 요약

hayongwoon 2022. 7. 26. 21:48

 17년도 대학시절 창의적인 경험을 하고자 Development Aduino라는 이름으로 창업동아리를 만들었습니다. 뜻이 맞는 선후배를 모았고, 함께 아이디어 논의를 통해 당시에 화두였던 미세먼지라는 주제로 이 프로젝트를 생각하게 되었습니다. 그리고 학교에서는 창업지원센터가 활성화 되어 있어 우리는 아이디어 보고서를 제출하여 창업지원비 300만원을 받을 수 있었습니다. 해당 지원비로 우리는 제품 개발에 필요한 아두이노 set와 미세먼지 센서, 온습도 센서 등 실험에 필요한 물품들을 구입하였습니다. 약 1년 간 해당 프로젝트를 수행하였고 많은 우여곡절 끝에 시제품 제작에 완성하였습니다. 

 

 아래 사진은 실제 프로젝트 시제품 사진 자료입니다. 아크릴판으로 가상의 실내 모형을 만들었고 그안에 센서를 넣었습니다. 실내에 환경을 상황에 따라 여러가지 환경을 조성하여 환풍기 팬이 잘 돌아가는지 테스트를 진행하였습니다.

 

 *해당 자료와 블로그의 글은 17년도에 작성한 보고서를 기반하여 작성한 글 입니다. 다소 부족하고 부정확한 내용이 있을 수 있으니 이 점 참고하여 글을 봐주시면 감사하겠습니다. 

 

 자세한 활동 내용은 아래 주차 보고서를 통해 확인할 수 있습니다!

캡스톤 주차별 보고서 최종완성 .pdf
7.45MB

 

실험 중 사용했던 소스코드

1. 미세먼지 센서 test 소스코드

int dustPin=0; // 미세먼지 센서가 0번 핀에 연결
float dustVal=0; // 미세먼지 값 초기화
float dustDensity = 0; // 미세먼지 농도 초기화

int ledPower=2; // LED가 2번 핀에 연결
int delayTime=280; // delay 시간 280
int delayTime2=40; // delay 시간 40
float offTime=9680;  // 

void setup(){ // 보드가 실행될 때 한번만 실행
    Serial.begin(9680); // 시리얼 모니터와 연결 시작 (통신속도)
    pinMode(ledPower,OUTPUT);
    pinMode(12, OUTPUT);
}

void loop(){  // 보드에 전원이 공급되는 동안 계속 실행
    // ledPower is any digital pin on the arduino connected to Pin 3 on the sensor
    digitalWrite(ledPower,LOW); // power on the LED -> LED에 전원 공급
    delayMicroseconds(delayTime);

    dustVal=analogRead(dustPin); // 5번 센서를 통한 미세먼지 값 읽기
    delayMicroseconds(delayTime);

    digitalWrite(ledPower,HIGH); // turn the LED off -> LED에 전원 차단
    delayMicroseconds(offTime);

    delay(3000);  // 3초 기다려라

    dustDensity = 0.17*(dustVal*0.0049)-0.1; //미세먼지 농도 = 0.17*(볼트 값 +0.0049)-0.1
    Serial.print("Dust density(mg/m3) = "); // 센서에서 측정한 값을 출력
    Serial.println(dustDensity); // 계산한 미세먼지 값을 출력
}

2. 온습도 센서 test 소스코드

#include "DHT.h"
 
#define DHTPIN 2  //디지털 2번 포트로 데이터 읽음
#define DHTTYPE DHT22 //DHT 타입을 DHT22로
#define fan 4
 
int maxHum = 45;
int maxTemp = 29;
 
DHT dht(DHTPIN, DHTTYPE);
 
void setup() {
  pinMode(fan, OUTPUT);  // fan을 출력모드로 설정
  Serial.begin(9600); // 통신속도
  dht.begin();dht.begin();    // DHT 온도 센서 초기화

}
 
void loop() {
  
  delay(2000);
  // 2초에 한번씩 데이터 읽어 오기 위해 delay(2000)을 넣음(온도센서 특징)

  float h = dht.readHumidity();
  // 섭씨 온도(the default)

  
  float t = dht.readTemperature();
  // 화씨 온도 (isFahrenheit = true)
  
  
  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
  // h, t, f 값이 숫자인지를 확인. 숫자가 아니면 다시 시도
  
  if(h > maxHum || t > maxTemp) {
      digitalWrite(fan, HIGH);
  } else {
     digitalWrite(fan, LOW); 
  }
  
  Serial.print("Humidity: "); 
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: "); 
  Serial.print(t);
  Serial.println(" *C ");
}

3. 온습도 + 미세먼지 감지 센서 아두이노 적용 소스코드

#include "DHT.h"
 
#define DHTPIN 2  //디지털 2번 포트로 데이터 읽음
#define DHTTYPE DHT22 //DHT 타입을 DHT22로
#define fan 4
 
int maxHum = 45;
int maxTemp = 29;
int maxDust = 55;
int dustPin=0; // 미세먼지 센서가 0번 핀에 연결
float dustVal=0; // 미세먼지 값 초기화
float dustDensity = 0; // 미세먼지 농도 초기화
 
DHT dht(DHTPIN, DHTTYPE);
 
void setup() {
  pinMode(fan, OUTPUT);  // fan을 출력모드로 설정
  Serial.begin(9600); // 통신속도
  dht.begin();dht.begin();    // DHT 온도 센서 초기화

}
 
void loop() {
  
  delay(2000);
  // 2초에 한번씩 데이터 읽어 오기 위해 delay(2000)을 넣음(온도센서 특징)

  float h = dht.readHumidity();
  // 섭씨 온도(the default)

  
  float t = dht.readTemperature();
  // 화씨 온도 (isFahrenheit = true)
  
  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
  // h, t, f 값이 숫자인지를 확인. 숫자가 아니면 다시 시도
  
  if(h > maxHum || t > maxTemp) {
      digitalWrite(fan, HIGH);
  } else {
     digitalWrite(fan, LOW); 
  }
  
  Serial.print("Humidity: "); 
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: "); 
  Serial.print(t);
  Serial.println(" *C ");

  dustVal=analogRead(dustPin); // 0번 센서를 통한 미세먼지 값 읽기
  
  dustDensity = 0.17*(dustVal*0.0049)-0.1; //미세먼지 농도 = 0.17*(볼트 값 +0.0049)-0.1

  if(dustDensity > maxDust) {
      digitalWrite(fan, HIGH);
  } else {
     digitalWrite(fan, LOW); 
  }
 
  Serial.print("Dust density(mg/m3) = "); // 센서에서 측정한 값을 출력
  Serial.println(dustDensity);
}

 

'프로젝트 > 미세먼지 IOT환풍기 - 창업동아리(InA) in 2017' 카테고리의 다른 글

2. 제품 개발  (0) 2022.07.26
1. 사업 개요  (0) 2022.07.26