ESP8266 - 토양 수분 센서 | ESP8266 - Soil Moisture Sensor

이 튜토리얼은 ESP8266과 함께 습도 센서를 사용하는 방법을 안내합니다. 구체적으로, 다음을 살펴보겠습니다:

준비물

1×ESP8266 NodeMCU Amazon
1×Micro USB Cable Amazon
1×Capacitive Soil Moisture Sensor Amazon
1×Jumper Wires Amazon
1×(Optional) 5V Power Adapter for ESP8266 Amazon
1×(Optional) ESP8266 Screw Terminal Adapter Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

Buy Note: Many soil moisture sensors available in the market are unreliable, regardless of their version. We strongly recommend buying the sensor from the DIYables brand using the link provided above. We tested it, and it worked reliably.

토양 수분 센서에 관하여

capacitive moisture sensor vs resistive moisture sensor

습도 센서에는 두 가지 유형이 있습니다: 저항식 습도 센서와 정전 용량식 습도 센서.

두 센서 모두 토양 수분 정보를 제공합니다. 그러나 그들의 작동 방식은 다릅니다. 다음과 같은 이유로 용량성 수분 센서 사용을 권장합니다:

  • 전기 저항형 토양 수분 센서는 그 프로브 사이에 전기 전류가 흐르면서 시간이 지남에 따라 부식되기 쉽습니다. 이는 전기화학적 부식으로 이어집니다.
  • 반면에, 전기 용량형 토양 수분 센서는 전기 저항형 토양 수분 센서보다 훨씬 더디게 부식합니다. 그 이유는 그것의 전극들이 노출되어 있지 않고 비교적으로 부식에 저항력이 있기 때문입니다.

이것은 부식으로 인해 손상된 저항성 토양 습도 센서의 일러스트레이션입니다.

resistive soil moisture sensor corroded

이 튜토리얼의 나머지 부분은 축전식 토양 습도 센서를 사용할 것입니다.

정전 용량식 토양 습도 센서 핀배열

전기용량식 토양 수분 센서에는 세 개의 핀이 있습니다:

  • GND 핀: 이것은 GND(0V)에 연결되어야 합니다.
  • VCC 핀: 이것은 VCC(5V 또는 3.3V)에 연결되어야 합니다.
  • AOUT 핀: 이것은 토양 수분 레벨에 비례하는 전압을 생성하는 아날로그 신호 출력 핀입니다. 이것은 ESP8266의 아날로그 입력 핀에 연결되어야 합니다.
capacitive soil moisture sensor pinout

작동 원리

토양에 존재하는 물의 양은 AOUT 핀의 전압 레벨과 반비례합니다.

선연결

ESP8266 NodeMCU soil moisture sensor wiring diagram

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

ESP8266의 핀 배치ESP8266 및 다른 구성 요소에 전원을 공급하는 방법에 대해 더 많이 보십시오.

ESP8266 코드로 토양 수분 센서에서 값을 읽는 방법

/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-soil-moisture-sensor */ #define AOUT_PIN A0 // ESP8266 핀 ADC0이 수분 센서의 AOUT 핀에 연결됩니다 void setup() { Serial.begin(9600); } void loop() { int value = analogRead(AOUT_PIN); // 센서에서 아날로그 값을 읽습니다 Serial.print("Moisture: "); Serial.println(value); delay(500); }

사용 방법

Arduino IDE에서 ESP8266을 시작하려면 다음 단계를 따르세요:

  • ESP8266을 Arduino IDE에서 설정하는 방법에 대한 자습서가 처음이라면 ESP8266 소프트웨어 설치 방법 자습서를 확인하세요.
  • 다이어그램에 표시된 대로 구성요소들을 연결하세요.
  • USB 케이블을 사용하여 ESP8266 보드를 컴퓨터에 연결하세요.
  • 컴퓨터에서 Arduino IDE를 엽니다.
  • 올바른 ESP8266 보드를 선택하세요 (예: NodeMCU 1.0 (ESP-12E Module)), 그리고 해당 COM 포트를 선택하세요.
  • 코드를 복사하고 Arduino IDE로 엽니다.
  • Arduino IDE에서 Upload 버튼을 클릭하여 코드를 ESP8266에 컴파일하고 업로드합니다.
  • 센서를 흙에 묻은 다음, 물을 흙에 붓거나 천천히 소금물이 담긴 컵에 담그세요.
  • 직렬 모니터에서 결과를 확인하세요. 아래와 같습니다:
COM6
Send
Moisture: 581 Moisture: 581 Moisture: 575 Moisture: 566 Moisture: 556 Moisture: 547 Moisture: 539 Moisture: 530 Moisture: 521 Moisture: 513 Moisture: 506 Moisture: 500 Moisture: 495 Moisture: 492 Moisture: 490 Moisture: 489 Moisture: 488
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ NOTE THAT:

  • 순수한 물을 시험에 사용하지 마세요. 순수한 물은 전기를 전도하지 않아 센서의 읽기 값을 변경하지 않기 때문입니다.
  • 센서의 읽기 값이 0이 될 일은 절대 없습니다. 값이 500에서 600 사이인 것이 보통이지만, 센서가 얼마나 깊이 설치되었는지, 토양이나 물의 종류, 전원 공급 장치의 전압과 같은 요소에 따라 달라질 수 있습니다.
  • 회로 부분(센서의 상단에 위치)을 토양이나 물에 매장하지 마세요. 그러면 센서가 손상될 수 있습니다.

용량성 토양 수분 센서의 보정

습도 센서에서 얻은 값은 절대값이 아닙니다. 이는 토양의 구성과 수분 함량에 기반합니다. 젖음과 건조함 사이의 경계를 정확하게 결정하기 위해, 우리는 보정을 수행해야 합니다.

보정 지침:

  • ESP8266에서 코드를 실행하세요.
  • 토양에 수분 센서를 배치하세요.
  • 서서히 토양에 물을 추가하세요.
  • 시리얼 모니터를 모니터링하세요.
  • 토양이 건조 상태에서 젖은 상태로 변할 때의 값을 기록하세요. 이를 임계값이라고 합니다.

ESP8266 코드는 토양이 축축한지 건조한지를 판단합니다.

교정이 완료되면, 아래 코드에 기록한 THRESHOLD 값을 업데이트하세요. 이 코드는 토양이 젖었는지 건조한지를 결정하는 데 사용될 것입니다.

/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-soil-moisture-sensor */ #define AOUT_PIN A0 // ESP8266 핀 ADC0이 수분 센서의 AOUT 핀에 연결됩니다 #define THRESHOLD 530 // 여기에서 임계값을 변경하세요 void setup() { Serial.begin(9600); } void loop() { int value = analogRead(AOUT_PIN); // 센서에서 아날로그 값을 읽습니다 if (value > THRESHOLD) Serial.print("The soil is DRY ("); else Serial.print("The soil is WET ("); Serial.print(value); Serial.println(")"); delay(500); }

시리얼 모니터에서 본 출력.

COM6
Send
The soil is DRY (581) The soil is DRY (575) The soil is DRY (566) The soil is DRY (547) The soil is DRY (539) The soil is WET (521) The soil is WET (513) The soil is WET (492) The soil is WET (488)
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

동영상

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.

함수 참조

관련 튜토리얼

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!