반응형

 

 

 

2021.01.03 수정 업데이트

 

토양수분센서(soil moisture sensor)도 아두이노(Arduino)에서 많이 다루는 센서 중 하나입니다. 앞서 소개한 온습도 센서(Temperature and humidity sensor)와 초음파 센서(Ultrasounds sensor)처럼 외부환경을 데이터화하여 외부기기를 동작하기 좋습니다. 예를 들어 식물이나 농작물이 자라는 화분이나 토양의 수분함량을 데이터화해서 물을 자동으로 주거나 펌프를 작동하는 등에 적용할 수 있습니다.

 

최근 많은 사람들이 가정에서 취미나 인테리어로 식물을 기르는 일에 관심이 많아지고 있고, 플랜테리어(planterior) 혹은 그린테리어(greenterior)라고 식물(plant)과 인테리어(interior)의 합성어로 신조어가 생길 정도로 점점 트렌드로 자리 잡고 있죠 ^^ 이런 트렌드에 아두이노 IoT(사물인터넷)를 적용해보면 토양수분센서를 사용하여 화분의 토양에 물이 어느 정도 있는지 확인해서 식물관리에 조금 더 도움이 될 수 있을 듯하네요 ㅎㅎ

 

오늘은 토양수분센서에 대해 알아보고 아두이노에서 사용방법을 알아보겠습니다.

 

Arduino 아두이노 온도 습도 센서(Temperature and Humidity sensor) 종류 및 사용법

온습도 센서(Temperature and Humidity sensor)는 환경 측정에서 중요하면서도 기본적인 센서로 많이 사용됩니다. 중요하지만 비교적 흔하게 구할 수 있는 센서라 시중에 다양한 종류의 제품이 있고 기능적으로는..

it-g-house.tistory.com

 

Arduino 아두이노 초음파(거리) 센서(ultrasounds sensor) 사용방법

앞서 포스팅에서 온습도 센서(Temperature and Humidity sensor)만 가지고 아두이노의 기본적인 동작법이나 파일 저장법, 그래프 그리기, 엑셀(Excel)과 연동하는 방법들을 알아보았습니다. 그리고 인터넷(Interne..

it-g-house.tistory.com


1. 토양수분센서 (soil moisture sensor)

 

토양수분센서 종류는 다양하게 있는데 싸게는 몇 천원부터 비싸게는 몇 십만 원까지 합니다. 아두이노에서 가볍게 사용할 수 있는 저렴한 제품들을 온라인상에서 쉽게 구할 수 있지만 정밀한 측정에는 어려움이 있습니다. 실험용이나 좀 더 정밀한 측정에 사용되는 센서 또는 토양의 온도나 전기전도도(EC, Electrical Conductance)도 같이 측정할 수 있는 TEROS 시리즈의 센서도 있지만 가격이 상당합니다.

 

아두이노 토양수분센서

 

아두이노 토양수분센서
토양수분센서 TEROS

대표적인 토양수분센서의 원리는 토양의 수분량에 따라 변하는 유전율(dielectric permittivity)을 이용하여 전기신호(voltage)로 출력합니다. 측정 방법에는 FDR (Frequency Domain Reflectometry), TDR (Time Domain Reflectometry) 등이 있는데 최근에 많이 사용되는 방법이 FDR 방법입니다. 자세한 내용은 제가 어설프게 설명하는거 보다 검색해보시면 쉽게 이해하실 수 있을 겁니다 ^^

 

2. 토양수분센서 배선

 

오늘 예시에서 사용할 토양수분센서는 모델명 SEN0114로 온라인에서 쉽게 구입할 수 있습니다. 여러 모델 중에서 SEN0114를 선택한 이유는 다양하게 점검해 본 결과 저렴한 가격에 비해 그나마 사용하기 유용하기 때문입니다. (뒤에서 추가 설명하겠습니다.)

 

아두이노(Arduino) 토양수분센서(soil moisture sensor) SEN0114 배선

 

 

그림과 같이 토양수분센서의 VCC (빨강) 선은 아두이노의 3.3 또는 5V, GND (검정) 선은 GND pin에 맞게 연결하고, Output (파랑) 선은 아날로그(Analog) pin 0번에 (프로그램에서 수정 가능) 연결합니다. 예시로 사용하는 토양수분센서는 아날로그로 출력 값을 송출하기 때문에 아날로그 pin과 연결하지만 센서에 따라 디지털 신호도 있으므로 사용하시는 센서의 사양을 잘 확인하고 사용하면 되겠습니다.

 

3. 토양수분센서 프로그램 코딩

 

void setup(){ 
  Serial.begin(57600); 
  }
 
void loop(){ 
 Serial.print("Moisture Sensor Value: "); 
 Serial.println(analogRead(A0)); 
 delay(1000); 
 }

아날로그로 출력되는 토양수분센서라 스케치 프로그램가 아주 간단합니다. 아날로그 pin A0로 들어오는 신호만 읽어주면 끝입니다. 

 

4. 토양수분센서 값과 Calibration

 

모든 센서는 정확한 측정을 위하여 calibration을 해야합니다. 보정한다는 뜻 정도로 생각할 수 있는데 저울 같은 경우 0점을 잡는 것과 같은 것입니다. 이처럼 calibration은 0점 보정 외에 원하는 값으로 변환하는 작업도 포함합니다. 예를 들어 토양수분센서로 토양의 수분 함량 (%) 값을 알고 싶은데 출력 값은 voltage 값인 경우 변환하는 수식(calibration equation)을 사용하여 수분 함량 (%) 값으로 표시할 수 있습니다.

 

앞서 오늘 소개드린 SEN0114 센서가 그나마 사용할만 했던 것도 이런 calibration 과정에서 판별됩니다. 아래 온라인에서 저렴하게 구입할 수 있는 센서 3가지를 비교 평가한 자료입니다. 

 

아두이노(Arduino) 토양수분센서(soil moisture sensor)의 calibration 비교 실험

x축이 출력 값 voltage (mV)이고, y축이 그에 상응하는 용적수분함량(VWC, Volumetric Water Content) (%)입니다. 오른쪽 두 센서보다 왼쪽의 SEN0114 그래프가 추세선이 제일 깔끔하고 (R squ 값 참조) 실제 측정 값을 모두 포함하고 있기 때문에 센서 선택의 근거가 될 수 있습니다. 용적수분함량은 (물의 양/토양의 부피) * 100 (%)으로 간단하게 이해하셔도 됩니다.

 

5. 아두이노 시리얼 모니터(Serial Monitor)에 토양수분센서 측정값 출력

 

센서를 아두이노와 연결하고 스케치를 통해 프로그램을 업로드한 후 시리얼 모니터를 출력하면 아래와 같이 "Moisture Sensor Value: " 뒤에 mV 단위로 voltage 값이 나올 겁니다.

 

아두이노(Arduino)에서 토양수분센서(soil moisture sensor)의 출력 값 

센서가 아무것도 센싱하지 않을 때는 0으로 값을 읽다가 물에 넣으면 값이 상승합니다. SEN0114 센서 사양에 따르면 

 

Value range: 0 ~ 300: dry soil

                 300 ~ 700: humid soil

                 700 ~ 950: in water

이라고 제시되어 있습니다. 음... 위에 calibration 자료와 비슷한가요? ^^

 

참고로 토양의 성질이나 공극으로 인해 물을 함유할 수 있는 정도가 달라지기 때문에 토양별로 calibration equation이 조금씩 달라진다고 알고 계시면 유용합니다.

 

 


여기까지 아두이노(Arduino)에서 사용하는 토양수분센서(soil moisture sensor)에 대해 알아보고 사용방법을 설명하였습니다. 다음 포스팅에는 토양수분센서를 사용하여 토양의 물이 일정 범위 아래로 떨어지면 (식물에 공급할 물이 부족하면) 물을 자동으로 주는 작은 프로젝트를 진행해 보도록 하겠습니다.

 

오늘도 긴글 읽어주셔서 감사합니다. 궁금한 점은 댓글로 언제든지 남겨주세요~ 감사합니다 ^^

 

▼ 토양수분센서 구매하시려면 아래 링크!! ▼

 

아두이노 토양수분센서/Arduino Soil moisture sensor/지습센서/아날로그 센서 : 스토어플랜트

[스토어플랜트] 안녕하세요 스토어플랜트입니다.

smartstore.naver.com

 

 

반응형

+ Recent posts