(C/개발/공개)-Raspberry Pi DHT22 센서를 이용한 온도 체크 (1) #INPUT
개요
여름철 사내 서버실 온도 증가로 인해 원격 및 알람을 통한 온도 확인을 할 수 있는 모니터링 시스템 구축 필요
필요 사항
- 알람 기능
- 현재 온도 확인 View
아두이노, USB 형태 온도계 등 검토 결과 추가 센서 이용 확장성도 좋고 간편한 Raspberry Pi로 선택
시스템 구성
버전
기존 회사에
Raspberry Pi3
버전이 있었지만, 최신 버전을 사용하고 싶어Raspberry Pi3 B+
제품 구매
C VS Python
예제 샘플을 확인할 때
C
와Python
두 개로 된 예제가 제일 많았다.Python
인 경우 그나마 스크립트 언어라 쉬울 것 같았지만, 공부를 위해C
로 개발하였다.
전자 회로
빵판(Bread Board)
고등학교 수업시간에 배웠었는데 잘 배워 놓을 걸 그랬다.
지금 와서 보니 뭐가 뭔지 하나도 알 수 없어서빵판(Bread Board)
을 사용하지 않고 했더니 다행히도 사용안 하고도 정상적으로 동작하였다.
소스
예시
케이스를 사줘야겠다…
특이 사항
개발 진행 중 데이터를 정상적으로 가져오는지 테스트하는데 동일 소스로
Raspberry Pi3
에서는 정상적으로 동작 하나Raspberry Pi3 B+
에서는 동작하지 않는 현상이 있었다.Python
소스로 테스트하니 이번에는 둘 다 정상 동작 되었다.
Raspberry Pi3 B+
에서 뭐가 문제인지 삽질 하던 중printf
로 출력하며 테스트 시 데이터가 출력 될 때도 있는 걸 보고Delay Time
문제란 걸 깨닫고 소스 수정하니 정상 출력되었다.
// dht_temp_data.c
for (i = 0; i < MAX_TIMINGS; i++)
{
counter = 0;
while (digitalRead(DHT_PIN) == laststate)
{
counter++;
36 delayMicroseconds(2);
if (counter == 255)
{
break;
}
}
laststate = digitalRead(DHT_PIN);
if (counter == 255)
break;
/* ignore first 3 transitions */
if ((i >= 4) && (i % 2 == 0))
{
/* shove each bit into the storage bytes */
data[j / 8] <<= 1;
if (counter > 16)
data[j / 8] |= 1;
j++;
}
}
마무리
오픈 소스
예제 들을 참고하면서 만들었지만 여태 다른 언어들과 달리 어려웠던 거 같다.C
는 공부가 많이 필요할 것 같으며 위에특이사항
같은 현상을 경험 후 예상치도 못한 경우는 언제든지 있다는 것을 느꼈다.