샤프 미세먼지 센서 + 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 |
댓글