실시간 미세먼지 측정

아두이노와 미세먼지 센서를 활용하여 사무실에서 측정한 실제 구동 화면입니다. 캡쳐 받은 이미지 아닙니다~ ^^ 측정 결과를 인터넷을 통해 서버에 전송하여 위처럼 웹에서 살펴볼 수 있도록 하였습니다. 사무실의 미세먼지가 제법 많군요. 오늘 실외 미세먼지가 나쁘지 않은 날인데도, 이렇다면 문제인데.. 공기청정기를 설치해야겠습니다.

옛날에 짬짬이 만들어 본 것을 사무실에 가져와 설치를 한 것인데요. 흔히 말하는 IoT입니다. 1um 크기인 극초미세먼지까지 측정해 줍니다. 흔히 극초미세전지가 건강에 훨씬 위험하지만 우리나라에서는 이 극초미세먼지의 측정값을 제공하지 않습니다.

아래는 실제 장비에 대한 사진입니다.

아두이노를 이용한 IoT 개발 – 온도, 습도 센서

아두이노는 다양한 센서를 통해 계측값을 획득할 수 있는데, 온도와 습도값을 얻을 수 있는 센서에 대한 글을 정리하겠습니다. 온도와 습도를 센싱하는 장치는 DHT11 센서를 사용했습니다.

온도와 습도를 센싱함으로써, 이를 활용하여 쾌적환 생활 환경을 유지할 수 있습니다. 온도와 습도값을 계측하고 온도와 습도를 조절하는 에어컨, 난방기 또는 가습기 등을 자동으로 제어함으로써 원하는 온도와 습도를 유지할 수 있습니다.

아두이노에 DHT11 센서를 연결한 회로도는 다음과 같습니다.

DHT11 센서는 4개의 핀이 있는데, 왼쪽부터 VCC, Data, NC, GND입니다. Data 핀으로 온도와 습도값이 들어오는데 위의 회로도처럼 아두이노의 D2에 연결하였습니다. 아래의 화면은 실제 구동되는 모습인데요. 습도와 온도를 시리얼 LCD를 통해 표시하고 있습니다.

스케치 코드는 다음과 같습니다.

#include 

#define DHT11PIN 2

Dht11 DHT11(DHT11PIN);

void setup() {
    Serial.begin(9600);
    Serial.print("$CLEAR\r\n");
}

void loop() {
    Serial.println("\n");

    int chk = DHT11.read();

    if(chk == Dht11::OK) { 
            Serial.print("$GO 1 1\r\n");
            char szHumidity[30];
            sprintf(szHumidity, "$PRINT Humidity: %d%%\r\n", (int)DHT11.getHumidity());
            Serial.print(szHumidity);

            Serial.print("$GO 2 1\r\n");
            char szTemperature[30];
            sprintf(szTemperature, "$PRINT Temperature: %dC\r\n", (int)DHT11.getTemperature());
            Serial.print(szTemperature);
    }
    
    delay(1000);
}

DHT11 센서를 통해 값을 쉽게 얻기 위해 https://github.com/adalton/arduino/tree/master/projects/Dht11_Library 에서 제공되는 라이브러리를 사용했습니다.