아두이노

아두이노를 이용한 자동화된 식물 관리 시스템

게임교수 2025. 3. 31. 16:38
반응형

이 프로젝트에서는 아두이노와 여러 센서를 사용하여 자동화된 식물 관리 시스템을 구현합니다. 온도, 습도, 토양 습도 등을 모니터링하고, 식물이 물이 필요할 때 자동으로 급수 시스템을 작동시킵니다. 이 시스템은 실내 식물에 적합하며, 스마트 홈 시스템의 일환으로도 활용할 수 있습니다.


아두이노 기반 자동 식물 급수 시스템 예시 이미지

 

필요한 재료

  1. 아두이노 보드 (Arduino Uno 또는 기타 호환 보드)
  2. DHT11 또는 DHT22 온도 및 습도 센서
  3. 토양 습도 센서
  4. 서보 모터 (자동 급수 시스템)
  5. 물 펌프 (급수 시스템)
  6. 릴레이 모듈 (펌프 제어용)
  7. 브레드보드, 점퍼 와이어, 저항 (회로 구성용)
  8. 전원 공급 장치 (5V 또는 12V, 시스템에 따라 달라질 수 있음)

설계 단계

1. 센서 연결

  • DHT11 또는 DHT22: 온도와 습도를 측정하여 실내 환경을 모니터링합니다.
  • 토양 습도 센서: 토양의 습도를 측정하여 식물이 물이 필요한지 여부를 판단합니다.

회로 연결

  • DHT11 / DHT22 센서: VCC 핀 → 아두이노 5V, GND 핀 → 아두이노 GND, DATA 핀 → 디지털 2번 핀
  • 토양 습도 센서: VCC 핀 → 아두이노 5V, GND 핀 → 아두이노 GND, DATA 핀 → 아날로그 A0 핀
  • 서보 모터: 서보 모터의 제어 핀을 아두이노의 디지털 9번 핀에 연결
  • 물 펌프와 릴레이: 펌프의 전원과 릴레이를 통해 물 펌프를 제어

2. 아두이노 코드 작성

식물 관리 시스템은 다음과 같은 작업을 수행해야 합니다:

  • 온도, 습도, 토양 습도 값 읽기
  • 토양 습도가 일정 수준 이하일 때 자동으로 급수 시스템 작동
  • LCD 디스플레이를 통해 상태 표시

기본 코드

#include <DHT.h>
#include <Servo.h>

// DHT 센서 설정 (온습도)
#define DHTPIN 2
#define DHTTYPE DHT11 // 또는 DHT22 사용 가능
DHT dht(DHTPIN, DHTTYPE);

// 토양 습도 센서 설정
#define MOISTURE_SENSOR_PIN A0

// 서보 모터 설정 (급수 시스템 제어)
Servo waterPump;
#define WATER_PUMP_PIN 9

void setup() {
  // 시리얼 모니터 초기화
  Serial.begin(9600);
  Serial.println("🌱 Plant Care System Initialized");

  // DHT 센서 초기화
  dht.begin();

  // 서보 모터 연결
  waterPump.attach(WATER_PUMP_PIN);
}

void loop() {
  // 온도 및 습도 측정
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();

  // 토양 습도 측정 (0~1023)
  int soilMoisture = analogRead(MOISTURE_SENSOR_PIN);

  // 측정값 시리얼 출력
  Serial.print("🌡 Temperature: ");
  Serial.print(temperature);
  Serial.print(" C, 💧 Humidity: ");
  Serial.print(humidity);
  Serial.print(" %, 🌿 Soil Moisture: ");
  Serial.println(soilMoisture);

  // 토양이 건조할 경우 자동 급수
  if (soilMoisture < 500) {  // 기준 값은 환경에 따라 조정
    Serial.println("⚠️ Soil is dry. Watering...");
    waterPump.write(90);      // 급수 시작 (서보 90도 회전)
    delay(5000);              // 5초간 급수
    waterPump.write(0);       // 급수 중단 (서보 초기화)
  }

  // 10초마다 측정 반복
  delay(10000);
}
 

이 코드에서는 DHT11 센서를 통해 온도와 습도를 읽고, 토양 습도 센서를 통해 토양의 수분 상태를 모니터링합니다. 토양 습도가 설정된 임계값 이하로 떨어지면 자동으로 서보 모터를 작동시켜 물을 공급합니다.

3. 급수 시스템

서보 모터를 사용하여 물 펌프를 작동시키는데, 이 서보 모터는 물을 공급할 수 있도록 설정됩니다. 이때 서보 모터의 각도를 조정하여 물의 흐름을 제어합니다. 서보 모터가 90도일 때 물이 흐르고, 0도로 돌아가면 물이 멈추는 방식입니다.

4. LCD 화면 추가 (옵션)

식물의 상태를 실시간으로 모니터링하려면 16x2 LCD 디스플레이를 추가하여 온도, 습도, 토양 습도 상태를 표시할 수 있습니다.

LCD 코드 예시

#include <LiquidCrystal_I2C.h>  // I2C LCD 라이브러리
#include <DHT.h>

// 센서 설정
#define DHTPIN 2
#define DHTTYPE DHT11
#define MOISTURE_SENSOR_PIN A0

DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);  // LCD 주소: 0x27, 크기: 16x2

void setup() {
  dht.begin();         // DHT 센서 시작
  lcd.begin();         // LCD 초기화
  lcd.backlight();     // 백라이트 켜기
}

void loop() {
  // 센서 데이터 읽기
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();
  int soilMoisture = analogRead(MOISTURE_SENSOR_PIN);

  // LCD에 정보 출력
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Temp: ");
  lcd.print(temperature);
  lcd.print(" C");

  lcd.setCursor(0, 1);
  lcd.print("Humi: ");
  lcd.print(humidity);
  lcd.print(" %");

  delay(1000);  // 1초마다 갱신
}

5. 최종 프로젝트

이 시스템을 통해 식물의 상태를 자동으로 관리할 수 있습니다. 온도와 습도는 식물에게 적절한 환경을 제공하고, 토양 습도 센서를 통해 물을 자동으로 공급하여 식물이 필요한 물을 지속적으로 제공합니다.


다음 단계

  • 스마트폰 앱: ESP8266을 사용해 웹 서버를 만들고, 스마트폰에서 실시간 데이터를 확인할 수 있도록 할 수 있습니다.
  • 배터리 전원: 이 시스템은 실내 식물 관리뿐만 아니라 배터리로 운영할 수 있게 만들 수 있습니다.
  • 광량 센서: 식물의 빛을 측정하여 자동으로 조명을 켜는 기능을 추가할 수 있습니다.
  • 알림 기능: 물 주기나 온도, 습도가 너무 높거나 낮을 경우 스마트폰으로 알림을 받을 수 있도록 할 수 있습니다.

이 프로젝트를 통해 자동화된 식물 관리 시스템을 만들면서 IoT 및 자동화 기술을 경험할 수 있습니다! 🌿💧

반응형