반응형

토양습도센서는 화분 등에 꼽아서 토양의 습도가 어느정도인지 판단할 때 쓰는 센서이다. 두 개의 전극부분을 토양에 꼽도록 되어 있으며 수분함량에 따라 달라지는 저항의 변화를 감지한다. 즉, 토양의 수분 함량이 높을 수록 전류가 잘 흐르므로 저항이 낮아지게 되고 수분이 적으면 저항값이 높아지게 된다. 이 글에서는 토양의 수분함량에 따른 저항값의 변화를 아두이노로 보내 저항값이 설정치보다 높을 때 알람을 울릴 수 있게 해 보려고 한다.


내가 가지고 있는 토양수분센서(Soil Moisture Sensor)는 아래와 같이 생겼다. 인터넷 쇼핑몰 등에서 쉽게 구입할 수 있다. 개당 2000~3000원 정도면 구입이 가능하니 가격또한 저렴하다.


구입 시 포함되어 있는 구성품이다. 암-암 케이블, 토양센서부, 센서보드로 구성되어 있다. 토양센서부는 두 가닥의 암-암 케이블을 이용하여 센서보드에 연결된다. 센서보드에 보면 +, - 표시가 있지만 아무데나 연결해도 상관 없다. 센서보드에는 감도조절을 위한 가변저항이 붙어있다.


센서보트의 핀이다. 좌측 4개의 핀은 아두이노에 연결되고 우측 2개의 핀은 토양센서부에 연결이 된다. A0 는 아날로그 아웃으로 토양수분에 따른 저항값의 변화를 0~1023의 숫자로 표현한다. 값이 낮아질수록 수분이 많은 것이다. D0는 디지털 아웃으로 수분 있음/없음만 표현되므로 여기에서는 사용되지 않는다.


연결

1. 토양수분센서부와 센서보드를 2가닥의 연결선을 이용해 연결한다. (극성은 없다.)


2. 센서보드를 아두이노와 연결

센서보드

아두이노

VCC

5V 

GND

GND 

AO

A0 






3. 아두이노와 스피커(Piezzo Speaker) 연결

 스피커

아두이노 

+

 디지털 13 

-

GND 






연결된 모습


소스

13행의 if 문의 값은 자신의 센서감도에 맞도록 적절하게 조절하여야 한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
const int soilSensorPin = A0; //토양습도센서 아웃을 아두이노 A0로 설정
 
 
void setup()
{
    Serial.begin(9600); //시리얼포트 설정
}
 
void loop()
{
    Serial.println(analogRead(soilSensorPin)); //센서값을 시리얼모니터로 전송
    
    if (analogRead(soilSensorPin) > 780)   // 토양습도 값에 따른 경고음 울리기(자신의 센서 감도에 알맞게 조절필요)
    {                                     
        tone(13,5000,100); // 피에조 ON (주파수 5000으로 0.1초간 울리기)  
    }  
 
    delay(5000);  //반복Term 5초
}
cs



우선 센서부를 화분에 꼽지 않을 경우 시리얼모니터를 통하여 값을 확인해 보았다. 


예상대로 전류가 전혀 통하지 않는 상태라서 최대값인 1023이 출력된다.


그리고 집에 있는 화분에 센서를 꼽아 보았다. 물을 안준지 꽤 오래된 화분이며 물을 줘야겠다고 판단되는 흙이 꽤 말라있는 화분이다.



화분에 센서부를 꼽으니 왔다갔다 하지만 대략 780정도 나오는 것 같다. 그러므로 저항값이 780 이상으로 올라가면 부저를 울리면 될 것 같다.


그 다음 화분에 물을 주어 보았다. 물을 주니 즉시 알람이 멈추고 시리얼모니터를 보니 저항값이 낮아진 것을 볼 수 있다.


780대이던 저항값이 400대로 낮아졌다.


이번에는 경고음만 내 보았지만 작은 어항용 워터펌프를 이용하면 자동으로 화분에 물을 주는 장치도 충분히 만들 수 있을 것 같다.

반응형

+ Recent posts