홍창민정보·인공지능 교사

물·흙 · 난이도 쉬움

YL-69 토양 수분 센서를 잴 때만 켜서 전극 부식을 줄이고 흙 수분 보정선 만들기

YL-69는 흙에 꽂은 두 전극 사이로 전기가 얼마나 잘 통하는지로 수분을 가늠하는 센서예요. 전기가 계속 흐르면 전극이 빨리 삭으니 GP22로 잴 때만 켜는 배선과 코드, 마른 흙·젖은 흙 두 점 보정, 비료와 흙 종류가 값을 바꾸는 이유와 탐구를 정리했어요.

글 홍창민 · 갱신 2026-10-31 · 읽는 데 약 9분 · 가상 실행 확인 (실물 미확인)

이 센서로 무엇을 잴 수 있나

YL-69는 포크처럼 생긴 두 갈래 전극이에요. 보통 LM393 비교기가 얹힌 작은 기판(YL-38 등)과 짝으로 팔고, 기판에서 아날로그 출력(AO)과 디지털 출력(DO)이 나와요. 전극을 흙에 꽂으면 두 갈래 사이 흙으로 전기가 얼마나 잘 통하는지에 따라 AO 전압이 바뀌어요.

이 센서로 가장 잘 재는 것은 "같은 화분, 같은 자리에서 흙이 마르는 흐름"이에요. 물을 준 뒤 며칠에 걸쳐 값이 어떻게 변하는지, 흙 종류나 화분 위치에 따라 마르는 속도가 다른지 같은 탐구에 맞아요. 직접 보정선을 만들면 흙 속 물의 비율(함수율)도 대략 추정할 수 있어요.

다만 이 센서는 물의 양을 바로 재지 않아요. 전기가 통하는 정도는 물뿐 아니라 흙에 녹은 비료와 소금, 흙의 종류, 다져진 정도, 온도에도 좌우돼요. 화면의 "60%"는 흙 부피의 60%가 물이라는 뜻이 아니라, 우리가 정한 마른 값과 젖은 값 사이의 위치예요.

원리

Last Minute Engineers의 설명에 따르면 젖은 흙은 저항이 낮고 마른 흙은 저항이 높아요. 기판은 이 저항 변화를 전압으로 바꿔 AO로 내보내는데, 흙이 젖을수록 AO 전압이 낮아져요. 같은 신호가 LM393 비교기로도 들어가서, 가변저항으로 정한 문턱보다 마르면 DO가 HIGH, 젖으면 LOW가 되고 상태 LED가 켜져요.

전극 사이로 직류가 흐르는 동안 젖은 흙 속에서는 전기 화학 반응이 일어나 한쪽 전극의 금속이 조금씩 녹아 나가요. 그래서 전원을 늘 켜 둔 채 흙에 꽂아 두면 전극이 빨리 삭고, 같은 흙에서도 값이 조금씩 달라지다 결국 못 쓰게 돼요. 같은 설명서는 전원 핀을 아두이노의 디지털 출력에 이어 잴 때만 켜라고 권해요. 이 글도 VCC를 피코의 GP22에 이어, 잴 때 0.3초만 켜고 바로 꺼요. 이 자료실의 수위 센서 글과 같은 방법이에요.

AO 전압은 모듈에 넣은 전원 전압에 따라서도 바뀌어요. 그래서 보정할 때와 기록할 때 전원을 넣는 방법(3V3인지 GP22인지)을 바꾸지 않아요.

준비물

  • 라즈베리파이 피코와 USB 케이블
  • YL-69 전극과 LM393 기판(4핀: VCC·GND·DO·AO), 암-암·암-수 점퍼선
  • 화분이나 플라스틱 컵, 흙(신문지에 펴서 며칠 말린 흙)
  • 주방 저울(0.1g 단위면 좋아요), 눈금실린더, 숟가락
  • 탐구용: 수돗물, 증류수, 소금, 묽힌 액체 비료

배선

YL-69 토양 수분 센서를 잴 때만 켜서 전극 부식을 줄이고 흙 수분 보정선 만들기: 브레드보드에 피코와 센서를 꽂은 배선 그림
시나브로 PICO 브레드보드 작업대와 같은 계산으로 그린 배선이에요. 위 + 줄은 3.3V, 아래 + 줄은 5V예요.
브레드보드 따라 꽂기 순서 (8단계)
  1. 피코를 브레드보드 가운데 홈에 걸쳐 꽂아요. USB 단자가 왼쪽을 보게 하고, 1번 핀이 f2, 40번 핀이 e2에 들어가요. 다리가 홈 양쪽에 모두 들어갔는지 옆에서 봐요.
  2. 주황 선: 피코 36번 핀(3V3(OUT)) 옆 칸 a6 → 위쪽 + 줄(3.3V). 이제 이 줄 전체가 3.3V예요.
  3. 검은 선: 피코 38번 핀(GND) 옆 칸 a4 → 위쪽 − 줄(GND). 이제 이 줄 전체가 GND예요.
  4. 토양 습도 Soil Moisture 꽂기: 다리 VCC · GND · AO를 위쪽 a24 · a25 · a26에 차례로 꽂아요. 다리가 브레드보드에 바로 안 들어가면 암-수 점퍼선으로 같은 칸에 이어요.
  5. 주황 선(3.3V 전원): 토양 습도 VCC 줄 b24 → 위쪽 + 줄(3.3V)
  6. 검은 선(GND): 토양 습도 GND 줄 b25 → 위쪽 − 줄(GND)
  7. 초록 선(신호): 토양 습도 AO 줄 b26 → 피코 31번 핀(GP26) 옆 칸 a11
  8. 마지막 확인: ① 위쪽 + 줄(3.3V)과 아래쪽 + 줄(5V)이 서로 이어지지 않았나요? ② 모든 부품의 GND가 − 줄에 이어졌나요? ③ 5V 신호 다리는 저항을 거쳐 피코에 이어졌나요? ④ 긴 브레드보드는 + − 줄이 가운데에서 끊긴 것도 있어요(빨간·파란 선이 끊겨 있으면 짧은 선으로 이어요). ⑤ 그림과 한 칸씩 비교한 뒤 USB를 꽂아요.
모듈 핀 피코 핀 비고
VCC 3V3 (36번) 또는 GP22 (29번) 그림은 3V3. 꽂아 두고 기록할 때는 GP22로 옮겨요
GND GND (38번) 피코와 접지를 함께 써요
AO GP26 (31번) 젖을수록 값이 작아져요
DO 연결 안 함 문턱은 코드로 정해요
전극 두 핀 기판의 2핀 단자 방향은 상관없어요

배선 그림과 따라 꽂기는 시나브로 PICO 작업대처럼 VCC를 3V3에 꽂아요. 잠깐 재 볼 때는 그대로 써도 돼요. 화분에 며칠씩 꽂아 두고 기록한다면 VCC 선 하나만 GP22(29번)로 옮겨요. 코드는 두 배선 모두에서 동작하지만, 전극을 지키는 효과는 GP22 배선에서만 생겨요.

모듈 전원은 3.3V로 줘요. 5V로 켜면 AO도 5V까지 올라가 피코 아날로그 입력의 끝(3.3V)을 넘어요. GP 핀은 원래 전원 핀이 아니라서, GP22 하나로는 이 모듈 하나만 켜요. GP 핀이 낼 수 있는 전류의 한계는 수위 센서 글에 정리했어요. 기판은 흙과 물에 닿지 않게 화분 밖에 두고, 전극만 흙에 꽂아요.

코드

from machine import ADC, Pin
import time

power = Pin(22, Pin.OUT, value=0)   # VCC → GP22: 잴 때만 켜요
ao = ADC(Pin(26))                   # AO → GP26 (젖을수록 값이 작아져요)
DRY = 60000                         # 예시 값. 마른 흙에서 잰 값으로 바꿔요
WET = 20000                         # 예시 값. 물을 흠뻑 준 흙에서 잰 값으로 바꿔요
EVERY = 2                           # 연습용 간격(초). 꽂아 두고 기록할 때는 600(10분)

def read_soil(n=10):
    power.on()
    time.sleep_ms(300)              # 켠 뒤 출력이 자리 잡을 때까지
    s = 0
    for i in range(n):
        s += ao.read_u16()
    power.off()                     # 바로 꺼서 전극에 전기가 흐르는 시간을 줄여요
    return s / n

while True:
    raw = read_soil()
    rel = (DRY - raw) / (DRY - WET) * 100 if DRY != WET else 0
    rel = max(0, min(100, rel))
    print(f"DATA: soil_raw={raw:.0f}, soil_rel={rel:.0f}")
    time.sleep(EVERY)
  • read_soil()은 GP22를 켜고 0.3초 기다린 뒤 10번 읽어 평균을 내고 바로 꺼요. 0.3초는 Last Minute Engineers 예제의 기다리는 시간을 따랐어요.
  • 전극에 전기가 흐르는 시간의 비율은 간격 2초일 때 0.3 ÷ 2.3 ≈ 13%, 600초(10분)일 때 약 0.05%예요. 오래 기록할수록 간격을 늘려요.
  • soil_rel은 마른 값(0)과 젖은 값(100) 사이 어디쯤인지를 %로 나타낸 상대값이에요. 시나브로 PICO 센서 가이드 예제는 100 − 값 ÷ 65535 × 100으로 계산하는데, 이 글은 내 흙에서 잰 두 점으로 바꿨어요.

값 해석과 보정

두 점부터 정해요. 말린 흙을 컵에 담아 전극을 끝까지 꽂고 soil_raw를 1분 기록해 평균을 DRY로 적어요. 같은 흙에 물이 바닥으로 빠질 만큼 흠뻑 주고, 물이 다 빠진 뒤 다시 1분 평균을 WET으로 적어요. 흙을 바꾸거나 전극을 새로 꽂으면 두 점을 새로 잡아요.

함수율 보정선을 만들면 더 좋아요. 말린 흙 100g에 물을 10g씩 더해 섞으면 함수율(물 질량 ÷ 마른 흙 질량 × 100)이 0%, 10%, 20%…인 흙을 만들 수 있어요. 각 흙에서 soil_raw를 재면 값과 함수율의 관계를 그래프로 얻어요(탐구 1). 이 관계가 직선이라고 미리 정하지 말고 모양을 그대로 봐요.

물에 녹은 것이 값을 바꿔요. 같은 함수율이라도 비료나 소금이 녹아 있으면 전기가 더 잘 통해 값이 작아지고, 실제보다 젖은 것처럼 읽혀요. Last Minute Engineers도 흙 종류와 비료의 미네랄이 값을 바꾼다고 적어요. 비료를 준 날은 기록에 적어 둬요.

온도와 시간도 기록해요. 물이 전기를 통하는 정도는 온도에 따라 달라져요(EC 센서 글의 온도 보정 참고). 낮과 밤의 값 차이에는 수분 변화와 온도 변화가 섞여 있을 수 있어요. 몇 주 뒤 같은 젖은 흙에서 값이 달라졌다면 전극이 삭았는지 살펴봐요.

자주 하는 실수

  1. VCC를 3V3에 꽂은 채 며칠씩 꽂아 두기. 전극에 전기가 계속 흘러 빨리 삭아요. 오래 둘 때는 GP22로 옮겨요.
  2. 5V로 켜기. AO가 3.3V를 넘을 수 있어요. 3.3V로 켜요.
  3. 기판까지 흙에 묻거나 물을 뿌리기. 비교기 기판은 방수가 아니에요. 전극만 꽂아요.
  4. 꽂는 깊이와 자리를 매번 바꾸기. 흙과 닿는 넓이가 달라져 값이 달라져요. 전극에 깊이 표시를 해요.
  5. soil_rel을 흙 속 물의 비율로 발표하기. 두 점 사이의 상대값이에요. 함수율은 보정선으로 따로 구해요.

이 센서로 잴 수 있는 탐구

1. 흙에 넣은 물의 양과 값은 어떤 관계일까 - 질문: 말린 흙 100g에 물을 10g씩 더할 때 soil_raw는 어떤 모양으로 줄어들까? - 바꾸는 것: 넣은 물 0g, 10g, 20g, 30g, 40g(함수율 0~40%) - 재는 것: soil_raw(ADC 값), 함수율(%) - 방법: 컵마다 흙과 물을 저울로 재서 고루 섞고 10분 둬요. 전극을 같은 깊이로 꽂아 1분 평균을 내고, 자리를 바꿔 3번 꽂아요. 결과로 함수율 보정선을 그려요.

2. 비료와 소금은 값을 얼마나 바꿀까 - 질문: 함수율이 같은 흙에 증류수, 수돗물, 소금물을 섞으면 soil_raw가 얼마나 다를까? - 바꾸는 것: 섞는 물(증류수, 수돗물, 수돗물 100mL에 소금 0.5g, 묽힌 액체 비료) - 재는 것: soil_raw(ADC 값), 수돗물과의 차이 - 방법: 모두 함수율 20%(마른 흙 100g + 물 20g)로 맞춰요. 종류마다 컵 3개를 만들고, 컵을 바꿀 때마다 전극을 물로 헹궈 닦아요.

3. 늘 켜 둔 전극은 정말 빨리 삭을까 - 질문: 늘 켜 둔 센서와 잴 때만 켠 센서를 2주 동안 젖은 흙에 꽂아 두면, 같은 기준에서 값과 겉모양이 얼마나 달라질까? - 바꾸는 것: 전원 방식(VCC를 3V3에 계속, GP22로 10분마다 0.3초) - 재는 것: 날마다 같은 시각에 수돗물 컵에 담가 잰 soil_raw(ADC 값), 전극 사진 - 방법: 같은 제품 두 벌을 같은 흙 화분 두 개에 꽂아요. 기준을 재는 수돗물은 날마다 같은 병에서 같은 양을 따라요. 피코와 기판은 두 벌 모두 화분 밖 마른 곳에 둬요.

안전

  • 3.3V라도 물과 전기는 떨어뜨려요. 피코와 노트북은 쟁반 밖에 두고, 물을 쏟으면 먼저 USB를 뽑아요.
  • 흙과 비료를 만진 뒤에는 손을 씻어요. 비료는 제품 설명대로 묽혀 쓰고 맛보지 않아요.
  • 물 펌프를 붙여 자동으로 물을 주는 작품은 릴레이와 220V 글의 기준대로 12V 이하 직류 펌프만 써요.

더 알아보기

  • 모듈 자료: Last Minute Engineers "How Soil Moisture Sensor Works and Interface it with Arduino"(전극과 LM393 기판, 젖을수록 AO가 낮아짐, DO와 상태 LED, 3.3~5V 전원과 AO의 관계, 잴 때만 디지털 핀으로 켜기, 흙 종류와 비료의 영향)
  • 라이브러리: 따로 없어요. MicroPython 내장 machine.ADC, machine.Pin
  • 기초 글: 센서 값의 신뢰도, 잴 수 있는 탐구 주제 만들기, 전원 계산, 피코 핀 지도
글쓴이

홍창민 · 울산 학성고등학교 정보·인공지능 교사. 수업에 쓰는 도구(시나브로 PICO 웹 IDE, 학교 AI 서버 등)를 직접 만들어 운영해요. 소개 보기 · 고칠 곳 알려 주기