반응형

얼마뒤면 베트남으로 가족 여행을 떠날 예정입니다. 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

반응형
반응형

아도이노는 DIY 인 들에게 없어서는 안될 단물 같은 장치이다. 물론 요즘은 프로그래밍 교육용으로도 사용되고 미디어 아티스트들에게도 자주 사용되는 놀라운 장치이다. 간단한 코딩 만으로 하드웨어 지식이 거의 없더라고 다양한 레퍼런스를 이용하여 손쉽게 무엇인가 로지컬하게 동작하는 장치를 만들어 낼 수 있기 때문이다.

 

이번에 도전하게 된 것은 Arduino Nano 를 이용하여 RC 카 구동을 위한 무선 송수신기를 제작하는 것이다.

 

보통은 RC 카를 구성하는 송신기 (트랜스미터, Transmitter) 와 수신기 (리시버, receiver) 를 세트로 구입하여 모터와 ESC 에 연결하여 사용하는 것이 일반적이지만 직접 만들어 보는 것도 재미있을 것 같아 도전을 하게 되었다. RC 카의 차체와 모터 등은 기성품을 이용하여 가지고 놀기에도 좋아야 하며 송수신기 모듈만 아두이노를 이용하여 만드는 것을 목표로 하고 있다.

 

먼저 첫번째 시간으로 수신기 만들어 보자

 

완성된 2.4Ghz 무선 RC 수신기의 모습 (아두이노 나노 + NRF24L01)

 

필요한 부품

 

  • Arduino nano (atmega328p, 16MHz)
  • NRF24L01 SMD 버전
  • 10 uF 전해콘덴서
  • 점퍼용 선들
  • 모터 / 서보 / ESC 연결용 2핀, 3핀 소켓 (만능기판 장착용, 2.54mm)
  • 만능기판(양면) 8 * 24
  • SMD to DIP Adapter socket (1.27mm to 2.54mm, SOP14 규격) : 10개에 1 달러 미만 

아두이노 나노에 대한 설명은 넣어두고 무선 연동을 위한 NRF24L01 보드가 필요하다.

해당 보드는 알리익스프레스에서 개당 1000원 미만으로 구입할 수 있다. 보통 무선 연동은 트랜스미터와 리시버가 각각 역할을 분담하는 형태로 모듈이 만들어져 있는데 이 제품은 하나의 제품이 송신과 수신을 할수 있는 제품으로 일명 트랜시버 라고 부르기도 한다. 2.4GHz 대역을 사용하여 신호의 정확도가 좋다고 한다.

이번 DIY 를 위하여 SMD 타입을 구입하였는데 일반 보드는 4x2 형태의 핀 배열을 가지고 있어 브래드 보드를 통한 테스트가 쉽지 않은 반면 SMD 타입은 1열로 핀이 배열되어 있어 약간의 꼼수를 부리면 사용이 간편한 장점이 있다.

 

NRF24L01 보드에 꼭 필요한 부품이 있으니 바로 10uF 전해 콘덴서

 

NRF24L01 보드에 꼭 필요한 부품이 있으니 바로 10uF 전해 콘덴서이다. 처음 이 프로젝트를 도전하였을때 상당히 많은 실패를 경험했는데 결과적으로는 이 전해콘덴서를 연결하지 않은 부분과 정확한 3.3V 를 인가하지 않은데서 기인했다고 생각된다. 지금은 단 한번의 실패도 없이 잘되는 것을 생각하면 정말 어의가 없지만 거의 2개월 정도를 이 문제 해결을위해 소모하였다. 이 글을 보는 당신도 도전할 생각이 있다면 반드시 10uF전해 콘덴서를 미리 준비해놓자. 47uf 도 100uf 도 1uf 도 아닌 반드시 10 uf 로 준비하자. 알리에서 사면 몇푼 하지도 않을 뿐더러 무료배송인 판매자도 많다. 전해 콘데서는 극성이 있는 제품이다. 띠 무늬가 있는 부분이 - 극 (GND) 다른 부분이 아두이노의 3.3V 또는 NRF24L01 의 +부분에 연결이 되어 있어야 한다.

 

10 uf 전해 콘젠서를 3.3v 와 GND 에 연결한 모습

사진에 제일 위층에 얹어진 검정색 PCB 보드가 NRF24L01 보드이다. 뒤쪽에 초록색으로 보여지는 보드는 작업의 편의 성을 위하여 붙인 것으로 원래는 14 pin Attiny84 smd 타입을 일반 만능기판에 연결할 수 있도록 사용하는 아답터 보드인데 이것을 반을 자르면 7핀을 이용하는 NRF24L01 보드의 확장용 보드로 사용이 가능할 것 같아 납땜하여 붙여서 사용해보았고 아주 만족스러운 호환성을 보여주었다.

 

아래와 같은 형태의 보드인데 반을 자른 후 NRF24L01 칩을 납땜하여 붙여주면 1열로 된 핀 배열 구성이 가능하게 되어 브래드 보드에서 바로 테스트가 가능하다. 참고로 NRF4L01 은 총 8개의 연결핀이 있는데 위에서 봤을때 가장 오른쪽 핀은 사용할 필요가 없는 핀 이므로 아래 아답터 보드를 반으로 자른후 좌측부터 7개의 단자와 납땜을해서 붙이면 정확하게 딱 맞는 결과물을 얻을 수 있다.

앞뒤가 각각 규격으로 제작이 됨. NRF24L01 은 좌측(앞) 규격에 부착

 

 

NRF 24L01 SMD 타입과 DIP 타입 이미지 추가

 

NRF24L01 을 보드에 장착한 이미지 추가

 

 

아래 그림은 NRF24L01+ SMD 의 핀 배열임. 참고하시길

각각의 핀은 아두이노 나노와 아래와 같이 연결이 된다.

NRF24L01 + ////		Arduino Nano

3.3V 		-> 		3.3V
GND 		-> 		GND
CE 		-> 		8
CSN 		-> 		7
SCK 		-> 		13
MOSI 		-> 		11
MISO 		-> 		12

중요한 것은 위에도 언급한 것과 같이 우측의 아두이노 3.3V 와 GND 사이에 10uf 전해 캐패시터를 연결해야 한다는 점 이다.

 

필자는 어려 차례 시도해 보았기 때문에 한번에 잘 되었지만 본 블로그를 보고 처음 따라 하는 분은 브래드 보드에 우선 테스트 해보시기를 권장한다.

 

추가로 방향 조정용 서보모터와 모터 속도 컨트롤용, 그리고 2단 변속기를 사용할 것이므로 변속기용 서보는 아래와 같이 각각 핀을 지정하였다.

servoPin = 9; 			//steering servo
speedServoPin = 10; 	// gear high / low
accelloPin = 6; 		// main motor (ESC)

3 pin 소켓을 3개 연결해야 하는데. 위와 같이 핀에 연결해주면 된다.

소켓의 3 pin 은 각각 신호(흰색 또는 노랑) , V+(빨강) , GND(검정 또는 갈색) 순으로 연결 해주면 된다. 여기서 신호에 해당되는 부분이 위에 정의한 핀과 연결이 되는 것임. 대부분의 3핀 선은 위와 같은 색상으로 이루어져 있으니 참고할 것.

 

 

납땜이 끝난 보드 아래쪽을 보면 아래와 같이 엉망 징창임.

 

지저분 하지만 어쩔수 없다. 똥 손의 한계 입니다.

 

코드는 나중에 트렌스미터 부분 설명이 완료 되면 한번에 올려보겠다.

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

 

이만.

 

 

 

 

반응형

+ Recent posts