본문 바로가기

컴퓨터 프로그래밍/NodeMCU

만원으로 미세먼지 측정기 자작하기.

대량 만원으로 미세먼지 측정기를 자작하고자 하는 분들을 위해 강좌 공유합니다.

아두이노는 강좌를 쉽게 찾을수 있는데, nodemcu는 없어서 올려 봅니다.


개발환경은 아두이노 개발툴이고  c언어 기반입니다.


이 강좌를 활용해서 아래와 같은 자기만의 물건을 만들어 보면 좋겠습니다.


1. 만원정도로 미센먼지을 측정해서 인터넷 서버에 데이터을 저장하는 나만의 장치를 만들어 본다.

2. 환풍기나 공기청정기를 미세먼지에 따라 자동으로 작동하게 만들어 본다.


짧은 소개 영상.



------------ 중요 부품 소개 ------


1. nodemcu  US $4.14

구매처:

http://ko.aliexpress.com/item/V2-4M-4FLASH-NodeMcu-Lua-WIFI-Networking-development-board-Based-ESP8266/32448662166.html?detailNewVersion=3



2. 미세먼지 부품GP2Y1010AU0F Dust Sensor:

Dust Sensor - 3.85$

http://ko.aliexpress.com/item/Free-Shipping-GP2Y1010AU0F-Compact-Optical-Dust-Sensor-Smoke-Particle-Sensor-With-Cable/32377316913.html


상품명: GP2Y1010AU0F 먼지 센서 모듈

기술 매개 변수:

전원 전압: dc5 ± 2 볼트

동작 전류: 20ma (피크)

감도: 0.5 볼트/(0.1 미리그램/m3)

최소 감지 수준의 입자: 0.8 메터

깨끗한 공기 전압: 0.9 볼트 일반.

작동 온도:-10 ~ 65 

보관 온도:-20 ~ 80 

크기: 46 미리메터 × 30 미리메터 × 17.6 미리메터

사이즈 무게: 15 그램

용도: 주로 먼지 제거 장비 경보 장비, 공기 정화 장비, 먼지 로봇, 화재 경보 등 산업 장비 감지 연기 입자, 꽃가루 포자 다른 입자를;

 

Shp GP2Y1010AU0F 먼지 센서 * 1

케이블 * 1

150ohm 저항 * 1

16v220uF 커패시터 * 1




---------------------------------------------


GP2Y1010AU0F  데이터 시트

https://www.sparkfun.com/datasheets/Sensors/gp2y1010au_e.pdf



연결법은 아래의 링크로 가셔서 확인해 보세요.

http://arduinodev.woofex.net/2012/12/01/standalone-sharp-dust-sensor/


저는 아래의 사진과 같이 연결했습니다.









///////////////////// 프로그램 소스 ////////////////////////////



float dustVal=0;

float dustDensity = 0;

 

int ledPower=10;

int delayTime=280;

int delayTime2=40;

float offTime=9680;


void setup(){

  Serial.begin(9600);

  pinMode(ledPower,OUTPUT);

  pinMode(4, OUTPUT);

}

 

void loop(){


  digitalWrite(ledPower,LOW); // power on the LED

  delayMicroseconds(delayTime);


  //먼지 센서를 값을 0.0V~3.3V 을 0~1024 값으로 변경해 줌.

  dustVal=analogRead(A0); // read the dust value 

  delayMicroseconds(delayTime2);


  digitalWrite(ledPower,HIGH); // turn the LED off

  delayMicroseconds(offTime);

 

  delay(3000);



 float voltage=0;

 float v0=0;

 float dust=0;


 //입력된 볼트를 계산해 줌

 voltage=dustVal*(3.3/1024);

 // 볼트를 기준으로 미세먼지 값으로 변환해 줌, 데이터 시트을 참고 오차가 존재합니다.

 dust = (0.17*voltage)*1000;


 

// 미세먼지 수치 출력

  Serial.print("Dust density(ug/m3) = ");

  Serial.print(dust);


//아날로그로 읽어 들인 0-1024 수치

  Serial.print(", dustVal = ");

  Serial.print(dustVal);


// 볼트로 계산해서 출력

  Serial.print(", voltage = ");

  Serial.println(voltage);  

  

}


///////////////////// 프로그램 소스 ////////////////////////////



시리얼 모니터로 출력해 보면,

아래와 같습니다.

측정이 정확히는 안되니, 데이터시트 참고하셔서, 보정하셔서 사용하세요.





정밀측정은 힘들어도 간단한 생활용품을 자작하는데는 무리는 없어 보입니다.


지금까지 강좌를 봐주셔서 감사합니다.


시간 되는데로 미세먼지 값을 oled로 출력하고, 

와이파이로 서버에 저장하는 방법도 공유해서 올리겠습니다.