2015년 7월 12일 일요일

온도계를 만들다

아두이노와 센서의 기본 지식을 습득하고 첫 실습으로  온도 센서를 해 보기로 했습니다.

Grove 온도 센서
나중에 안 사실이지만, 제가 구입한 센서가 Grove 라는 이름이 몇 개 있더군요.
아마도 회사 이름이 아닐까 생각을 하는데... 정확히는 모르겠습니다.

다만 Grove 로 검색을 하면 해당 센서의 Sketch 샘플 코드를 쉽게 구할 수 있습니다.
온도 센서의 sample 코드는 링크(Grove - Temperature Sensor)를 참조 했습니다.

/*
/* Grove - Temperature Sensor demo v1.0
*  This sensor detects the environment temperature,
*  Connect the signal of this sensor to A0, use the
*  Serial monitor to get the result.
*  By: http://www.seeedstudio.com
*/
#include <math.h>
int a;
float temperature;
int B = 3975;  //B value of the thermistor
float resistance;
void setup()
{
  Serial.begin(9600);
}
void loop()
{
  a = analogRead(0);
  resistance = (float)(1023-a)*10000/a; //get the resistance of the sensor;
  temperature = 1/(log(resistance/10000)/B+1/298.15)-273.15;//convert to  temperature via datasheet ;
  delay(1000);
  Serial.print("Current temperature is ");
  Serial.println(temperature);
 }

코드를 보시면 analogRead 라는 함수를 사용하는 것을 볼 수 있습니다.
일전에 설명한 아두이노 아날로그 포트를 사용해야 하는 의미이구요, 뒤에 0 이 포트 번호를 나타냅니다. 이에 맞춰 연결을 해주면 아래처럼 됩니다.

usb 케이블을 PC 와 연결해 주면 실행 해 볼 수 있습니다.

컴파일 결과
실행 결과 (여름이라 덥군요 ㅠㅠ)

집 밖에서 원격으로 집의 온도를 아는 것 만으로는 그다지 유용한지 않을 것 같구요 여름/겨울에 에어컨/보일러를 켜는 용도로 사용하 수 있을 것 같습니다.

다행히도 리모콘 센서 (IR) 도 구입해서 집에 있는 에어컨 작동은 가능 할 듯 합니다.
최근에 지어진 아파트라서 인터넷으로 난방 조절이 가능해서 이 부분도 만들 수 있을 것 같네요.
흠.. 목적이 로봇인데.. 뜬금없이 스마트홈 생각을 하고 있네요.

목적에 충실한 학습을 해야 겠습니다. ㅠㅠ

댓글 없음: