[아이씨뱅큐 ICbanQ 파워블로거 2기] 라즈베리파이 온습도센서(CHIPCAP-L/Module) 이용하기

[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로아이씨뱅큐의 지원을 받아 작성되었습니다]



<사용 품목>


 

ㄱ. 라즈베리파이 B+ - http://www.icbanq.com/shop/product_detail.asp?prod_code=P005587400

ㄴ. 온습도센서(CHIPCAP-L/Module) -

http://www.icbanq.com/shop/product_detail.asp?prod_code=P000888998&catg_code=<ype=S

ㄷ. MCP3208 - 

http://www.icbanq.com/shop/product_detail.asp?prod_code=P001749352&catg_code=<ype=S




CONTENTS >



1. 개요
 

이번 시간에는 MCP3208을 통해 온습도센서를 이용해보도록 하겠습니다.

 

 

 

2. 회로도

 

전체적인 회로도입니다. 라즈베리파이 자체에는 ADC기능이 없기 때문에 MCP3208을 통해 구현하였습니다.

 

 

3. 소스코드 작성 

 

먼저 c파일을 생성합니다.

 

 sudo nano c파일이름.c

파일이름은 하시고 싶은대로 지으시면 됩니다.

 

#include

#include

#include

 

#include

#include

 

#define CS_MCP3208  6        // BCM_GPIO 25

 

#define SPI_CHANNEL 0

#define SPI_SPEED   1000000  // 1MHz

 

#define VCC         3.3 // Supply Voltage

 

 

int read_mcp3208_adc(unsigned char adcChannel)

{

  unsigned char buff[3];

  int adcValue = 0;

 

  buff[0] = 0x06 | ((adcChannel & 0x07) >> 2);

  buff[1] = ((adcChannel & 0x07) << 6);

  buff[2] = 0x00;

 

  digitalWrite(CS_MCP3208, 0);  // Low : CS Active

 

  wiringPiSPIDataRW(SPI_CHANNEL, buff, 3);

 

  buff[1] = 0x0F & buff[1];

  adcValue = ( buff[1] << 8) | buff[2];

 

  digitalWrite(CS_MCP3208, 1);  // High : CS Inactive

 

  return adcValue;

}

 

 

int main (void)

{

  int adc0Value   = 0;

  int adc1Value   = 0;

  float adc0Vol   = 0;

  float adc1Vol   = 0;

  float Temp      = 0;

  float RH        = 0;

 

  if(wiringPiSetup() == -1)

  {

    fprintf (stdout, "Unable to start wiringPi: %s\n", strerror(errno));

    return 1 ;

  }

 

  if(wiringPiSPISetup(SPI_CHANNEL, SPI_SPEED) == -1)

  {

    fprintf (stdout, "wiringPiSPISetup Failed: %s\n", strerror(errno));

    return 1 ;

  }

 

  pinMode(CS_MCP3208, OUTPUT);

 

  while(1)

  {

    adc0Value = read_mcp3208_adc(0);

adc0Vol = (adc0Value/4096.0)*VCC; 

Temp = adc0Vol*200.0-50.0; 

 

adc1Value = read_mcp3208_adc(1);

adc1Vol = (adc1Value/4096.0)*VCC; 

RH = adc1Vol*100.0; 

printf("Temp = %f\n",Temp);

printf("RH = %f\n",RH);

delay(350);

  }

 

  return 0;

}


 

위와 같이 작성하신 후 c파일로 저장합니다.


그 후 컴파일 합니다.

gcc -o 실행파일이름 c파일이름.c -lwiringPi 


컴파일 후 실행파일을 실행합니다.

 sudo ./실행파일이름

 

4. 결과

 

 

 실행하시면 위와 같이 실행 창에 온도와 습도가 나타나게 됩니다.

 


[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로아이씨뱅큐의 지원을 받아 작성되었습니다]