초급 예제

누구나 쉽게 따라해볼 수 있는 쉬운 예제들입니다. 가볍게 도전~!

토양 수분센서로 수분량 측정하기

2015-01-21 19:44:28

개요

1) 토양 수분센서란 무엇인가?


토양 수분센서는 토양 내 수분함량에 따른 저항의 변화를 측정하는 센서입니다.
토양 내 수분과 토양을 구성하는 입자의 크기 및 다양성에 영향을 받으며, 토양 내 수분함량이 많으면 저항값이 작아지고, 수분함량이 적으면 저항값이 커집니다.
그러나 토양 내 수분함량이 매우 많을 때는 전기저항이 둔감하여 오차가 크다는 단점도 가지고 있습니다. 

 

 

 

2) 토양 수분센서 사용방법

 

 

 


토양 수분센서는 토양에 직접 꽂는 센서 단자와 센서 보드, 그리고 케이블로 구성되어 있습니다. 센서 단자의 2개 핀과 센서 보드의 2개 핀을 서로 연결합니다. (+-는 구분 안해도 됩니다.) 그 다음 케이블을 센서 보드의 DO 핀을 제외한 3개의 핀 (ACC, GND, AO)을 연결합니다.

DO핀은 디지털 출력으로 0과 1만을 출력하며, AO핀은 아날로그 출력으로 토양내 수분의 양을 보다 상세하게 출력합니다. 또한, 센서보드의 파란색 가변 저항을 돌려서 기준값을 정해놓고 사용할 수 있습니다.

이 예제에서는 AO핀을 사용합니다. 측정된 값은 수분량을 나타내는 것이 아니라, 수분량에 따른 저항의 변화를 0~1023 범위내에서 환산된 결과입니다. 

부품 목록

NO 부품명 수량 상세설명
1 오렌지 보드 1  
2 토양 수분센서  1 YL38
3 피에조 부저 1 KPX 1203S
4 브레드 보드 1  
5 점퍼케이블 13  

 

부품명 오렌지 보드 토양 수분센서 피에조 부저 브레드 보드 점퍼케이블
파트  

 

하드웨어 making

브레드 보드

1. 오렌지보드의 5V핀을 브레드보드의 +버스에 연결합니다.

2. 오렌지보드의 GND핀을 브레드보드의 -버스에 연결합니다.

3. 피에조 부저를 그림과 같이 +단자가 위로 향하게하여 세로로 꽂습니다.

4. 피에조 부저의 +단자를 오렌지보드의 A2번핀에 연결합니다.

5. 피에조 부저의 -단자를 -버스에 연결합니다.

6. 토양 수분센서의 VCC단자를 +버스에 연결합니다.

7. 토양 수분센서의 AO단자를 오렌지보드의 A0번핀에 연결합니다.

8. 토양 수분센서의 GND단자를 -버스에 연결합니다.



 

전자회로도




소프트웨어 coding

/*
 제목		: 토양 수분센서로 수분량 측정하기
 내용		: 토양 수분센서로 토양에 있는 수분량을 측정하고, 일정 수분량 이하면 소리를 내도록 만들어 봅니다.
 */

// 토양 수분센서를 A0번 핀으로 설정합니다.
int soil = A0;
// 피에조 부저를 A2번 핀으로 설정합니다.
int piezo = A2;

// 음계 표준 주파수(4옥타브) : 도, 레, 미, 파, 솔, 라, 시, 도
// 음계표를 참고하여 원하는 음계로 설정해도 됩니다. 
int tones[] = {261, 294, 330, 349, 392, 440, 494, 523};

// 실행시 가장 먼저 호출되는 함수이며, 최초 1회만 실행됩니다.
// 변수를 선언하거나 초기화를 위한 코드를 포함합니다.
void setup() {
	// 토양 수분센서의 동작 상태를 확인하기 위하여 시리얼 통신을 설정합니다. (전송속도 9600bps)
	// 메뉴 Tool -> Serial Monitor 클릭
	Serial.begin(9600);
	// 피에조 부저가 연결된 핀을 OUTPUT으로 설정합니다.
	pinMode(piezo, OUTPUT);
}

// setup() 함수가 호출된 이후, loop() 함수가 호출되며,
// 블록 안의 코드를 무한히 반복 실행됩니다.
void loop() {
	// 토양 수분센서로부터 측정된 값을 읽습니다.
	// 측정된 값은 실제 수분량을 나타내는 것이 아니라, 0~1023 범위로 환산된 저항값을 의미합니다.
	int value = analogRead(soil);
	// 토양 수분센서로부터 측정된 값를 시리얼 모니터에 출력합니다.
	Serial.print("read sensor value : ");
	Serial.println(value);

	// 토양 수분센서로부터 측정된 값 (0~1024)을, 음계 배열 변수 값 (0~7) 범위로 변환합니다.
	int ton = map(value, 0, 1023, 0, 7);
	// 변환된 음계의 주파수를 시리얼 모니터에 출력합니다.
	Serial.print("output ton ");
	Serial.println(tones[ton]);
	Serial.print("Hz");

	// 피에조 부저가 연결된 핀으로 지정된 주파수를 가지는 square-wave(구형파 또는 사각파)플 생성하도록 설정합니다.
	// 도가 261Hz의 주파수를 가진다면, 1초에 261번의 square-wave을 발생신킨다는 의미입니다.
	// 디지털은 0 과 1 (HIGH와 LOW)로 표현이되므로, 1초 동안에 0과 1의 변화를 261번 주는 것과 같습니다.
	tone(piezo, tones[ton]);
	// 1초 동안 대기합니다.
	delay(1000);
}

 

 

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

오렌지보드, 토양 습도센서, 피에조