본문 바로가기

Programming/Windows10IoTCore

Windows 10 IoT Core에서 온도/습도 측정(DHT-11)

반응형

라즈베리파이3에서 온도와 습도 측정은 상당히 중요한 기능 중 하나입니다.

측정 이후에 자동으로 방 안 온도를 제어하는 방법이 활용될 수 있습니다.

Windows 10 IoT Core에서 온·습도를 확인하는 방법을 보도록 하겠습니다.


1. 준비물

기본적으로 DHT-11이나 DHT-22가 필요합니다.

DHT-22가 좀 더 정밀한 수치를 얻을 수 있지만 가격대는 좀 더 높은 편입니다.

온도와 습도 정보를 얻는데 DHT-11을 사용해도 충분합니다.

추가로 센서와 라즈베리파이를 연결할 케이블이 필요합니다.

라즈베리파이와 DHT-11을 직접 연결하려면 Female-Female 케이블이 필요합니다.

마지막으로 풀업 저항으로 사용할 4.7 저항을 준비하면 됩니다.


2. 센서 연결

센서는 다음과 같이 연결하면 됩니다.

빨간색 케이블은 3.3V, 파란색 케이블은 데이터(GPIO 4), 검은색 케이블은 GND에 각각 연결합니다.

풀업 저항이 있으면 아래와 같은 형태로 연결하면 됩니다.

저항은 4.7K나 10K 저항을 일반적으로 사용하는 것 같습니다.


3. 샘플 프로그램 작성

MS의 샘플 코드는 C++을 기준으로 작성되어 있어서 C#을 기준으로 다시 작성을 했습니다.

원하는 언어를 선택해서 동일한 형태로 작성하면 됩니다.

소스코드는 아래 GitHub 페이지에서 확인 가능합니다.

https://github.com/psychoria/DHT11sample/

다른 프로젝트에서 사용할 때는 Dht11.cs 파일을 가져다가 Sample() 함수를 호출하는 형태로 사용하면 됩니다.

타이머 등에서 호출할 때는 다음과 같이 호출하면 됩니다.

public void Timer_Tick(object sender, object e)
{
    Dht11Reading reading;
    int result = dht11.Sample(out reading);

    if (0 != result)
    {
        // error handling
    }
    else
    {
        // humidityText.Text = String.Format(("Humidity : {0:f1}"), reading.Humidity());
        // temperatureText.Text = String.Format("Temperature : {0:f1}", reading.Temperature());
    }
}

기존 코드가 타이머에서 온도와 습도를 성공적으로 가져올 때까지 최대 20회 시도하게 되어 있습니다.

해당 부분을 Dht11.cs 파일에 포함시켜서 한 번의 호출로 온도와 습도를 가져올 수 있도록 했습니다.

정상적으로 실행되면 다음과 같이 온도와 습도가 표시됩니다.

Windows 10 IoT Core에서 온/습도 측정이 가능해졌습니다.

반응형