메뉴 전체보기

회원메뉴

토양 수분 및 기상 예보 기반 스마트 급수 시스템 > 게시판

본문 바로가기

쇼핑몰 검색

NO. 3596
제목 : 토양 수분 및 기상 예보 기반 스마트 급수 시스템
2026-10-18 10:36

소개: 토양 수분 및 기상 예보 기반 스마트 급수 시스템


이 프로젝트는 물을 절약하고 상당한 금액을 절감할 수 있는 스마트 급수 시스템의 구축에 대해 설명합니다. 이 시스템은 하루 중 시간, 토양 수분, 예측 강수량, 강수 확률, 예측 증발산율과 같은 매개변수의 조합을 사용하여 내 정원에 얼마나 많은 물을 주어야 할지를 결정합니다.

시스템의 스마트 구성 요소로는 Wrapit-Solutions 스타터 키트를 사용했으며, 이 키트는 Raspberry Pi Zero 2W를 허브로, ESP8266을 센서 인터페이스로 사용합니다. 이 시스템은 NodeRed가 미리 장착되어 있어, open-meteo에서 날씨 예보 데이터를 요청하고, 내 정원에 설치된 센서에서 토양 수분 함량을 읽고, 급수 시스템을 제어하는 로직을 흐름으로 구현할 수 있게 해주었습니다.




STEP 1. 준비물


  1. 1x Wrapit-Solutions 스타터 키트, 라즈베리 파이 허브와 ESP8266 기반 센서 인터페이스 보드 포함
  2. 1x 12 볼트 DC (24 볼트 DC도 가능) 일반 폐쇄형 물 솔레노이드 밸브
  3. 1x 220VAC/12VDC (또는 24VDC) 솔레노이드 밸브를 구동할 수 있는 적절한 전류 용량의 전원 어댑터
  4. 1x 토양 수분 센서 (커패시티브) 예: DFRobot SEN0193
  5. 2x 10k 옴 ¼ 와트 저항기
  6. 15 ml의 에폭시 접착제 (예: 아랄다이트)
  7. 1x 32mm (1.25”) 폴리 파이프 엔드 캡
  8. 1x 4 미터 길이의 32mm 폴리 파이프 (필요에 따라 더 많이)
  9. 2x 32mm 90° 폴리 파이프 커넥터 (필요에 따라 더 많이)
  10. 적절한 데이터 케이블, 예: 3 도체 차폐 22-24 AWG 또는 cat 5 또는 cat 6
  11. 1x 틸팅 버킷 강우계 (선택 사항)
  12. 1x 강우계 마운트 및 강우계 배선을 위한 폴리 파이프 (선택 사항)




STEP 2. 센서에 대한 한마디


저는 저항식 센서가 부식되고 신뢰할 수 없는 동작을 보이는 경향이 있기 때문에 정전 용량식 습도 센서를 사용했습니다. 정전 용량식 센서의 활성 요소는 부식을 방지하는 투명 코팅으로 덮여 있습니다. 저항식 프로브는 습도에 따라 변화하는 저항을 측정하는 원리로 작동하기 때문에 토양과 직접 접촉해야 합니다. 불행히도 이로 인해 신뢰할 수 없는 동작이 발생하며 장기 사용에 적합하지 않습니다.




STEP 3. 하드웨어 연결


하드웨어 연결


위 다이어그램은 시스템의 다양한 하드웨어 구성 요소 간 연결을 보여 줍니다. 참고: DFRobot tipping bucket rain gauge는 선택 사항이며 프로젝트에 반드시 필요한 구성 요소는 아닙니다. 지난 24시간 동안 제 위치에 실제로 내린 강우량과 Open-Meteo의 예보 강우량을 비교하고 싶어서 프로젝트에 포함했을 뿐입니다.

  1. 솔레노이드에 전원을 공급하는 AC/DC 어댑터(12-24Vdc)는 Wrappa 릴레이 접점 1A 및 1B에 연결합니다.참고 1
  2. 물 솔레노이드 밸브는 Wrappa 릴레이 접점 2A 및 2B에 연결합니다.참고 1
  3. tipping bucket rain gauge의 ‘D’ (SDA) 출력은 Wrappa 단자 D2에 연결합니다.참고 2
  4. tipping bucket rain gauge의 ‘C’ (SCL) 출력은 Wrappa D3에 연결합니다.참고 2
  5. tipping bucket rain gauge의 ‘-’ 출력은 Wrappa GND 단자에 연결합니다.
  6. tipping bucket rain gauge의 ‘+’ 출력은 Wrappa 3.3V 단자에 연결합니다.
  7. 토양 수분 센서의 ‘+’는 Wrappa 3.3V 단자에 연결합니다.
  8. 토양 수분 센서의 ‘-’는 Wrappa GND 단자에 연결합니다.
  9. 토양 수분 센서의 ‘A’는 Wrappa A1 단자에 연결합니다.
  10. 10k Ohm I2C 버스 풀업 저항은 Wrappa 3.3V 단자와 Wrappa D2 단자 사이에 연결합니다.
  11. 10k Ohm I2C 버스 풀업 저항은 Wrappa 3.3V 단자와 Wrappa D3 단자 사이에 연결합니다.
  12. 센서 또는 rain gauge에 차폐 데이터 케이블을 사용하는 경우 차폐선은 Wrappa GND 단자에 연결합니다. 반대쪽 끝은 연결하지 않은 상태로 둡니다.


참고 1: 극성은 중요하지 않습니다.

참고 2: 단자 D2 및 D3는 flow에서 Wrappa Manager 노드를 사용하여 Wrappa의 i2c 버스로 구성해야 합니다.




STEP 4. 로직 - 입력 및 가정


Wrapit Solutions 스타터 키트의 허브는 프로그래머블 로직 구동 엔진으로 Node-RED 인스턴스를 실행하지만, 물주기 시스템의 '두뇌'인 Node-RED 흐름에 들어가기 전에, 물 사용/비용 절감을 위한 비트리비얼한 시도에서 고려할 수 있는 요소들을 간단히 살펴보는 것이 좋습니다.

물 사용 로직

물 소비를 진정으로 최적화하는 것은 꽤 복잡한 작업이라는 것을 인식하는 것이 중요합니다. 주거용 주택 시나리오에서 고려해야 할 몇 가지 요소는 다음과 같습니다: 예측된 태양, 바람 및 비; 예측 신뢰성(즉, 예측 확률); 목표 식물/나무/잔디의 물 요구량 및 흡수율; 사용 가능한 수압; 물주기 시간; 하루 동안의 실제 온도, 바람, 습도; 선택한 물 공급 메커니즘의 특성(드립, 스프링클러, 소커 호스 등); 토양 흡수/배수 특성; 정원의 햇빛/그늘/바람 노출; 잔디/정원 지형 및 유출에 대한 민감성; 하루 중 특정 시간에 잔디나 정원이 건조해야 하는 요구 사항; 이른 아침에 물주기 시스템에서 발생하는 소음에 대한 본인과 이웃의 내성; 물 비용 등등.

이 프로젝트에서는 너무 많은 물 사용 최적화 요소를 포함하여 '바다를 끓이는' 시도를 하지 않았고, 대신 복잡성과 효율성 사이의 합리적인 균형을 설정하고자 했습니다. 따라서 이 프로젝트를 위해 다음 요소를 선택했습니다: 물주기 시간; 토양 습도; 강수 예보, 강수 확률 및 증발산율 예보. 이러한 요소들과 일회성 습도 센서 자동 보정 노력, 그리고 Node-RED 흐름에서 소수의 매개변수 설정을 통해, 이 프로젝트가 꽤 효과적인 스마트 물주기 최적화 솔루션을 나타낸다고 주장합니다.


여기서 로직은 다음과 같습니다: 매일 밤 자정이 지나면 시스템이 '깨어나' 물주기 날인지 여부를 결정하고, 그렇지 않으면 다시 잠에 듭니다. 현재 날에 물주기가 예정되어 있다면, 우리는 sunrise-sunset.org 웹사이트에 호출하여 일출 시간을 얻습니다. 일출 시간을 얻으면, 우리는 일출 전 미리 정의된 시간에 활동을 트리거하기 위해 타이머를 설정합니다. 주의: 일출 직전과 직후에 물을 주는 것이 일반적으로 정원에 물을 주기에 가장 좋은 시간으로 여겨집니다. 그 이유는: 더 시원하고; 일반적으로 바람이 적고 따라서 증발이 적으며; 식물들이 '깨어나' 낮 시간 동안 광합성을 준비하기 위해 물을 흡수하기 때문입니다. 타이머가 트리거되면, 우리는:

  1. 토양 습도 측정값을 가져옵니다
  2. Meteo 웹사이트에서 시간별 강수, 강수 확률 및 증발산율 예보를 얻습니다
  3. 현재 토양 습도 측정값과 Meteo의 예보 데이터를 사용하여 물주기 지속 시간을 계산합니다
  4. 일출 전 계산된 지속 시간의 절반만큼 물을 주고, 나머지 절반은 일출 후에 물을 줍니다




STEP 5. Node-Red로 로직 구현하기


Node-Red로 로직 구현하기


위 그림은 앞서 언급한 논리를 구현한 Node-RED 흐름의 스크린샷입니다 (GitHub에서 확인할 수 있습니다). 이 프로젝트를 구성하는 데 AI인 Anthropic의 Claude를 사용하여 흐름을 처음부터 만들었다는 것을 자유롭게 인정합니다. Claude는 몇 가지 합리적인 제안을 했고 결국 꽤 괜찮은 흐름을 만들어냈지만, 그 과정에서 꽤 많은 오류를 범했으며, 종종 지나치게 복잡하거나 얽힌 코드를 생성했고, 많은 잘못된 가정을 했기 때문에 제대로 작동하기까지 많은 반복과 더 자세한 수정된 프롬프트 및 요구 사항 명세가 필요했습니다.

흐름은 조금 위협적으로 보일 수 있지만 실제로는 그렇게 복잡하지 않습니다. 작동 방식에 대한 간단한 설명은 다음과 같습니다: 흐름의 왼쪽 상단에 있는 ‘배포 시’ 주입 노드와 ‘제어 매개변수 지정 및 저장’ 기능 노드가 결합되어 시스템 제어 매개변수의 지정 및 저장을 지원하며, 여기에는 지역 시간대와 급수 시스템의 위도/경도가 포함됩니다.


‘매일 자정’ 주입 노드는 매일 밤 자정 1분 후에 실행됩니다. 이때 ‘급수일 확인’ 기능 노드를 트리거하여 급수일인지 여부를 결정합니다. 참고: 급수 빈도는 흐름의 대시보드를 사용하여 지정됩니다 (아래 참조). 급수일이라고 가정하면, ‘일출 쿼리용 URL 생성’ 기능 노드는 ‘일출 시간 가져오기’ HTTP 노드가 sunrise-sunset.org 웹사이트에 전송할 요청 URL을 생성합니다. sunrise-sunset.org의 응답에는 일출 시간이 포함되어 있으며, ‘트리거 시간 계산’ 기능 노드는 이를 지연 기간으로 변환합니다. 지연 기간은 ‘트리거 시간까지 대기’ 지연 노드로 전송됩니다.


트리거 시간이 되면, ‘ADC 읽기 준비’ 기능 노드가 Wrappa에 의해 단일 ADC(아날로그 입력) 읽기를 트리거합니다. Wrappa에서 반환된 원시 ADC 값은 ‘샘플 저장’ 기능 노드에 의해 저장되며, 이 노드는 또한 ‘Open-Meteo용 URL 생성’ 기능 노드를 트리거합니다. 해당 노드는 ‘Open-Meteo 예보 가져오기’ 노드에 의해 Open-Meteo 웹사이트에 전송될 예보 쿼리를 생성합니다. Open-Meteo의 응답에는 시간별 강수량, 강수 확률 및 증발산율에 대한 예보가 포함되어 있으며, ‘예보 처리’ 기능 노드는 이를 집계하여 ‘관개 관리자’에 전송합니다. 관개 관리자 노드는 다음을 기반으로 관개 결정을 내립니다: 보정 데이터(아래 참조); 저장된 토양 수분 읽기; 및 Open-Meteo의 모든 예보 정보. 참고: 특정 토양 수분 및 기상 예보 조건 하에서는 ‘관개 관리자’가 급수를 아예 건너뛰기로 결정할 수 있습니다.


현재 날에 대한 관개 결정이 내려진 후, 관개 관리자 노드는 ‘Wrappa 릴레이’ 노드를 통해 급수 시스템의 전원을 켜고 끄는 것을 제어합니다.


‘급수 시스템 제어’ 흐름의 하단에 있는 노드 모음은 관개 결정을 기록하고 시스템의 사용자 인터페이스 또는 대시보드를 구성하는 것을 지원합니다 (아래 참조).




STEP 6. 대시보드


대시보드


이 흐름에서 생성된 Node-Red 대시보드는 위 이미지에 표시된 대로 급수 정보 및 제어 옵션을 제공합니다.

  1. 상태는 대시보드 상단의 ‘현재 시스템 상태’ 필드에 표시되며, 시스템이 현재 급수를 하고 있는지 여부를 나타냅니다.
  2. ‘수동 급수 제어’ 버튼은 급수 시스템을 수동으로 켜거나 끌 수 있는 오버라이드 역할을 합니다.
  3. ‘자동 급수 제어’는 다음을 지원합니다:
  4. 자동 급수를 활성화 및 비활성화하기 (계절 제어에 유용);
  5. 자동 급수 시도 간의 일수 지정; 및
  6. 자동 급수 깊이 지정 (얕음, 보통, 깊음).
  7. ‘급수 결정 이력’은 지난 7일 동안의 급수 결정에 대한 가시성을 제공합니다.




STEP 7. 토양 수분 센서 설치하기


토양 수분 센서 설치하기


토양 수분 센서 설치하기


토양 수분 센서 설치하기


토양 수분 센서 설치하기


토양 수분 센서는 이 프로젝트에서 중요한 요소이므로 적절하게 준비하고 설치하는 데 약간의 노력이 필요합니다. 제가 한 방법은 다음과 같습니다(참고: 이것이 최선이거나 유일한 방법이라는 뜻은 아니지만, 저에게는 효과가 있었습니다). 32mm 폴리 파이프 엔드 캡에 구멍을 일렬로 만들기 위해 2mm 드릴을 사용했습니다. 그런 다음 작은 랫테일 파일과 평줄을 사용하여 엔드 캡에 슬롯을 만들었습니다. 수분 센서와 엔드 캡이 적당히 단단하게 맞도록 하여 두 부품 사이의 틈에서 에폭시가 과도하게 흘러나오지 않게 했습니다. 또한 폴리 파이프를 캡에 삽입했을 때 센서 양쪽에 충분한 여유 공간이 생기도록 슬롯을 중앙에 배치해야 합니다.

그런 다음 2액형 에폭시 수지를 사용하여 센서를 캡 안에 ‘포팅’했습니다. 또한 센서 가장자리에도 에폭시를 발라, 인쇄 회로 기판이 습한 환경에 장시간 노출될 때 층간 박리될 위험을 줄였습니다.

저는 잔디밭 아래 약 10cm 깊이에 센서를 설치하기로 했습니다. 센서의 방향에 유의하십시오. 센서의 커패시터 전극 트랙이 위쪽을 향하도록 해야 합니다. 센서 위에 있는 흙의 무게가 대부분의 토양 수분 상태에서, 아니면 모든 토양 수분 상태에서라도 흙과 센서가 상당히 잘 접촉하도록 해 줄 것이라고 생각했습니다. 이것이 현명한 결정이었는지는 시간이 지나면 알 수 있을 것입니다.




STEP 8. 초기 시스템 검증


프로브가 잔디 아래에 설치되고 Wrappa에 연결되었으며, 솔레노이드 밸브가 외부 수도꼭지 및 잔디/정원 스프링클러 시스템과 연결되었을 때, 나는 연결 상태와 설정의 올바른 작동을 확인할 수 있었습니다. 보정(calibration)을 시작하기 전에 대시보드의 수동 제어를 사용하여 급수 시스템을 켜고 끌 수 있었습니다. 또한 흐름에 임시 주입 노드를 삽입하고 그 출력을 ‘Read Wrappa ADC’ 노드에 연결하여 수분 프로브에서 합리적인 신호를 받고 있는지 확인했습니다.




STEP 9. 시스템 보정하기


시스템 보정하기


시스템이 해당 환경에서 효과적으로 작동하려면 일회성 보정이 필요합니다(토양/센서 조건이 크게 변하는 경우에는 한 번 이상 필요할 수 있습니다). 보정 과정은 다음과 같습니다:

1. 토양 수분 센서를 장기간 사용할 위치에 설치하고, 가능하면 며칠 동안 그대로 두어 자리를 잡게 합니다.

2. 대상 잔디밭/정원이 며칠 동안 마르도록 둡니다. 보정을 수행하기 전에 토양이 충분히 건조해야 합니다.

3. Node-RED 디자인 센터의 디버그 패널이 표시되는지 확인합니다.

4. 위의 ‘급수 시스템 보정’ 플로우에서 ‘보정 시작’ 인젝트 노드의 왼쪽을 클릭하여 실행합니다. 보정 결과가 디버그 패널에 나타나기 시작합니다.

5. 디버그 패널에 보정 완료 메시지가 표시될 때까지 기다립니다(토양의 투수성에 따라 30분 이상 걸릴 수 있습니다).

6. 보정에 실패한 경우 ‘보정 설정 지정’ 노드에서 보정 매개변수를 조정합니다. 매개변수가 보정에 미치는 영향은 아래의 ‘시스템 조정’ 섹션과 해당 노드 코드의 주석에 설명되어 있습니다.


시스템 조정

내 잔디밭/정원에 사용한 시스템 매개변수 설정이 모든 상황에 적합한 것은 아니므로, 이를 고려하여 여러 시스템 제어 매개변수를 외부에 공개했으며 쉽게 변경할 수 있습니다. “제어 매개변수 지정 및 저장” 노드의 주요 매개변수는 다음과 같습니다:

  1. 시간대: UTC 일출 시간을 현지 시간으로 올바르게 변환합니다. 해당되는 경우 일광 절약 시간제도 고려합니다.
  2. 위도/경도: 정확한 Open-Meteo 예보를 위한 위치입니다.
  3. 약한 급수 및 중간 급수 지속 시간 백분율: 이 매개변수는 보정된 깊은 급수 지속 시간의 백분율로 급수 지속 시간을 지정합니다.
  4. 약한 비, 중간 비 및 강한 비의 강수량(mm): 각 급수 강도에 해당하는 강수량을 mm 단위로 지정합니다.


보정에 사용되는 주요 매개변수는 다음과 같습니다:

  1. BASELINE_SAMPLES: 안정적인 ‘건조’ 기준선을 설정하는 데 사용되는 샘플 수입니다.
  2. SAMPLE_INTERVAL_MS: 보정의 여러 단계에서 ADC 샘플 사이의 간격(밀리초)입니다.
  3. BASELINE_DEVIATION_MAX: 기준선 평균에서 벗어날 수 있는 각 기준선 샘플의 최대 허용 편차입니다. 보정의 ‘건조’ 기준선 단계에서 샘플 하나라도 이 값을 초과하면 불안정한 기준선 오류와 함께 보정이 중단됩니다.
  4. TOO_WET_THRESHOLD: 이 값 이하의 ADC 값에서는 토양이 보정하기에 너무 젖은 것으로 간주됩니다. 기준선 평균이 이 값 이하이면 보정이 중단됩니다.
  5. SATURATION_DELTA: 포화 상태를 감지하는 데 사용됩니다. 연속된 여러 샘플에서 ADC 값의 변화량이 이 값보다 작으면 토양이 포화된 것으로 간주됩니다.
  6. SATURATION_WINDOW: 포화를 확인하는 데 필요한 연속 샘플 수입니다.
  7. CALIBRATION_TIMEOUT_MS: 소프트 타임아웃이 발생하기 전까지의 총 보정 시간 상한(밀리초)입니다.

이러한 주요 매개변수는 ‘보정 설정 지정’ 노드에서 수정할 수 있습니다.


NodeRed 플로우는 GitHub 에서 이용할 수 있으며, 다운로드한 후 NodeRed에서 배포를 클릭하기만 하면 쉽게 사용할 수 있습니다. 이 시스템을 즐겁게 사용하시고, 물을 많이 절약하면서 건강한 잔디밭과 정원을 가꾸시기 바랍니다.


원문: https://www.instructables.com/Soil-Moisture-Weather-Forecast-Based-Smart-Waterin/

좋아요 0
게시판

회사명 공방유니언 주소 각 공방 주소 참조
사업자 등록번호 0000 대표 공방유니언 전화 019-60105846 팩스 0000 이메일 gongbangunion@gmail.com
통신판매업신고번호 0000 개인정보관리책임자 공방유니언
Copyright © 2017 공방유니언. All Rights Reserved.