Processor

【라즈베리파이】 wiringPi C 언어 : 토양 수분 센서 FC-28

작성자 임베디드코리아 작성일26-02-17 18:20 조회178회 댓글0건
■ 토양 수분 감지
   작물 자동급수장치 등과 같은 식물관리 장치를 만드는 데 이용
    토양 내 수분함량에 따른 저항의 변화를 측정하는 센서
    토양 내 수분함량이 적어짐 -> 저항값이 커짐 -> 전류가 잘 흐르지 않음
    토양 내 수분함량이 많아짐 -> 저항값이 작아짐 -> 전류가 잘 흐름

■ FC-28 스펙
    용도 : 토양의 수분을 감지하여 디지털 또는 아날로그 센서값을 출력하는 모듈
    동작 전압 : 3.3V ~ 5V
    동작 전류 : 30mA
    센서 DO (TTL) : 0 or 1 (5V HIGH, 수분 부족시)
    출력센서 AO (아날로그) : 0 or 1 (5V HIGH, 수분 부족시)
    출력 : 0.1 ~ 0.3V / 5V
    핀 구성 : 4핀 (VCC / GND / DO / AO)

◆ MCP3008은 아날로그 값을 디지털 값으로 convert하여 라즈베리파이에 넣어주는 역할을 한다.
◆ FC-28에서 오는 아날로그 전압을 받기 위해서는 ADC 기능을 가진 MCP3008 IC가 필요하다.

■ 연결하기
R-Pi4              >      MCP3008
------------------------------------------------
Pin 1 (3.3V)      >      VDD
Pin 1 (3.3V)      >      VREF
Pin 6 (GND)    >      AGND
Pin 23 (SCLK)  >      CLK
Pin 21 (MISO)  >      D_OUT
Pin 19 (MOSI)  >      D_IN
Pin 24 (CE0)    >      CS/SHDN
Pin 6 (GND)    >      DGND

R-Pi4            >    FC-28
---------------------------------------
Pin 1 (3.3V)    >    VCC
Pin 6 (GND)  >    GND

FC-28    >  MCP3008
----------------------------------------
  AO    >    CH0

--->>> 예제 :  Soil_Moisture.c  <<<------------------------
#include <stdio.h>
#include <wiringPi.h>
#include <wiringPiSPI.h>

#define CS_MCP3208    8
#define SPI_CHANNEL    1
#define SPI_SPEED        1000000

int ReadMcp3208ADC(unsigned char adcChannel) {
  unsigned char buff[3];
  int  nAdcValue = 0;
  digitalWrite(CS_MCP3208,0);
  buff[0] = 0x06 | ((adcChannel & 0x07) >>2);
  buff[1] = ((adcChannel & 0x07)<<6);
  buff[2] = 0x00;

  wiringPiSPIDataRW(SPI_CHANNEL, buff, 3);
  buff[1] = 0x0F &buff[1];
  nAdcValue= (buff[1]<<8) | buff[2];
  digitalWrite(CS_MCP3208, 1);
  return nAdcValue;
}
int main(void)
{
  int nCdsChannel = 1;
  int nCdsValue = 0;
  int i;
  char str[7];

  wiringPiSetupGpio();
  wiringPiSPISetup(SPI_CHANNEL , SPI_SPEED);

  pinMode(CS_MCP3208, OUTPUT);
  while(1)
  {
      nCdsValue =  ReadMcp3208ADC(nCdsChannel);
      printf("CSD Sensor Value = %u \n", nCdsValue);
  } //while
} //main
------------------------------------------------------------------------------
$ gcc  -o  Soil_Moisture  Soil_Moisture.c  -lwiringPi
$ sudo ./Soil_Moisture