[아이씨뱅큐 ICbanQ 파워블로거 2기] 라즈베리파이 CdS(광량) 센서 사용하기


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



<사용 품목>


 

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

ㄴ. CdS 센서(GL5537) 

ㄷ. MCP3208 - 

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




CONTENTS >



1. 개요
 

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

CdS센서는 광량에 따라 저항 값이 달라지는 센서입니다.

보통 CdS센서를 사용할 경우 어두운 환경과 밝은 환경 둘에서의 CdS 통한 전압 값을 

비교 후 기준을 정하여서 지금 환경이 밝다 어둡다를 알려주도록 하거나

다른 액츄레이터가 동작할 수 있도록 합니다.
 

2. 회로도

 

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

 

 

3. 소스코드 작성 

 

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

 

 sudo nano c파일이름.c

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

 

#include <stdio.h>

#include <string.h>

#include <errno.h>

 

#include <wiringPi.h>

#include <wiringPiSPI.h>

 

#define CS_MCP3208  6        // BCM_GPIO 25

 

#define SPI_CHANNEL 0

#define SPI_SPEED   1000000  // 1MHz

 

 

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 adcChannel = 0;

  int adcValue   = 0;

  float adcVol   = 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)

  {

    adcValue = read_mcp3208_adc(adcChannel);

adcVol = (adcValue/4096.0)*3.3; 

    if(adcValue>=100)

    {

    printf("Bright\n");

    }

else 

{

printf("Dark\n");

}

 

delay(350);

  }

 

  return 0;


 

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


그 후 컴파일 합니다.

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


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

 sudo ./실행파일이름

 

4. 결과

 

 

실행 후 실행 창에서 CdS센서를 손으로 가리면 'Dark'라고 뜨고 

평상 시에는 'Bright'라고 뜨게 되는 것을 보실 수 있습니다.

 

 


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