인투피온 강좌/아두이노 팁(Tip)

아두이노 매뉴얼 [화분 물공급 키트] - 3

인투피온 2022. 8. 3. 10:00

(이미지 클릭시 구매할 수 있는 링크로 이동됩니다)

 

 

오늘은 화분 물공급 키트에 대해 알아보는

세번째 시간입니다.

 

토양습도센서(FC-28) 를 이용한 물공급 키트입니다.

 

 

화분 물공급키트 강의는 1편과 2편이 있으며

아직 보지 않았을 경우 아래 링크를 통해 먼저 읽어주시기 바랍니다.

 

▼  ▼  ▼

 

[화분 물공급 키트 1편]

https://intopionshop.tistory.com/509

 

 

[화분 물공급 키트 2편]

https://intopionshop.tistory.com/510

 

 

 

 

Chapter 4. LCD 출력하기

 

 

챕터 1과 2, 3 에서 확인한 내용들을 이제 LCD로 출력해보겠습니다.

 

LCD 의 첫줄에는 챕터 1 에서 얻은 토양습도 값

둘째줄에는 챕터 2에서 얻은 온습도 값을 출력 해보도록 하겠습니다.

 

 

 

토양습도, 온습도, LCD 회로도

 

 

 

 

 

토양습도, 온습도, LCD 동작 소스코드

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "DHT.h" // DHT 라이브러리 호출
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
 
LiquidCrystal_I2C lcd(0x27162);
 
#define DHTPIN 13     // 온습도 센서가 13번에 연결
#define DHTTYPE DHT11   // DHT11 온습도 센서 사용
DHT dht(DHTPIN, DHTTYPE); // DHT 설정
 
int SoilA = A0 ;
 
void setup() {
  Serial.begin(9600);
 
  lcd.init();
  lcd.backlight();
}
 
void loop() {
  lcd.init();
  
  int Value = analogRead(SoilA);
  int h = dht.readHumidity(); // 습도값을 h에 저장
  int t = dht.readTemperature(); // 온도값을 t에 저장
  
  lcd.setCursor(0,0); //첫째줄에 토양습도값 출력
  lcd.print("  Value : ");
  lcd.print(Value);
  lcd.setCursor(0,1); //둘재쭐에 온습도값 출력
  lcd.print("    ");
  lcd.print(t); lcd.print("C  ");
  lcd.print(h); lcd.print("%  ");
  
  Serial.println(Value);
  
  delay(5000);
}
 
 

 

 

아두이노 우노와 토양습도, 온습도 센서값을 LCD 로 출력하기

 

 

 

 

Chapter 5. 워터펌프

 

 

 

 

 

저희가 사용할 워터펌프입니다.

 

아래쪽에서 빨아 들여 옆으로 나온 곳으로 물이 나오게 됩니다.

나오는 곳에 호스를 연결해 물을 주도록 하겠습니다.

 

워터펌프를 사용하기 위해서는

모터 드라이브를 사용해주셔야 합니다.

 

 

L9110 모터 드라이브 앞면
L9110 모터 드라이브 뒷면

 

 

워터펌프, 모터 드라이브 연결

 

워터펌프와 L9110 모터 드라이브

 

 

먼저 모터의 선을 모터 드라이브 출력 부분에 연결해주세요,

우측 사진처럼 L9110 모듈은 핀 4개만 사용했습니다.

 

위 그림과 아래 표를 참고해 연결해주세요.

 

 

L9110 모터드라이브 아두이노 우노 외부전원
GND GND ( - )
VCC VIN ( + )
A-1A D10  
A-1B D09  

 

 

 

 

워터펌프, 모터 드라이브 테스트 소스코드

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int IN1 = 9;
int IN2 = 10;
 
void setup() {
  Serial.begin(9600);
  Serial.println("MOTOR TEST");
 
  pinMode(IN1, OUTPUT);              // 9번핀을 출력모드로 설정합니다.
  pinMode(IN2, OUTPUT);              // 10번핀을 출력모드로 설정합니다.
}
 
void loop() {
 
  Serial.println("MOTOR ON");
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  delay(1000);
 
  Serial.println("MOTOR OFF");
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  delay(1000);
    
}
 
 

 

소스를 업로드 하시면 1초 간격으로 ON , OFF 를 반복합니다.

 

 

 

 

 

Chapter 6. 완성

 

 

이제 앞의 챕터들을 종합하여 동작 해보도록 하겠습니다.

 

 

이제 워터펌프 동작 조건을 정해야합니다.

토양습도 센서값 기준치 이상이 되면 물을 줘 값을 낮추게 될텐데요.

 

먼저 평소 물을 주기 전의 값을 기준으로 정하면 됩니다.

 

예시는 850 으로 적용해보도록 하겠습니다.

 

 

회로도

 

 

moisture_serial_fritzing.fzz
0.08MB

 

 

이렇게 회로도로 보면 어려우실 수 도 있어요.

챕터1~5까지의 사진을 참고해서 차근차근 연결하시면 쉽게 연결할 수 있습니다.

 

 

 

완성 소스코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include "DHT.h" // DHT 라이브러리 호출
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
 
LiquidCrystal_I2C lcd(0x27162);
 
#define DHTPIN 13     // 온습도 센서가 13번에 연결
#define DHTTYPE DHT11   // DHT11 온습도 센서 사용
DHT dht(DHTPIN, DHTTYPE); // DHT 설정
 
int SoilA = A0 ;
int IN1 = 10;
int IN2 = 9;
 
void setup() {
  Serial.begin(9600);
 
  pinMode(IN1, OUTPUT);              // 9번핀을 출력모드로 설정합니다.
  pinMode(IN2, OUTPUT);              // 10번핀을 출력모드로 설정합니다.
  
  lcd.init();
  lcd.backlight();
}
 
void loop() {
  lcd.init();
  
  int Value = analogRead(SoilA);
  int h = dht.readHumidity(); // 습도값을 h에 저장
  int t = dht.readTemperature(); // 온도값을 t에 저장
  
  lcd.setCursor(0,0); // LCD 첫째줄에 토양습도값 출력
  lcd.print("  Value : ");
  lcd.print(Value);
  lcd.setCursor(0,1); // LCD 둘째줄에 온습도값 출력
  lcd.print("    ");
  lcd.print(t); lcd.print("C  ");
  lcd.print(h); lcd.print("%  ");
  
  Serial.println(Value);
  
 
  if( Value > 650){ // 토양습도값이 650보다 크면 아래 소스 실행
    lcd.setCursor(0,0); // LCD 첫째줄에 Motor ON 출력
    lcd.print("    Motor ON   "); 
    delay(1000);
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, LOW);
    delay(1500); // 1.5초동안 워터펌프 동작
    lcd.setCursor(0,0); // lcd 첫째줄에 Motor off 출력
    lcd.print("    Motor OFF   ");
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, LOW);
    delay(1000);  
  }
    else// 토양습도값이 650보다 작을때 모터 off
      digitalWrite(IN1, LOW);
      digitalWrite(IN2, LOW);    
    }
  
  delay(1000);
}
 
 

 

 

 

 

 

 

동작 영상

 

 

아두이노 우노 토양습도센서 온습도센서 워터펌프 모터드라이브로 만든 화분 물공급키트!!

 

 

이렇게 기준치 이상이 되면 물을 주어 식물이 잘 자랄수 있게끔 할 수 있어요

온습도도 같이 확인하여 이 식물이 잘 자랄수 있는 조건을 맞춰보세요

 

 


전자부품 전문 쇼핑몰 인투피온입니다.
필요한 자재에 관한 문의는 홈페이지를 통한 견적 신청, 혹은 전화나 메일로 주시면 빠른 회신을 드릴 수 있도록 하겠습니다.

▶ 홈페이지: http://intopion.com/
▶ 전화: 02-2615-7278
▶ FAX : 02-6124-4242
▶ 메일: intopion@hanmail.net