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)
동작하는 모습은 다음과 같다.


