디지털온습도계 DHT22 아두이노와 연결해서 데이터 측정
우리 생활과 밀접한 관련이 있는 임베디드 시스템을 만들 때 활용할 수 있는 센서의 종류는 다양하지만 밤낮이 매일 바뀌고 4계절 온도의 변화가 뚜렷한 우리나라 환경에 맞는 것을 꼭 고르라고 한다면 '조도 센서'와 '온도 센서'가 아닐까 싶은데요. 오늘은 그중에서 디지털온습도계 DHT22 모델을 이용해서 온도와 습도를 측정해서 시리얼 모니터에서 확인하는 예제를 만들어볼까 합니다.
▲ 가장 오른쪽에 작은 센서가 디지털온습도계인데요. 온도와 습도의 값에 따라서 뭔가를 작동하는 장치들을 만들면 활용도가 높겠죠? 그 대표적인 예가 보일러와 에어컨의 온도 설정일 것입니다. 그것들을 지금 당장 만들 수는 없겠지만 이런 작은 센서 하나에서 그 기능이 시작된다는 점을 생각하면서 온도와 습도를 측정해보죠.
▲ 이 DHT22 디지털 온습도계는 네 개의 핀이 있는데요. 사진에서 표시한 것처럼 하나는 사용을 안 합니다. 이제 그림에 표시한 대로 아두이노와 연결을 해보죠.
▲ 점퍼 선 세 개를 이용해서 온도계의 세 번째 핀을 제외하고 연결을 했고요. 데이터를 전달하는 핀은 디지털 8번에 연결을 했습니다. 다음은 이 녀석의 값을 읽어올 코딩을 해볼 텐데 이 DHT22 디지털온습도계에서 데이터를 읽어오기 위해서는 아래 라이브러리를 추가해줘야 합니다.
이 파일을 압축을 풀고 아두이노 라이브러리에 추가를 하고요. 다음과 같이 코딩을 했습니다.
▲ DHT 라이브러리를 사용하기 위해서 include 한 후 m_temp라는 객체를 생성하면서 데이터를 전달하는 핀을 연결한 아두이노의 D8번과 온도계 타입인 DHT22를 전달하고요.
초기 한 번 실행되는 함수인 setup()에서는 앞에서 만든 객체와 시리얼 모니터를 시작했습니다. 다음으로 온도와 습도를 계속 체크하면서 반복되는 loop()에서는 두 개의 float형 변수를 선언한 후 DHT의 readTemperature() 함수와 readHumidity() 함수를 호출해서 각각 온도와 습도를 측정한 후 변수에 저장하도록 했습니다.
그리고 그 아래쪽에서는 println() 함수를 이용해서 시리얼 모니터에 2초 단위로 그 값들을 출력하도록 했는데요. 프로그램을 업로드 한 후 온도와 습도 값을 확인해보고 마무리하겠습니다.
▲ 결과를 확인하는 영상에서는 현재 제 주변의 온도와 습도 값을 전달하다가 손으로 살짝 잡아봤더니 온도와 습도가 천천히 올라가는 것을 확인할 수 있네요. 테스트하는 과정에서 센서를 들고 입김을 불어봤더니 온도와 습도가 동시에 상승하면서 습도는 99.9%까지 올라가는 걸 확인했습니다.
이 센서는 -40도에서 80도까지 온도 측정이 가능하고 습도는 0~100%까지 가능하다고 하며 오차는 온도의 경우 0.5도이고 습도는 2%라고 합니다. 혹시 디지털온습도계 사용해서 뭔가 만들어보려고 하신다면 DHT22 모델도 참고해서 사용해보셔요. 가격도 5천 원이면 구입할 수 있으니 부담도 없더라고요.
이렇게 해서 오늘은 디지털온습도계를 사용하는 예제를 만들어봤습니다. 수고하셨어요.