아두이노를 이용해서 우리 실생활에 필요한 예제를 만들어볼 때 빼놓을 수 없는 것이 우리 피부에서 직접적으로 느낄 수 있는 온도 및 습도와 관련된 것들일 것이다. 그래서 이번 글에서는 아두이노 온도센서 중 DHT22타입의 AM2302 모델로 온도와 습도의 값을 받아와서 시리얼 모니터에 출력하는 예제를 정리해보려고 한다.
1. 아두이노 온도센서 살펴보기
이 녀석이 AM2302 온도센서인데 사진처럼 네 개의 핀을 갖고 있으며 그 성능은 다음과 같다.
1. 온도의 측정 범위 : -40 ℃ ~ 80 ℃
2. 습도의 측정 범위 : 0%~100%
오차는 습도의 경우 ±2% RH이며 온도는 ±0.5℃이다. 그리고 2초 단위로 그 값들을 읽어오는데 상당히 고정밀의 센서(가격은 5천 원대~)이고 네 개의 핀 중에서 세 개만 사용하는데 왼쪽부터 순서대로 VCC, DATA, 사용 안 함, GND이다.
그런데 이 녀석을 아두이노와 연결하는 과정에서 한 가지 아쉬운 점이 있더라. 핀이 너무 얇아서 점퍼 케이블에 연결하면 그냥 쏙~ 빠져버린다. ㅎ
그래도 이렇게 빵판에 꽂으면 안정적으로 온도와 습도 데이터를 읽어오니 될 수 있으면 이렇게 연결해서 사용하고 회로도는 다음과 같다.
2. 회로도
간단하다. 순서대로 VCC, 디지털 2번 핀, 사용 안 함, GND를 연결했으며 데이터 출력 핀 쪽에 10K 저항을 통해서 VCC와 연결했다. 이제 이 온도센서에서 데이터를 읽어와서 시리얼 모니터에 출력하도록 코딩을 해보자.
3. 코딩하기
먼저 이 DHT 온도센서를 사용하기 위해서는 라이브러리를 추가해줘야 하는데 혹시 이 글을 보면서 필요한 분들이 있다면 아래 파일 받아서 사용하면 된다.
이 파일을 받아서 아두이노 스케치 프로그램에서 라이브러리에 추가한 후 ① include 해서 사용하면 된다. 그리고 데이터를 전송할 디지털 핀 2번은 TEMP로 온도센서 타입(DHT22)은 DHTTYPE로 상수 선언을 했으며 이 핀 번호와 온도센서 타입을 전달해서 DHT의 객체 temp를 생성했다.
② setup() 함수에서는 온도센서와 시리얼 통신을 사용하기 위한 준비를 했고 ③ loop()에서는 센서에서 온도와 습도 값을 가져와서 각각 a와 b에 저장한 후 시리얼 모니터에서 그 값들을 출력하도록 했으며 그 실행 주기는 AM2302 온도센서가 값을 읽어오는 시간과 같이 2초 단위로 설정했다.
이 파일을 아두이노에 업로드 한 후 시리얼 모니터에서 데이터를 확인해보고 마무리하자.
실행을 해보면 각각의 데이터를 읽어와서 시리얼 모니터에 출력을 하다가 온도센서를 분리시키자 그 값들을 읽어오지 못하고 Read fale : nan과 0.00%라는 문자열을 출력하는 걸 확인할 수 있다.
이렇게 해서 아두이노 온도센서 중 DHT22 타입의 AM2302 모델을 사용하는 예제를 만들어봤다.