[DIY 스마트팜] PLC와 Python으로 만드는 스펀지 포트 기반 자동 육묘 시스템 아이디어


이번 글에서는 PLC 엔지니어의 관점에서 “공장형 스마트팜의 초기 육묘 시스템”을 어떻게 가성비 있게 구현할 수 있는지 정리해 보겠습니다.

특히 이번 시스템은:

  • 스펀지 포트 기반 육묘

  • 저면급수

  • 자동 배출

  • 약한 환기(Flicker Ventilation)

구조를 중심으로 설명합니다.

복잡한 AI보다:

“제어하기 쉬운 물리 시스템”

을 먼저 만드는 방향입니다.


1. 왜 스펀지 포트를 사용하는가?

공장형 스마트팜 영상을 보면 씨앗을 작은 스펀지에 꽂아 발아시키는 경우가 많습니다.

이유는 단순합니다.

자동화에 매우 유리하기 때문입니다.


일반 상토의 문제점

상토는 자연 재료라서 편차가 큽니다.

예를 들어:

  • 함수율 편차

  • 밀도 편차

  • 배수 편차

  • 공극률 편차

가 존재합니다.

즉:

같은 시간 동안 물을 공급해도 결과가 달라질 수 있습니다.

PLC 제어 입장에서는 매우 까다로운 조건입니다.


반면 스펀지 포트는?

스펀지 포트는:

  • 크기 일정

  • 공극률 일정

  • 함수율 패턴 일정

  • 배수 특성 일정

합니다.

즉:

“반복성이 매우 높다”

는 강력한 장점이 있습니다.

예를 들어:

  • 저면급수 30초
    → 거의 일정한 함수율

이라는 재현성이 가능합니다.

이건 PLC 타이머 제어와 궁합이 매우 좋습니다.


2. 시스템 구성

이번 시스템은 다음 구조를 사용합니다.


센서 구성

온습도 센서

  • SHT30

  • SHT31

  • SHT35

역할:

  • 온도 측정

  • 상대습도 측정

  • VPD 계산용 데이터 제공


지온 센서

  • DS18B20 방수형

역할:

  • 스펀지 트레이 온도 측정

  • 히터 제어

발아 단계에서는 기온보다 지온 안정성이 훨씬 중요합니다.


수위 센서

역할:

  • 저면급수 수위 감지

  • 펌프 공회전 방지


3. 액추에이터 구성


저면급수 펌프

추천:

  • DC 24V 다이아프램 펌프

또는:

  • 소형 수중 펌프


드레인 밸브

역할:

  • 급수 후 자동 배출

  • 과습 방지


환기 팬

중요 포인트:

강한 환기가 아니라:

“약한 지속 환기”

가 중요합니다.


히터 매트

발아 안정성을 크게 올려주는 핵심 장치입니다.

특히 겨울철에는 매우 중요합니다.


4. 추천 제어 구조

이번 시스템에서 가장 추천하는 구조는:

  • 스펀지 포트

  • 저면급수

  • 자동 배출

  • 약한 환기

조합입니다.

이유는:

  • 가성비

  • 관리 용이성

  • 곰팡이 억제

  • 제어 단순성

의 밸런스가 가장 좋기 때문입니다.


5. 왜 자동 배출이 중요한가?

초보자들이 가장 많이 하는 실수는:

“항상 젖어 있게 유지하는 것”

입니다.

하지만 발아 시스템에서 가장 중요한 건:

“물 + 산소”

입니다.


자동 배출의 핵심

배출 과정에서:

  • 물이 빠져나가고

  • 공기가 다시 들어옵니다.

즉:

  • 함수율 유지

  • 산소 공급

  • 곰팡이 억제

를 동시에 달성할 수 있습니다.


6. 권장 급수 시퀀스

예시:

  1. 저면급수 시작

  2. 30초 급수

  3. 2분 유지

  4. 자동 배출

  5. 대기

스펀지 포트는 규격화된 배지이기 때문에:

단순 타이머 제어만으로도 반복성이 매우 좋습니다.


7. 환경 모델: VPD (Vapor Pressure Deficit)

단순 습도(%)는 식물 상태를 정확히 설명하지 못합니다.

식물은 실제로:

“얼마나 수분을 증산할 수 있는 환경인가”

에 반응합니다.

이 값을 수치화한 것이 VPD(포차)입니다.


8. 왜 VPD가 중요한가?


VPD가 너무 낮으면

  • 과습

  • 입고병

  • 곰팡이

  • 산소 부족

문제가 발생합니다.


VPD가 너무 높으면

  • 발아 건조

  • 유묘 스트레스

  • 성장 지연

문제가 발생합니다.


발아 단계 권장 범위

보통:

  • 0.4 ~ 0.8 kPa

범위를 많이 사용합니다.


9. VPD 계산 모델

포화수증기압(SVP):

SVP = 0.6108 × exp((17.27 × T) / (T + 237.3))

실제수증기압(AVP):

AVP = SVP × (RH / 100)

최종 VPD:

VPD = SVP - AVP


10. Python VPD 계산 샘플 코드

import math

def calculate_vpd(temp_c, humidity):

    svp = 0.6108 * math.exp((17.27 * temp_c) / (temp_c + 237.3))

    avp = svp * (humidity / 100.0)

    vpd = svp - avp

    return round(vpd, 3)

temp = 24.0
humidity = 80.0

vpd = calculate_vpd(temp, humidity)

print(f"VPD: {vpd} kPa")

11. 적산온도(GDD) 모델

발아는 단순히:

“며칠이 지났는가”

보다:

“얼마나 유효 온도를 누적했는가”

에 더 크게 영향을 받습니다.


12. 적산온도 계산식

GDD = Σ(Tavg - Tbase)

예시:

  • 평균 온도 = 22도

  • 기준 온도 = 10도

라면 하루 GDD는:

12가 누적됩니다.


13. Python 적산온도 계산 코드

temps = [22, 23, 21, 24, 22]

base_temp = 10

gdd_total = 0

for temp in temps:

    gdd = temp - base_temp

    if gdd < 0:
        gdd = 0

    gdd_total += gdd

print("누적 GDD:", gdd_total)

14. PLC 제어 로직 예시

예시 시퀀스:

  • 6시간마다 급수

  • 30초 펌프 ON

  • 2분 유지

  • 드레인 밸브 OPEN

  • 30초 배출

  • 환기 팬 1분 ON

이 정도만 구현해도 꽤 안정적인 육묘 환경을 만들 수 있습니다.


15. 플리커(Flicker) 환기 전략

발아 시스템에서는 강한 환기보다:

“약한 지속 환기”

가 중요합니다.


왜 환기가 필요한가?

습도 센서 값이 정상이어도 공기가 정체되면:

  • 곰팡이

  • 결로

  • 입고병

문제가 발생합니다.


추천 로직

예시:

  • 10분마다 1분 환기

또는:

  • 30분마다 강제 공기 순환

같은 구조를 많이 사용합니다.


16. 안전 로직 (Interlock)

물과 전기를 함께 사용하는 시스템에서는 인터록이 매우 중요합니다.


최대 펌프 가동 시간 제한

예시:

  • 펌프 60초 이상 동작 시 강제 차단


수위 센서 연동

수조 물 부족 시:

  • 펌프 정지

  • 경보 출력


야간 급수 제한

야간에는 증산량이 감소하므로:

  • 급수량 감소

  • 환기 증가

구조가 과습 방지에 유리합니다.


17. 데이터 시각화

Python으로 수집한 데이터는:

  • Grafana

  • SQLite

  • PostgreSQL

  • InfluxDB

등과 연동할 수 있습니다.

특히 다음 데이터를 함께 보면 매우 유용합니다.

  • VPD 변화

  • 적산온도 누적량

  • 급수 주기

  • 배출 횟수

  • 발아 속도

  • 환기 패턴

이 데이터는 이후:

  • 성장 예측

  • 환경 최적화

  • 자동화 고도화

로 확장 가능한 강력한 자산이 됩니다.

댓글