프로젝트 08: 🌱 식물 집사: 토양 수분 자동 알리미

화분의 갈증을 아두이노가 읽어내어 물 줄 시간을 정확히 알려줍니다.

1. 프로젝트 원리: 흙의 저항 측정

흙 속에 물이 많으면 전기가 잘 통하고(저항이 낮음), 물이 적으면 전기가 잘 통하지 않습니다(저항이 높음). **토양 수분 센서**는 두 개의 전극을 흙에 꽂아 그 사이의 전기 흐름을 측정합니다.

아두이노는 이 아날로그 값을 읽어 다음과 같이 판단합니다.

Moisture
▲ 작동 원리: 흙 속의 수분함량에 따라 변하는 전기 신호를 감지합니다.

📦 준비물

아두이노 우노 x 1 토양 수분 센서 x 1 LED (빨강, 초록) 각 1개 피에조 부저 x 1 220Ω 저항 x 2 화분 (실제 식물)

2. 상세 회로 결선도 (Wiring Diagram)

센서의 신호선은 아날로그 A0에 연결합니다. 알림용 LED는 9번, 10번 핀에, 경보용 부저는 8번 핀에 연결합니다.

Arduino Uno A0 | D8 | D9 | D10 | 5V | GND Soil Sensor
▲ 식물 알리미 결선도: 센서와 출력 부품들을 올바른 핀에 연결하세요.

3. 코드 작성하기

공기 중(매우 마름)일 때와 물속(매우 젖음)일 때의 값을 먼저 측정하여 기준값을 정하는 것이 중요합니다.

int sensorPin = A0;
int buzzer = 8;
int redLed = 9;
int greenLed = 10;

void setup() {
    pinMode(redLed, OUTPUT);
    pinMode(greenLed, OUTPUT);
    pinMode(buzzer, OUTPUT);
    Serial.begin(9600);
}

void loop() {
    int moisture = analogRead(sensorPin);
    Serial.print("토양 수분 수치: ");
    Serial.println(moisture);

    // 1. 아주 마른 상태 (기준: 800 이상)
    if (moisture > 800) {
        digitalWrite(redLed, HIGH);
        digitalWrite(greenLed, LOW);
        tone(buzzer, 1000, 200); // 짧은 경고음
    } 
    // 2. 적당한 상태 (기준: 400 ~ 800)
    else if (moisture <= 800 && moisture > 400) {
        digitalWrite(redLed, LOW);
        digitalWrite(greenLed, HIGH);
        noTone(buzzer);
    }
    // 3. 물이 충분한 상태 (기준: 400 미만)
    else {
        digitalWrite(redLed, LOW);
        digitalWrite(greenLed, HIGH); // 혹은 파란 LED가 있다면 파란색
        noTone(buzzer);
    }

    delay(1000); // 1초마다 확인
}

4. 프로젝트 핵심 팁

💡 센서의 부식 방지하기

저렴한 토양 수분 센서는 전극이 노출되어 있어 흙 속에서 계속 전기가 흐르면 빠르게 부식됩니다. 수명을 늘리려면 loop() 내에서 센서의 전원을 필요할 때만 켜도록(디지털 핀 제어) 코드를 수정해 보세요!

5. 🎯 심화 챌린지: 워터 펌프 연결 (자동 급수)

알려주는 것을 넘어, 물이 부족할 때 아두이노가 직접 물을 주게 만들 수 있습니다! 7장에서 배운 트랜지스터 제어 방식을 이용해 작은 워터 펌프를 작동시켜 보세요. 진정한 '자동 식물 케어 시스템'이 완성됩니다.