반응형

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

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

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

회사에서 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

 

반응형
반응형

얼마뒤면 베트남으로 가족 여행을 떠날 예정입니다. 7박이나 하고 올 예정이므로 집을 비우기 전 준비해야 할 것들이 많습니다. 이것저것 여행준비를 하던 찰나 베란다에 내어 둔 화분이 걱정이 되었습니다. 출발하기 전에 물을 듬뿍 주고 간들 요즘처럼 더운 날씨에 화분이 마르는건 금방이지요. 아마 이틀이면 마르지 않을까 싶습니다. 7일뒤에 돌아왔을때 딸내미가 애지중지 물을 주던 나팔꽃이 매말라 버릴까 걱정이 되었습니다. 그래서 부랴부랴 있는 부품을 찾아 모아 간단하게 자동으로 물을 주는 시스템을 만들어 보았습니다.

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

 

 

제 작업실에서 주워 모은 부품은 아래와 같습니다.

 

사용된 부품 리스트

토양 수분 측정 센서 

초소형 DC 모터 펌프 (3V)

아두이노 나노

drv8833 DC 모터 드라이버

링거 줄 

T 형 분배 소켓

소형 방열판 (전자제품 분해하면서 떼어냈던 것)

대형 식초 병 (코스트코에서 샀던 식초, 4L )

 

화분 물주기 시스템을 만들기 위하여 필요한 부품들

 

집에 이런것들이 왜 있나 싶지만 저처럼 DIY 를 좋아하는 사람이라면 알리익스프레스 눈팅하면서 하나둘 사모은 부품들이 있게 마련입니다. 토양 수분 측정 센서는 수위 센서라고도 하는데 언젠가 한번은 사용하겠지 싶어 사두었고 DC 모터 펌프는 물고기 수조에 공기 공급을 위하여 구입했던 부품이었습니다. DRV8833 모터 드라이버가 좀 특이한데 RC 카 만들어 보겠다면서 구입했던 보드였습니다. 

 

원리는 간단합니다.

 

토양 수분 센서를 통해 토양의 습도를 측정한뒤 일정 값 미만으로 내려가게 되면 아두이노는 DC 모터드라이버로 모터를 동작시키도록 신호를 보냅니다. 모터가 동작되면 펌프는 물을 끌어올려 화분에 뿌리게 됩니다. 화분의 흙이 일정 수준 이상 젖게 되면 센서 값에 의해 모터가 멈추게 되는 방식 입니다. 

 

이렇게 해두면 며칠을 비워도 문제가 없을 것입니다. 물론 물통이 4L 이므로 그 물이 다 소진될때 까지 비우면 안되겠지만요.

 

배선은 아래와 같이 하면 됩니다.

 

토양 수분 센서

  • GND : GND
  • VCC : VCC (5V)
  • AO : 아두이노 A0 핀
  • DO : 연결 안함

 

DRV8833

  • GND : GND
  • VCC : VCC (5V)
  • IN1 : 아두이노 9번 핀 (PWM 이 출력되지요)
  • IN2 : GND (코드에서는 10번에 연결하는것이 맞지만 최종 적으로 한쪽 방향으로만 돌릴꺼라서 그냥 GND 에 연결)
  • OUT1 : motor +
  • OUT2 : motor -

그림은 나중에 다시 올리도록 하겠습니다.

 

 

 

먼저 간단하게 아두이노 코드를 작성해 보았습니다. 별도의 라이브러리 없이 간단히 작성이 가능합니다.

 

int soilPin = A0;


void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);

  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
    int value = analogRead(soilPin);

    if (value > 800)
    {
      analogWrite(9, 128);
      digitalWrite(10, LOW);
    }else{
      digitalWrite(9, LOW);
      digitalWrite(10, LOW);
    
    }
    
    Serial.print("read sensor value : ");
    Serial.println(value);

    delay(600000); // 10분에 한번 체크하는 것으로 수정하였습니다.
}

토양 센서로 부터 받는 신호는 A0 번 핀을 통해 전달받으며 코드상에서는 analogRead 라는 명령어로 입력 받습니다. 테스트를 해보니 해당 센서는 흙속의 수분에 의해 전기 전도가 이루어 지고 이 정도를 파악하는 센서인데요. 공기중에 노출시킨상태, 즉 토양이 완전히 마른상태에서는 1023 의 값을 출력하고요, 물에 담갔을 때, 즉 완전히 젖은 상태에서는 200 미만의 값이 출력이 되는 것을 확인하였습니다. (아마 물 속의 전해질의 농도에 따라서 최소 값은 차이가 있을 것 같았습니다)

 

저는 완전히 마를때 까지 둘 것이 아니었으므로 800 이라는 값보다 커지게 되면 모터를 동작하도록 한 것이죠.

 

DRV8833 으로는 PWM 신호를 보내서 모터의 속도를 제어할 수 있습니다. 두개의 모터를 각각 제어할 수 있는데요 IN1, IN2 를 통해 하나의 모터를, IN3 IN4 를 통해 다른 하나의 모터를 제어할 수 있습니다. 4개의 모터에 대하여 정방향, 역방향으로 각각 속도를 제어하기 위하여는 4개의 PWM 이 필요한데 만약 저처럼 단방향으로만 제어한다면 모터당 1개의 PWM 만 있으면됩니다.

 

IN1 : PWM / IN2 : GND --> 정방향 회전 (속도는 PWM에 따라)

IN1 : GND / IN2 : PWM --> 역방향 회전 (속도는 PWM에 따라)

IN1 : GND / IN2 : GND --> 정지

 

이런식으로 제어를 하시면 되겠습니다. 

 

위에 코드를 보시면 하나의 핀을 PWM 출력도 하고 GND 로 하기도 하는 코드가 있습니다.

 

저는 5V 를 전원으로 사용하고 모터의 정격 전압이 3V 이므로 PWM 은 안전빵으로 128을 출력하였습니다. 실제 모터에 몇 V 가 인가되는지는 확인하지는 않았으나 별다른 무리 없이 잘 동작 되었습니다.

참고로 DRV8833 으로 입력하는 전원은 모터가 워낙 작고 저전력을 사용하므로 그냥 아두이노의 5V 출력을 이용했습니다. (참고로 모터 구동은 왠만하면 별도의 전원을 사용하는 것이 좋고 노이즈 차단을 해주는 것도 좋습니다)

 

 

그럼 설치가 완료된 사진을 보시겠습니다

 

물주기 시스템 장착된 작은 화분, 나팔꽃과 수박, 참외가 자라고 있다.

 

알리익스프레스에서 2000 원 정도 주고 구입한 작은 펌프. N20 모터가 달려있다.

동작해보니 모터에서 열이 조금 나는 것이 느껴져 방열판을 하나 달아 주었습니다. 버리는 전자제품을 뜯어 보면 저런 방열판이 흔히 발견되므로 보는 족족 적출하여 보관하는 습관을 가집시다.

 

토양 수분 센서를 화분에 꼽아 주었다.
좌측이 아두이노 나노, 가운데가 DRV8833, 우측은 토양 수분 센서와 연결된 보드
전체 모습이다. 좀 지저분 하지만 1주일 뒤에 철거 할 예정이므로 적당히...

이렇게 해서 설치가 모두 완료 되었습니다. 내일 모레 출발 전에 물은 다시 한통 가득 채워놓을 예정입니다.

설치된 모습이 좀 지저분 하기는 하지만 1주일 뒤 귀국하면 다시 치울 예정이므로 적당히 저렇게 두기로 합니다. 물도 물이지만 18650 배터리 2개를 직렬로 연결하여 두었는데 과연 1주일을 버틸지는 의문입니다. 내일이라도 아답터를 연결해 놓는것이 좋을까요... 

 

암튼 아주 간단하게 자동으로 화분이 마르지 않도록 물을 주는 시스템을 만들어 보았습니다.

 

사실 시골에서 밭농사라도 한다면 밭의 수분 측정 및 자동으로 물 주는 시스템은 요긴하게 사용될수 있는 시스템입니다. 작은 태양광 전지, NRF24L01 같은 무선 송수신 장치, 스프링클러 등을 이용하면 시골의 밭에서 자동으로 경작지에 물을 줄 수 있는 시스템을 손쉽게 만들 수 있을 것 입니다. 간단한 노력으로 쓸모있는 스마트 팜을 만들어 가실 수 있는 것이죠.

 

이상 자동으로 화분에 물주기 장치 만들기였습니다.

 

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

 

 

궁금하신 것은 뎃글로~ 재밌으셨거나 도움이 되셨으면 공감 부탁드립니다.

 

이 시스템은 이후 수경재배용 장치를 만드는데 거의 동일하게 사용되었습니다.

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

 

[DIY] 아두이노를 이용한 수경재배 시스템

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

diy-dev-design.tistory.com

 

20191206 내용 추가

저와 동일한 센서 또는 유사한 센서를 이용하시는 분들께 안내 말씀을 드립니다.

해당 센서를 이용하였을 경우 센서의 표면의 부식이 상당히 빠르게 진행이 됩니다. 진작에 올렸어야 하는데 깜박하고 있었네요. 

아마 한쪽 핀에서 다른쪽 핀으로 전기 신호를 보내서 도착하는 전류량을 측정하는 듯한데요. 이런 과정에서 금속 표면이 부식이 되는 문제가 있었습니다. 제 생각으로는 센서로 보내는 신호를 상시 측정 하지 마시고 한시간에 한번 또는 하루에 한번 정도씩 측정 주기를 늘려주어 절대적인 전류 측정 시간을 줄여주는 것이 좋을 것 같습니다.

토양의 수분이 매순간 측정해야 할 만큼 빠르게 변하는 요소는 아니기에 측정의 인터벌을 길게 잡아주면 센서의 부식을 막고 좀더 오래 사용이 가능할 것으로 판단 됩니다.

 

 

 

자동으로 텃밭(화단) 물주기 장치

여러분들 집에는 작은 텃밭 하나씩 있으신가요? 저는 없습니다만 처갓집에는 작은 비닐 하우스와 텃밭이 있습니다. 요즘처럼 날씨가 가물거나 하우스 안에 텃밭을 가지고 계신 분들은 매일매일

diy-dev-design.tistory.com

 

 

[DIY] micro:bit - 병아리 부화기 만들어 보기 (초딩도 가능)

딸내미 : "아빠! 할머니 집에서 가져오는 계란은 유정란이야?" 나 : "그럼~. 암탉도 있고 수탉도 있으니 유정란이겠지?" 딸내미 : "그럼 내가 저거 품으면 병아리가 나오는 거야?" 나 : "흠... 아니....

diy-dev-design.tistory.com

 

 

0.96 inch OLED 디스플레이 구동하기

가끔 아두이노로 무엇인가를 만들어 보려고 하다보면 디스플레이가 있으면 하는 생각이 들때가 있습니다. 아두이노는 작은 컴퓨터이기는 하지만 모름지기 컴퓨터라 한다면 입력장치 - 중앙처��

diy-dev-design.tistory.com

 

 

미니 테슬라코일 만들기 - 알리 DIY KIT

어렸을적 위대한 발명가, 과학자 하면 단연 손꼽는 일인자가 있었는데 누군가 물어본다면 100 이면 100 다 토마스 에디슨을 떠올릴 것입니다.. 그런데 커보니 에디슨은 발명가나 과학자라기보다��

diy-dev-design.tistory.com

 

 

Arduino(아두이노) 무작정 시작하기

아두이노, Arduino 여기저기서 많이 들었을 겁니다. 이걸 해야 된다는 말이 귀에 못이 박히도록 이야기 합니다. 대충 뭔지는 알겠는데 개발자도 아닌 내가 과연 이걸로 뭘 할 수 있을까 싶기도 하��

diy-dev-design.tistory.com

 

 

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

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

diy-dev-design.tistory.com

2019/11/10 - [DIY/Arduino] - [DIY] 아두이노로 만능 (통합) 리모콘 만들기 1/3

2019/11/10 - [DIY/Arduino] - [DIY] 아두이노로 통합(만능) 리모콘 만들기 2/3

2020/06/17 - [DIY/Arduino] - [DIY] 아두이노로 통합(만능) 리모콘 만들기 3/3

반응형

+ Recent posts