아두이노 - 토양 수분 센서 | Arduino - Soil Moisture Sensor
이 튜토리얼에서는 아두이노와 함께 습도 센서를 사용하는 방법을 배워볼 것입니다. 구체적으로, 우리는 다음을 배울 것입니다:
- 저항식 습도 센서 대 용량식 습도 센서
- Arduino를 사용하여 용량식 습도 센서에서 값을 읽는 방법
- 용량식 습도 센서를 보정하는 방법
- 토양이 젖었는지 마른지 판단하는 방법
준비물
1 | × | Arduino Uno | Amazon | |
1 | × | USB 2.0 cable type A/B | 쿠팡 | Amazon | |
1 | × | Capacitive Soil Moisture Sensor | Amazon | |
1 | × | Jumper Wires | Amazon | |
1 | × | (Optional) 9V Power Adapter for Arduino | Amazon | |
1 | × | (Recommended) Screw Terminal Block Shield for Arduino Uno | 쿠팡 | Amazon | |
1 | × | (Recommended) Breadboard Shield For Arduino Uno | 쿠팡 | Amazon | |
1 | × | (Recommended) Enclosure For Arduino Uno | Amazon |
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.
토양 수분 센서에 관하여
습도 센서에는 두 가지 종류가 있습니다:
- Resistive moisture sensor: 저항식 습도 센서
- Capacitive moisture sensor: 정전용량식 습도 센서
두 센서 모두 토양 수분 정보를 제공합니다. 하지만, 그들의 작동 원리는 다릅니다. 다음과 같은 이유로 용량성 수분 센서 사용을 강력히 권장합니다:
- 저항성 토양 수분 센서는 시간이 지남에 따라 부식됩니다. 그 이유는 전류가 그 프로브 사이로 흐르기 때문입니다. 이것은 전기화학적 부식을 일으킵니다.
- 용량성 토양 수분 센서는 시간이 지나도 부식되지 않습니다. 그 이유는 그것의 전극들이 노출된 전극이 아니고 비교적으로 부식에 강하기 때문입니다.
아래 이미지는 시간이 지남에 따라 부식된 저항성 토양 습도 센서를 보여줍니다.
이 튜토리얼의 나눈 부분은 용량성 토양 수분 센서를 사용할 것입니다.
유전 용량식 토양 수분 센서 핀배열
용량성 토양 수분 센서에는 세 개의 핀이 있습니다:
- GND 핀: GND(0V)에 연결해야 합니다.
- VCC 핀: VCC(5V 또는 3.3V)에 연결해야 합니다.
- AOUT 핀: 아날로그 신호 출력 핀은 토양의 수분 레벨과 반비례하여 전압을 출력합니다. 이 핀을 아두이노의 아날로그 입력 핀에 연결하세요.
작동 원리
토양 속의 물이 많을수록 AOUT 핀의 전압은 낮아집니다.
선연결
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
아두이노 코드
/*
* 이 Arduino 코드는 newbiely.kr 에서 개발되었습니다
* 이 Arduino 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다.
* 상세한 지침 및 연결도에 대해서는 다음을 방문하세요:
* https://newbiely.kr/tutorials/arduino/arduino-soil-moisture-sensor
*/
#define AOUT_PIN A0 // AOUT 핀에 연결된 Arduino 핀
void setup() {
Serial.begin(9600);
}
void loop() {
int value = analogRead(AOUT_PIN); // 센서에서 아날로그 값을 읽습니다
Serial.print("Moisture: ");
Serial.println(value);
delay(500);
}
사용 방법
- 위의 코드를 복사해서 아두이노 IDE로 열어주세요.
- 아두이노 IDE에서 Upload 버튼을 클릭하여 아두이노에 코드를 업로드하세요.
- 센서를 흙에 묻은 다음, 흙에 물을 부으세요. 또는 천천히 소금물 한 컵에 잠기게 하세요.
- 시리얼 모니터에서 결과를 확인하세요. 결과는 아래와 같습니다:
COM6
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
Clear output
9600 baud
Newline
※ NOTE THAT:
- 순수한 물을 테스트에 사용하지 마십시오. 순수한 물은 전기를 전도하지 않으므로 센서의 측정값에 영향을 주지 않기 때문입니다.
- 센서의 측정값은 보통 0으로 떨어지지 않습니다. 일반적으로 500에서 600 사이의 범위에 머무르는 것이 정상이지만, 이는 센서가 설치된 깊이, 토양이나 물의 종류, 전원 공급 장치의 전압과 같은 요소에 따라 달라질 수 있습니다.
- 센서의 상단에 있는 회로 부분을 토양이나 물에 묻지 마십시오. 이는 센서에 손상을 줄 수 있습니다.
정전용량식 토양 수분 센서의 보정
습도 센서에서 측정된 값은 상대적입니다. 그것은 토양의 구성과 물에 따라 달라집니다. 실제로, 우리는 젖은 것과 건조한 것의 경계가 되는 임계값을 결정하기 위해 교정을 해야 합니다.
캘리브레이션하는 방법:
- 위의 코드를 아두이노에서 실행하세요.
- 습도 센서를 흙에 꽂으세요.
- 습도 센서를 흙에 꽂으세요.
- 천천히 흙에 물을 붓으세요.
- 시리얼 모니터를 관찰하세요.
- 흙의 습기가 건조에서 젖은 상태로 변하는 것을 느낄 때의 값을 적으세요. 이 값을 임계값이라고 합니다.
토양이 젖었는지 마른지 확인하십시오.
보정 후에는 아래 코드에 적어 놓은 THRESHOLD 값을 업데이트하십시오. 아래 코드는 토양이 젖었는지 건조한지를 결정합니다.
/*
* 이 Arduino 코드는 newbiely.kr 에서 개발되었습니다
* 이 Arduino 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다.
* 상세한 지침 및 연결도에 대해서는 다음을 방문하세요:
* https://newbiely.kr/tutorials/arduino/arduino-soil-moisture-sensor
*/
#define AOUT_PIN A0 // 수분 센서의 AOUT 핀에 연결하는 Arduino 핀
#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
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
Clear output
9600 baud
Newline
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.