반응형

아두이노는 정말 놀라운 하드웨어가 아닐수 없죠. 우리가 생각하는 이런건 자동으로 해주는거 없나? 이런게 자동으로 되면 좋을텐데... 이런걸 왜 자동으로 안하는거야?? 같은 대부분의 자동화 장치, 기계장치를 원하면 직접 만드는것을 가능하게 끔 만드는 것을 아두이노는 가능하게 합니다.

사실 아주 많은 부분에서 자동화 또는 그런 류의 장치들은 간단한 로직만을 필요로 합니다. 실제 상용화된 제품에서는 보다 많은 기능과 안정성, 수익성, 또 제품화 되기 위한 여러가지 복합적인 문제들을 안고 있기 때문에 제품화 되지 않는 것일 뿐이죠.

오늘 포스트에서 올릴 내용은 바로 "아두이노를 이용한 수경재배" 에 대한 내용입니다.

회사에서 DIY 동호회를 운영중인데 이번 프로젝트가 바로 수경재배가 되시겠습니다.

수경재배를 하기 위하여 알아야 할 것들이 많이 있는데 사실 원천적으로는 복잡하지 않습니다. 식물이 생장에 필요로 하는 물과 양분을 공급해주는것. 바로 이게 핵심인데 그 과정에서 발생되는 인간의 개입 정도를 좀 줄여보는게 이번 프로젝트의 핵심이라 할 수 있겠습니다.

양액은 인터넷에서 저렴하게 구입이 가능하므로 일정 농도로 희석된 양액을 통에 담아두고 수경 재배용 통에 항상 부족하지 않게 공급하는 장치를 만들어 볼 계획입니다.

실제 수경재배를 위하여는 양액의 Ph 농도와 전해질의 양의 측정이 매우 중요하지만 이번 프로젝트를 위하여 엄청난 수확량을 기대한다거나 하는 것이 아니기 때문에 우리는 자동으로 부족한 물 (양액)을 보충해 주어 인간의 개입을 최소화 하는데에 의의를 두기로 하였습니다.

뎃글, 공감 은 블로그 작성자에게 큰 힘이 된답니다. 
도움이 되었다 생각되시면 클릭!!  부탁드려요~

 

 

먼저 필요한 구조를 고민해 보았습니다.

- 식물이 자라기 위한 pot 이 필요할 것이고 pot을 잠기에하여 양액을 공급할 수 있는 양액통이 필요할 것입니다. 그리고 보조 양액통을 만들어 주 양액통에 양액이 부족해지면 보조 양액통으로 부터 양액을 보충해주는 역할을 하도록 만들어 볼 계획입니다. 그리고 양액통 내 용존 산소량을 확보하기 위하여 일정 수준의 공기 주입을 지속적으로 해주는 장치 정도를 만들어 볼 계획입니다.

필요한 재료는 아래와 같은데 이전에 소개했던 자동으로 식물에 물을 공급하는 장치와 거의 유사합니다.

  • 아두이노 나노
  • DRV8883 듀얼 모터 드라이버
  • 미니 DC 펌프 x 2 (양액 공급용, 공기 펌프용)
  • 수위 측정용 스위치 (물주기에 사용했던 센서는 사용불가... 나중에 설명하겠습니다)
    • 일반적인 리미트 스위치
  • 어항용 공돌 (다이소 500원 짜리)
  • 어항용 호스, 링거 호스
  • 양액통 2개,
  • 싱크대 수채구멍용 거름망

 

전체적으로 보면 아래와 같은 구조입니다. 배선은 제외한 그림이기는 한데요.

두개의 DC 모터를 컨트롤 하기 위한 모터 드라이버와 아두이노 나노, 중간에 수량 체크를 위한 스위치 (탁구공의 부력을 이용합니다) 그리고 각각의 식물의 재배를 위한 pot (하수구 거름망), 두개의 양액 통이죠.

 

 

스위치에 의하여 상단 박스의 수량이 부족하면 계속해서 우측 펌프가 물을 끌어 올릴 겁니다. 물이 차오르고 필요한 높이가 되면 탁구공을 매단 수량 체크용 스위치가 신호를 보낼것이고 해당 신호를 받아 필요한 양이 보충되게 되면  양액 공급펌프는 멈출것입니다.

좌측의 에어 공급 펌프는 계속해서 상단 양액내 공기를 뿜어 넣음으로써 산소량을 높이는 역할을 하게 됩니다.

반응형

이론적으로는 간단하죠?

 

네 실제로 간단 합니다. 아래와 같은 형태로 제작이 되었다고 보시면 됩니다. 

중간에 CDS 로 보이는 부품은 네..  CDS 가 맞습니다. CDS가 필요한 이유는 뒤에 설명을 드리도록 하겠습니다.

수경재배 양액 / 산소 공급장치 구조도

 

 

프로토 타입으로 제작한 이미지를 보시죠

탁구공을 접착하여 제작한 부력스위치

탁구공의 부력이 스위치를 작동시키이에 약간 부족함이 있어 날개 길이를 조금 연장하였습니다. 

 

탁구공을 이용하여 제작한 부력스위치를 장착한모습
부력스위치와 워터펌프 테스트 중인 모습

 

 

양액내 산소공급을 위한 공돌, 다이소에서 500원에 구입하였다.

 

 

씨앗으로 부터 시작된 모종. 동그라미 친 두개의 모종이 재배용으로 결정 되었다.

 

통에 양액을 채우고 모종도 pot 에 옮겨 담아 준뒤 시스템을 가동하였습니다.

물과 공기가 예상데로 잘 공급이 되는 것을 확인하였으나 모터 구동시 소음이 좀 있는 편이고 에어의 경우 하루종일 동작하게 되어 있어 모터에 열이 좀 나는 것이 문제가 될 것 같았습니다. 워터 쪽 모터도 물을 끌어올려야하는 상황이다보니 부하가 걸려 모터에서 열이 많이 발생되었습니다. 

기본적인 수경재배 시스템이 완성된 모습

나중에 브래드보드 대신 만능기판에 보드를 옮길 계획인데 해당 작업이 완료되면 별도의 포스팅을 진행할 예정입니다.

 

그리고 위에 잠깐 소음에 대하여 언급을 했었는데요. 아무래도 사무실에서 키우는 것이다 보니 소음으로 인한 민원이 바로 올라오더군요. 시끄럽다고 꺼달라고 하더라구요. - -;;

 

그래서 긴급 조치로 CDS 를 하나 달아서 사무실 조명이 모두 꺼지면 동작하도록 간단한 기능을 추가하였습니다. 이제 아무도 없는 밤에 열심히 산소를 공급해주게 될겁니다.

빨간 동그라미 부분이 CDS 되시겠다.

 

앞으로 진행할 내용은 아래와 같습니다.

  • 만능기판에 기자재 납땜으로 부착
  • 현재 상태는 보기에 좋지 않으므로 케이스를 제작
  • 식물이 자라는것을 타임랩스로 보여주기 위한 카메라 장착 (안쓰는 블랙박스 활용)

준비가 되면 포스팅을 하도록 하겠습니다.

 

아두이노 소스코드는 아래를 참고해 주세요.


const int waterLevelCheckerSW = 2;
const int airPumpSpeedControlPin = A3;
const int motor_waterpump = 9; // pin 9 (D9) is waterpump action
const int motor_airpump = 10; // pin 10 (D10) is waterpump action
const int lightSensor_pin = A4;

int airPumpSpeed = 0;
int buttonState = 0;
int count = 0;
int lightTotal = 0;

void setup() {

  pinMode(13, OUTPUT); // status LED
  pinMode(motor_waterpump, OUTPUT);  // water pump pin
  pinMode(motor_airpump, OUTPUT); // air pump pin
  pinMode(waterLevelCheckerSW, INPUT_PULLUP); // water level checker switch pin
  
  Serial.begin(9600);
}


void loop() {

  count++;
  
  //air pump speed control
  airPumpSpeed = analogRead(airPumpSpeedControlPin); // 
  int pumpSpeed = map(airPumpSpeed, 0, 1023, 0, 128);
  
  
  int lightValue = analogRead(lightSensor_pin);
  
  lightTotal += lightValue;
  
  if (count == 10)
  {
    // the air pump run when dark
    if (lightTotal/10 < 1 )
    {
      analogWrite(motor_airpump, pumpSpeed);
    }else{      
      analogWrite(motor_airpump, 0);
    }
    lightTotal = 0;
    count = 0;
  }
  
  
  Serial.print(airPumpSpeed);
  Serial.print("/");
  Serial.print(pumpSpeed);
  Serial.print("///");
  Serial.println(lightValue);
    
  // water pump control
  buttonState = digitalRead(waterLevelCheckerSW);
  if (buttonState == HIGH ) 
  { 
    digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW       
    // stop water pumping
    digitalWrite(motor_waterpump, LOW);

  } 
  else 
  {    
    digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)    
    // start water pumping when dark
    if (lightValue < 2 )
    {
      analogWrite(motor_waterpump, 128);           
    }
  }
  
  delay(10);              // wait for a second

}

 

 

 

끝으로 수위 측정 센서관련하여 

참고로 물주기에 사용하였던 수분 측정 센서(알리익스프레스에서 구입)의 경우 양극단에서 흐르는 전류에 의해 물의 전기분해가 이루어 진 탓인지 센서 표면에 수많은 기포가 발생되었습니다.

센서 측정부에 발생된 기포. 전기분해가 이루어 졌다면 산소와 수소일 것으로 판단 된다.

결국 센서 표면중 한쪽면이 심하게 부식이 되며 양액을 변질 시키는 것을 보고 사용할 수 없겠다 판단 하였습니다.

하루정도 시간이 흐르자 양액의 색깔이 심하게 변하고 센서 표면도 변질 되었다.

결국 수위 측정은 위 사진에서 보여드린 탁구공을 이용하는 방법을 사용해야 했습니다.

토양의 수분 측정시에도 유사한 현상이 있어 결국 센서를 빼버렸었는데요. 해당 센서를 사용한다면 측정 주기를 매우 길게 하고 측정 시간을 짧게 여러번 하여 결과값을 사용하는 방식을 이용하는 것이 좋을 것으로 판단됩니다. 해당 센서를 이용하여 토양의 수분을 측정하려는 목적이시라면 연속해서 측정을 진행하지 마시고 일정 주기를 두고 실제 측정 시간은 짧게 측정을 하는 것이 센서의 수명에 도움이 될것으로 생각됩니다. 참고하세요~

 

뎃글, 공감 은 블로그 작성자에게 큰 힘이 된답니다. 
도움이 되었다 생각되시면 클릭!!  부탁드려요~

 

 

참고로 이전에 사용하였던 해당 센서를 이용한 토양 수분 측정을 통한 자동으로 물주는 시스템 관련 포스트

https://diy-dev-design.tistory.com/16

 

아두이노를 이용한 간단한 화분 자동 물주기 시스템

얼마뒤면 베트남으로 가족 여행을 떠날 예정입니다. 7박이나 하고 올 예정이므로 집을 비우기 전 준비해야 할 것들이 많습니다. 이것저것 여행준비를 하던 찰나 베란다에 내어 둔 화분이 걱정이 되었습니다. 출발..

diy-dev-design.tistory.com

2020/06/29 - [DIY/Arduino] - C# 에서 아두이노로 시리얼 통신 하기

 

C# 에서 아두이노로 시리얼 통신 하기

카테고리를 c# 으로 해야 할지 Arduino 로 해야할지 조금 고민이 되는 포스트 입니다. 음.... arduino 로 하는게 좋겠네요. 따지고 보면 C# 으로 만든 어플이 중요한게 아니라 아두에노에서 시리얼 통신

diy-dev-design.tistory.com

 

반응형

+ Recent posts