토양수분 센서 사용법 및 스위치 (물펌프) 자동제어

토양수분 센서 사용법 및 스위치 (물펌프) 자동제어

​

1. 토양수분 센서

라즈베리파이 피코 보드에 적용해 볼 수 있는 여러 가지 센서류를 찾던 중에, 가격이 저렴하면서도, 과거 아두이노 보드에서도 적용이 되었던 토양수분기 센서류들을 발견하게 되었다. 길이가 화분 등에 적용하기에 좋을 만큼 적당한 길기이기도 하였고, 가격이 매우 저렴해서, 구입해 시험해 보기로 했다.

​

​

스펙상으로는 3.3에서 5.5V 사이의 전압에서 동작한다고 되어 있고, 출력은 0~3.0V의 전압으로 아날로그 신호를 제공한다고 되어 있었다.

​

​

주문한 센서 제품을 받아보니, 길이는 대략 10cm 정도였는데, 센서 끝부분의 앞뒷면으로 작은 전극이 돌출되어 있는 형태였다.

단자부에는 전원인 VCC와 GND 외에, 아날로그 출력을 위한 AUOT(아마도 AOUT을 이렇게 쓴 듯) 단자가 있었다.

​

​

2. 토양수분 센서의 입력신호값 확인

피코 보드의 Ananolg 0번 채널에 신호선을 연결하고,

예전에 아날로그 입력신호의 전압을 계산하기 위해 만들어 두었던 Code를 그대로 이용하여 입력 전압을 측정해 보았다.

그 결과, 공기 중에 센서가 그대로 노출된 상태에서는 대략 1.10을 넘는 전압이 나왔다.

​

그리고, 작은 유리컵에 말라있던 화분의 흙을 채우고, 물을 조금씩 부어 축축하게 만들면서 입력신호값을 측정하였다.

​

그 결과, 흙이 축축해짐에 따라 입력값의 전압이 점점 낮아지다가, 흙이 완전히 젖었을 때는 다음과 같이 약 0.54~0.55V 정도의 입력값을 얻었다.

​

3. 토양수분 센서 응용

토양수분 센서를 이용해서 자동으로 물 펌프를 조작하여 화분이나 화원에 물을 주거나, 종작 물재배에 활용하는 것을 모사해 보기 위해(LED가 켜지면 물 펌프가 동작하는 것을 모사하기 위한 목적으로), 물 펌프의 전원 스위치로 가정한 LED를 추가로 연결하였다.

​

​

그리고, 위에서 사용한 Code도 조금 고쳐서 다음과 같이 변경하였다.

​

이 Code에서는 위에서 확인된 대로, 입력 전압 값이 1이 넘을 때 물 펌프(=LED)를 동작시켜서, 물을 공급하되, 토양이 축축해져서 입력 전압 값이 0.9 이하가 되면 이미 물이 공급되어 토양이 젖기 시작한 것으로 판단하고 물 펌프(=LED) 전원이 자동으로 차단되도록 설정했다. 입력 전압이 0.9에서 물 펌프가 꺼지도록 설정한 것은 토양속으로 물이 확산되는 속도를 고려하여 입력값이 0.9가 되면 이미 토양이 젖기 시작한 것으로 판단했기 때문이다.

​

물론 이러한 설정값은 각자의 판단이나, 재배하는 식물의 재배특성에 따라서 달라져야 할 것 같다.

import machine
import utime

pumpsw=machine.Pin(17, machine.Pin.OUT)
pumpsw.value(0)
driness = machine.ADC(0)
conversion_factor = 3.3 / (65535)

while True:
 inputvolt = driness.read_u16() * conversion_factor
 print("input volt = " , inputvolt)
 
 if inputvolt>= 1.0:
    pumpsw.value(1)
 elif inputvolt<= 0.9:
    pumpsw.value(0)
    
 utime.sleep(2)
 

동작하는 모습은 다음과 같다.

​