【 아두이노Proj#3】 아두이노 스마트 화분 만들기 Ver1
아두이노를 이용해 스마트 화분을 만들어 보자~!
우선 핵심기능으로 토양습도센서로 흙의 습도 값을 측정하여 일정 수치이하로 떨어지면(수분이 마르면) 워터펌프를 작동하여 물을 공급해주는 기능을 구현해 보려 한다.
아울러 !
[ FND를 부착하여 수분정도를 알려주는 스마트화분 버전(Ver. 2)은 ☜ 여기를 참고 ]
[ FND와 LCD를 함께 부착하여 수분정도를 알려주는 스마트화분 버전(Ver. 3)은 ☜ 여기를 참고 ]
▶ 선수 학습 :
1. [아두이노 센서#34] 토양 센서( YL-38) Sensor 다루기 ☜ (클릭)
▶ 토양습도센서 (YL-38 , YL-69) 세부 스팩
※ 시중에 YL-38, YL-69 두 종류가 있다, 기능상의 차이는 없으며 핀배열이 조금 상이할 뿐이다. 여기서는 YL-38을 가지고 제작 하려고 한다.
▶ 워터 펌프 스팩
※ 위에 사용된 호수는 외경이 6 mm 이고 내경이 4mm 입니다. 그리고 펌프 출수구에 호수를 끼울때 호수를 출수구 바같으로 감싸듯 끼우게 되는데요, 펌프출수구의 외경이 7.4mm 됩니다. 이렇게 어느정도 역으로 크기 차이가 나야 호수가 수압에 의해 쉽게 빠지지 않습니다. 다만, 지금 정도의 차이에서, 끼워보니 상당히 빡빡했어요. 이럴때는 호수 내부에 물기를 살짝 묻혀서 끼워보면 조금 쉽게 끼워집니다. ^^
▶ 실습 목표 :
1. [ 토양습도 센서에 대해 이해 할 수 있다. ]
2. [ 워터펌프에 대해 이해 할 수 있다. ]
3. [ 토양 센서 값에 따라 펌프를 작동시켜 물공급 조절을 할 수 있다.]
▶ 실습 회로도면 :
(이미지 클릭하면 확대 가능)
※ 위 회로에 대해 모터 작동이 원활 하지 않을 수 있고, 장시간 사용시 아두이노 보드에 무리가 갈 수 있어 아래 처럼 NPN타입의 TR과 저항을 추가하여 보강하였다. 가급적이면 아래 회로를 참조하여 구성해주면 좋을 것이다.
(TR은 NPN 타입의 ' 2SC 9013 '을 사용하였으나, TR 타입이 NPN타입 이면 어떤 것이든 동일하게 사용 가능하다. )
- C9011과 C9012, C9013은 모두 핀 배열이 동일함( E B C)
- C1815는 핀배열이 E C B 임
[ 위 회로에서 주의 하셔야 할 것은 아두이노 회로에서 주로 사용되는 TR의 경우(2SA, 2SC타입) NPN형 타입은 PNP형 타입과 마찬가지로 핀의 순서가 있으니 주의 하셔야 합니다.
우선, 도면에 사용된 NPN형 TR은 2SC9011 이며, 라벨이 적인 면의 왼쪽을 기준으로 핀 이름이
1. 2SC9011 : - E B C - 순서로 되어 있고,
2. 2SC1815 : - E C B - 순서로 되어 있으니 반드시 확인 후 연결하세요.
또한, 이외의 TR을 사용할 경우 미니 테스터기 혹은 인터넷 검색으로 핀 순서를 확인하여 도면대로 연결하시면 문제 없이 동작 할 거예요. ]
[ 추가로 위 회로의 모터 연결 방식은 장시간 사용하기에는 좀 무리가 따르며, 전원을 별도로 넣어 줄 수 있는 릴레이 모듈이나, L298 모터 드라이버 모듈을 연결해서 사용하시는 걸 권장합니다. 조만간 보강된 회로의 업로드 버전도 올려 볼게요. ^^; ]
▶ 실습 절차 :
1. 부품을 준비하여 위와 같은 회로를 구성한다.
2. 물펌프는 물통 속에 담겨진다. 따라서 물펌프의 전선이 빠져나오는 부분은 필요한 경우 글루건 등으로 보강처리 할 필요가 있다.
3. 우선 본 실험처럼 작은 물통을 준비하고, 간이 화분을 준비해서 실험을 해 본 후 실제 화분에 설치해보면 좋을 것이다. 또한 필요한 경우 센서를 두 개 이상 설치할 수도 있고, 두개의 화분을 하나의 보드로 연결하여 관리 해 볼 수 있을 것이다.
4. 다음 버전에서는 수분 값 등을 FND 혹은 LED, LCD 등을 부착하여 표시해보려고 한다.
▶ 프로그램 코드 및 설명 :
/* 스마트 화분 만들기 [코딩] */
#define A0Pin 0
int sensorVal = 0;
int pump = 13;
void setup ( ) {
Serial.begin(9600);
pinMode(pump, OUTPUT);
}
void loop ( ) {
sensorVal = analogRead(A0Pin); //토양센서 센서 값 읽어 저장
delay(1000);
Serial.print("Asensor = ");
Serial.println(sensorVal); // 0(습함) ~ 1023(건조)값 출력
// 습도 값에 따라 출력 처리 다르게 해줌
if ( sensorVal <= 900) {
Serial.println(" Very Wet ! ");
digitalWrite(pump, LOW);
}
else if ( sensorVal > 900){
Serial.println(" Very Dry ! ");
digitalWrite(pump, HIGH);
Serial.println(" Pump On for 1 Second!");
delay(1000);
}
delay(3000); // 정보수집 시간(간격) 설정
}
▶ 실행영상 :
(전체화면 보기로 보세요)
(아래는 유튜브로 시청하기)
▶ 아두이노 파일다운 :
(다운받아서 압축을 풀어 사용하세요)
'아두이노 > 4. 프로젝트 LAB' 카테고리의 다른 글
【 아두이노Proj#6】 조이스틱 미니카 만들기~! (0) | 2019.05.09 |
---|---|
【 아두이노Proj#5】 아두이노 스마트 화분 만들기 Ver 3 with LCD (85) | 2019.04.05 |
【 아두이노Proj#4】 아두이노 스마트 화분 만들기 Ver2 with FND (7) | 2019.04.03 |
【 아두이노 Proj#2】 라인트레이서 자동차 만들기 ( L298N모듈) (27) | 2019.01.28 |
【 아두이노 Proj#1】 초음파센서로 자동차 만들기( L298N모듈) (2) | 2019.01.23 |