본문 바로가기
Micro Control Unit

Wemos D1 mini - 미세먼지 센서

by binary012 2021. 9. 11.
반응형

샤프 미세먼지 센서 + D1 mini 를 조합하여 미세먼지 센서를 만들어 보자. 

 

 

아두이노로 업로드시 아래 보드 및 세팅으로 진행해야 한다. 

이 부분을 잘 기억, 아니 기록해 놓지 않으면 나중에 다시 할 때  잊어버리기 쉽더라. 

내가 다음에 다시 하기 위해 하는 것이니, 이 블로그의 기록은 나를 위한 것임을 알려둔다.

소스 코드.

D0 pin은 아두이노에서 16번으로 사용.

 

소스는 사실 인터넷 서치를 통해서 복붙한 것이다. 도움을 주신 모~오든 분들께 감사를 전한다. 

아래의  Dusty 계산식에 대해서는 여러 조건이 있는 것 같지만, 내가 나의 결과에 대략 맞는 조건으로 설정한 것이니, 

절대값이 될 수는 없을 것이다. 단지 참고로만 사용해야할 것이다. 

int Measure_Pin = A0; // A0핀으로 analog voltage 입력 받음
int LED_Power = 16;  // D3=3 핀으로 측정램프 조작신호를 보냄
//int LED_indicator = 14;  // 14핀으로 on/off indicate 를 보냄

int samplingTime = 290;  // LED를 켜서 측정하는 시간 280us
int deltaTime = 320 - samplingTime;  // 잠시 대기 30us
int sleepTime = 20000 - deltaTime - samplingTime; // 측정 간격 10ms

float AD_Meas = 0;
float CalVolt=0; 
float Dusty = 0;
float smoothDensity = 0;

void setup() {
  Serial.begin(115200);
  pinMode(LED_Power, OUTPUT);
//  pinMode(LED_indicator, OUTPUT);
}

void loop() {
  digitalWrite(LED_Power, LOW);   // 측정하는 LED 켜기(pull-up 저항때문에 반대임) 
//  digitalWrite(LED_indicator, HIGH);  // 내부 LED 켜기
  delayMicroseconds(samplingTime);  // 290us 동안 
  AD_Meas = analogRead(Measure_Pin);

  delayMicroseconds(deltaTime);
  digitalWrite(LED_Power, HIGH);  // 측정하는 LED 끄기(pull-up 저항때문에 반대임)
//  digitalWrite(LED_indicator, LOW);  // 내부 LED 켜기
  delayMicroseconds(sleepTime);

  CalVolt = AD_Meas; //*(5/1024);
  Dusty = (0.17*CalVolt-0.1); // CASE1  : https://makernambo.com/80
  //Dusty = 0.172*AD_Meas - 0.0999;  // CASE2 : http://www.howmuchsnow.com/arduino/airquality/

  smoothDensity = Dusty*0.5 + smoothDensity*0.5; // 5회 평균을 산정함.
  Serial.print("CalVolt : "); Serial.print(CalVolt); Serial.print(" mV     ");
  Serial.print("Dust : "); Serial.print(Dusty); Serial.println(" ug/m^3");
  //Serial.print("Dust : "); Serial.print(smoothDensity); Serial.println(" ug/m^3");
  delay(1000);

}

 

 

결과는 다음과 같다. 

연필이 미세먼지라고 생각하고 아래와 같이 넣게 되면 미세먼지 수치가 올라가게 된다. 

 

성공이다! 사실 이것은 올해 4월에 실험 했던 결과이다. 

지금은 이것을 아두이노에서 C++로 프로그래밍하여 home assistant 에 MQTT 통신으로 연결해서 사용중이다. 

샤프 미세먼지 센서는 PM25, PM10을 구분하지 않아서 사용하기 좋지는 않은것 같다. 

먼지가 많냐 적냐에 대해서만 구분할 수 있어서 내 생각에는 그닥 좋은 콤포넌트는 아닌듯 하다. 

나도 5천원이어서 구입한 것이지, 지금 생각이라면 좀 더 정밀하게 측정 할 수 있고, 연결이 쉬운 통신 방식으로 된 센서를 구입할 것이다. 

 

 

 

 

다음은 다른 기록을 남겨보자! 

미세먼지 센서를 Home Assistant에 MQTT로 연결하는 방법이다. 

 

 

 

반응형

'Micro Control Unit' 카테고리의 다른 글

nodeMcu v3 - HelloServer  (0) 2021.09.22
NodeMcu V3 Lolin을 시작하다.  (0) 2021.09.22

댓글