dustsensor.ino

dustsensorv2.ino



첨부된 2 가지  케이스로 코딩됨.

미세먼지 측정센서로 측정된 미세먼지 농도를 
16x2 LCD 에 표현하기.


아두이노 코딩도 계속하다 보니 자연스럽게 되는것 같다. 전자회로도 또한 친숙해지는것 같고.
연습이 완벽하게 만든다고 했나? 생각보다 쉽게 만들어짐에 놀라웠다.

Practice makes perfect, thanks.


#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

int Vo = A0;
int V_LED = 2;

float Vo_value = 0;
float Voltage = 0;
float dustDensity = 0;
float dustCleanVoltage = 0.44;
int samplingTime = 280;
int deltaTime = 40;
int sleepTime = 9680;

void setup(){
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("dust");
Serial.begin(9600);

/*digital output:*/
pinMode(V_LED, OUTPUT);

/*analog input:*/
pinMode(Vo, INPUT);
}

/** references :
* http://blog.naver.com/PostView.nhn?blogId=darknisia&logNo=221222455928
* http://arduinodev.woofex.net/2012/12/01/standalone-sharp-dust-sensor/
* */
// 미세먼지 센서(GP2Y1010AU0F)
// : 적외선 발광 다이오드(IRED)와 포토다이오드가 대각선으로 배치되어 공기 중 먼지의 반사광을 감지
void loop(){
digitalWrite(V_LED,LOW); //ired 'on'
delayMicroseconds(samplingTime);
Vo_value = analogRead(Vo); //read the dust value
delayMicroseconds(deltaTime);// pulse width 0.32 - 0.28 = 0.04 msec
//0.32 msec의 펄스폭을 유지하기 위해 필요한 코드입니다

digitalWrite(V_LED,HIGH); //ired 'off'
delayMicroseconds(sleepTime);


/*
이 센서의 출력전압(Vo)는 먼지가 없을 때의 출력전압(Voc)과 먼지 농도(ΔV)에 비례하여 출력됩니다.
다시 표현하면 ΔV = Vo – Voc
미세먼지 농도[µg/m³] = (Vo – Voc) / 0.005
*/
Voltage = Vo_value * (5.0 / 1024.0);

dustDensity = (Voltage - dustCleanVoltage)/0.005;

Serial.print(" Raw Signal Value (0-1023):");
Serial.print(Vo_value);
Serial.print(" | Volatage:");
Serial.print(Voltage);
Serial.print(" | Dust Density:");
Serial.print(dustDensity);
Serial.print("[ug/m3]");
if(dustDensity<31){
Serial.println(" => [Great(~30)]");
} else if(dustDensity>30 && dustDensity<81){
Serial.println(" => [Good(31~80)]");
} else if(dustDensity>81 && dustDensity<151){
Serial.println(" => [Bad(81~150)]");
} else{
Serial.println(" => [Too Bad(151~)]");
}


// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 0);
lcd.print(dustDensity);
lcd.setCursor(0, 1);
if(dustDensity<31){
lcd.print(": Great(~30)");
} else if(dustDensity>30 && dustDensity<81){
lcd.print(": Good(31~80)");
} else if(dustDensity>81 && dustDensity<151){
lcd.print(": Bad(81~150)");
} else{
lcd.print(": Too Bad(151~)");
}
delay(5000);
}


DIY-공기청정기

저렴하게 만들수 있다는 장점이 있지만 뭔가 허접. 저처럼 3D프린트기가 없다면.

 

장비 : 자동차 에어컨필터(6천원~15천원), 테이프(1천원), 쿨러팬(죽어버린데스크탑의 팬 재사용), 샤오미보조베터리, 아두이노

 

여기서 아두이노를 사용하는건 계속적으로 전력을 공급하기 위해서 그냥 사용할뿐.

이것 사용안하면 10초후에 보조베터리에서 전력이 끊어짐.

추가로 미세먼지 센서나 led로 측정값에 대한 이벤트를 주는것도 가능하겠음

미세먼지 센서로 측정하게되면 업데이트하는걸로.


데스크탑에서 뺀 쿨러 4pin이다.

노란색선(+), 그 옆 검정색선(-)



그럭저럭^^ 그런데 바람이 좀 많이 약하다.  DIY는 자기 만족이니까. 난 만족한다.

이것 선풍기로 만드는것도 좋겠는데^^.


인체감지센서,LED로 센서등 만들기

 

LED를 멀티로 5개까지 on/off처리함

불 밝기를 위해서. 현관문 앞에 달고 싶은데 선이 지저분하다. 사진처럼

선 처리를 좀 깔끔하게 할 방법은 없을까?

 

 

아두이노 인체감지센서와 LED제어 프로그램 소스

소스보다 LED를 멀티로 on 시켜보자 하여 아래 led09~led12까지 추가함.

 

HsensorLed.ino

	
int led09 = 9;       // ledPin 출력을 09번
int led10 = 10;      // ledPin 출력을 10번
int led11 = 11;      // ledPin 출력을 11번
int led12 = 12;      // ledPin 출력을 12번
int led13 = 13;      // ledPin 출력을 13번
int sensorInput = 2;     // PIR센서 입력을 inputPin 2번에 연결
int pirState = LOW;   // 초기값은 PIR 센서값이 없다고 가정
int val = 0;          // 핀의 상태를 판독하기 위한 변수를 선언
int itime = 0;

void setup() {

  pinMode(led09, OUTPUT);     //led 포트를 출력모드로
  pinMode(led10, OUTPUT);     //led 포트를 출력모드로
  pinMode(led11, OUTPUT);     //led 포트를 출력모드로
  pinMode(led12, OUTPUT);     //led 포트를 출력모드로
  pinMode(led13, OUTPUT);     //led 포트를 출력모드로
  pinMode(sensorInput, INPUT);    //센서입력 포트를 입력모드로
  Serial.begin(9600);         // 9600속도로 시리얼 통신 시작 
}


void loop(){
  val = digitalRead(sensorInput);   

  if (val == HIGH)
  {            
      digitalWrite(led09, HIGH);   
      digitalWrite(led10, HIGH);   
      digitalWrite(led11, HIGH);   
      digitalWrite(led12, HIGH);   
      digitalWrite(led13, HIGH);   
      
      if(pirState == LOW){
         pirState = HIGH;
         itime ++;
         
      Serial.println("Somebody detected~! : ");
      delay(10000);           // 10초 지연
      } 
  }
  else {
      if(pirState == HIGH){
        digitalWrite(led09, LOW);        
        digitalWrite(led10, LOW);        
        digitalWrite(led11, LOW);                        
        digitalWrite(led12, LOW);
        digitalWrite(led13, LOW);

        pirState = LOW;      
        Serial.println("Nobody detected~!");
        }
    }
}


회도로는 검색엔진에서 “아두이노 인체감지센서 led” 이렇게 검색하면 여러blog내용이 나옴.

회로도 작성툴, “fritzing”가 있는데 다음엔 이걸로 작성해보는걸로..




고장난 센서등의 안쪽 부속품들을 모두 들어내고 그 안에 회로판LED를 넣어 아래처럼 만듦




=================

선정리로 고민하다. 기존 무선센서의 led와 센서를 이용하고 건전지 전력을 집전기로 바꾸기만 해서 간단해 해봤음

전력을 use용 얇은 선으로 대체함

use는 [ 5V(+) | Data(+) | Data(-) | GND ] 4개의 선으로 되어있어 여기서 5V(+)/GND를 사용해서 연결 납땜하면 된다.



 






+ Recent posts