인터넷에는 토양 수분 센서 사용법을 다룬 친숙한 프로젝트와 튜토리얼이 많습니다. 이 프로젝트에서는 인터넷에서 찾은 여러 훌륭한 아이디어를 결합하고 소프트웨어 부분을 구현해 홈 식물 급수 시스템 컨트롤러를 만들었습니다. 때로는 해결책이 명백해 보여도 자세히 들여다보면 세부 사항에 악마가 숨어 있습니다. 그 디테일들을 살펴보겠습니다.
컨트롤러 주요 기능
이 컨트롤러는 다음과 같은 기능을 가집니다.
두 식물 지원: 두 개의 독립적인 채널, 각 채널은 비활성화 가능
채널별 일반 파라미터: 정방향/역방향 펌핑 시간 (10초 단위)
수동 모드: 버튼 누르기로 식물 급수 가능
급수 후 습도 체크: 급수 후 습도가 상승하지 않으면 채널 비활성화
조도 센서 내장: 야간 작동 방지
메뉴 시스템: 설정 파라미터 구성, EEPROM에 저장
토양 수분 측정
토양 수분을 정확히 측정하려면? 이베이에서 센서를 사서 화분에 꽂고 저항을 측정하는 방식이 많은 튜토리얼에 나옵니다. 하지만 제 경우 '건조'와 '습윤' 상태의 저항이 300kΩ와 500kΩ로 너무 가까워 정확한 판단이 어려웠습니다. 문제는 순수한 물은 전기를 전도하지 않고, 물속 미네랄이 전도한다는 점입니다. 따라서 측정된 저항은 우리가 준 물의 양이 아니라 식물 속 미네랄의 양과 종류에 크게 의존합니다.
구글링 중 저항 대신 정전용량(capacitance)을 측정하는 훌륭한 아이디어를 발견했습니다. 물은 유전율이 커서 '습윤' 상태의 정전용량이 '건조' 상태보다 약 100만 배 큽니다 (200µF vs 200pF). 이 차이가 압도적입니다.
정전용량 측정 방법
또 다른 천재들이 아두이노를 고정밀 커패시턴스 미터로 만들기도 했지만, 제 생각엔 너무 복잡하고 우리 센서에 그 정도 정밀도는 불필요합니다. 훨씬 간단한 방법은 아날로그 핀 두 개만 사용해 '건조'와 '습윤'을 구분할 만큼의 정확도를 얻는 것입니다. 앞서 말했듯 건조/습윤 값 차이가 크므로, 코드에서는 센서 정전용량 읽기 값의 자연 로그(ln)를 사용해 값의 범위를 좁혔습니다.
왜 H-브릿지인가?
단일 MOSFET 트랜지스터로 워터 펌프를 구동하는 게 좋아 보였습니다. 하지만 물 공급원(병)의 수위가 식물보다 높을 수 있습니다. 이 경우 펌프를 멈춰도 물이 계속 흐릅니다. 어떻게 확실히 물을 멈출까요? 펌프를 잠시 역방향으로 돌리면 됩니다. DC 모터라 극성(+/-)만 바꾸면 됩니다. 이를 위해 H-브릿지가 필요합니다. L298N IC가 좋은 선택입니다. 이 프로젝트 펌프는 9V 3A를 쓰므로 IC에 방열판과 파워 저항이 필요합니다. 1Ω 5W 파워 저항을 사용했습니다. L298N은 모터 두 개를 제어 가능하므로 두 식물을 동시에 관리할 수 있습니다.
컨트롤러 메뉴 시스템
로터리 인코더로 식물 컨트롤러를 관리합니다. 시작 후 메인 화면이 나타납니다. 상단 줄에 두 채널의 현재 센서 읽기값, 하단 줄에 건조 한계값이 표시됩니다. 채널이 비활성화면 xxxx로 표시.
수동 급수: 로터리 인코더를 짧게 누르면 수동 화면으로 진입.
설정 메뉴 진입: 메인 화면에서 인코더를 길게 누름(약 1초). 설정 메뉴 트리:
왼쪽 채널
오른쪽 채널
디스플레이 백라이트 밝기 (또는 자동)
야간 백라이트 밝기
각 채널별 메뉴:
채널 활성화/비활성화
건조 한계값 (dry limit)
펌프 정방향 작동 시간 (10초 단위)
펌프 역방향 작동 시간 (10초 단위)
파라미터 테스트
"건조 한계값"은 급수를 시작할 최소 토양 수분입니다. 값은 센서 정전용량의 자연 로그입니다. 메인 화면에서 현재 센서 읽기값과 건조 한계값을 함께 볼 수 있습니다.
"파라미터 테스트" 메뉴로 저장 전 급수 동작을 확인하고 시간 값을 튜닝할 수 있습니다.
하드웨어 구성
컨트롤러는 두 장의 3x7cm 양면 PCB로 구성됩니다.
첫 번째 PCB: L298N 모터 드라이버, 다이오드, 전원/모터 펌프 연결용 스크류 터미널 블록, 센서 커넥터. AMS1117-ADJ DC 전원 모듈로 L298N과 아두이노용 5V 생성. 디버깅 시 별도 전압 레귤레이터가 편리했지만, 아두이노 보드 레귤레이터로 5V를 써도 됩니다.
두 번째 PCB: 아두이노 나노, 로터리 인코더 및 포토 레지스터 커넥터, LCD 디스플레이 소켓.