본문 바로가기 주메뉴 바로가기

1. 개요


다양한 보드를 이용하여 간단히 스마트팜을 구현해 볼 수 있는 키트입니다.


제품 구매 링크 클릭!


 

2. 기본 형태 조립


2.1. 부품 리스트



 

2.2. 조립 방법


1. 기둥을 받침대에 조립합니다.


 

2. 투광판 ①,②를 기둥 사이에 조립하니다.



3. 일자 지지대①을 기둥에 먼저 끼우고 일자 지지대②를 조립합니다.



4. 일자 지지대② 홈에 삼각 투광판을 조립합니다.


5. 삼각 투광판에 삼각 지지대를 조립합니다.


6. 상단 고정 지지대를 삼각 지지대 위에 조립합니다.


7. 루프 투광판에 루프 지지대를 조립합니다.


8. 루프 투광판을 일자 지지대①의 걸쇠에 끼워주세요. 이때 지지대의 방향에 주의합니다.

  

루프 지지대의 위치를 조정하여 투광창을 열거나 닫을 수 있습니다. 


9. 배너에 스티커를 붙이고 상단 지지대에 꽂아 완성합니다.


3. 씨앗 심기


3.1. 씨앗의 성장


식물의 씨앗은 자라기 적합한 환경이 갖추어지면 싹을 틔웁니다.

이 현상을 '발아'라고 부릅니다. 씨앗에서 자라 나온 뿌리는 영양분을 흡수하고, 줄기와 잎으로 광합성을 합니다.

무럭무럭 자라난 식물은 꽃을 피우고 씨앗을 맺습니다.

씨앗들은 식물에서 떨어져 나와 다시 발아하여 새로운 생명을 움트게 합니다.

씨앗 뿐만 아니라 균류, 박테리아 등에서 포자가 나와 성장을 시작하는 것도 발아라고 부릅니다.


 


3.2. 씨앗의 발아에 필요한 3가지 조건


1. 수분
 씨앗은 충분한 수분을 흡수해야 발아할 수 있습니다. 물을 흡수한 씨앗의 세포들이 팽창하면 대사 활동이 시작됩니다. 어린 뿌리와 떡잎이 자라는 도중 수분 보충이 끊기면 씨앗의 발아 과정은 멈추게 되고, 수분 부족이 오래 지속된다면 식물이 말라 죽을 수도 있습니다.

2. 공기(산소)
 산소는 씨앗이 자라나 광합성을 하기 전까지 필요한 에너지를 낼 수 있도록 도와줍니다. 씨앗 세포의 물질 대사와 에너지 연소를 위해 산소는 필수적입니다.

3. 온도
 너무 춥거나 더우면 씨앗은 발아하지 못합니다. 식물의 종류에 따라 발아 온도가 다르므로 식물을 키우기 위해선 적정 온도를 꼭 확인해야 합니다. 온대성 식물은 12~15도, 아열대성, 열대성 식물을 25~30도가 적당합니다.

 

3.3. 식물을 키울 때 주의사항

1. 빛
 대부분의 식물의 묘목은 충분한 빛을 받는 환경에서 자라기에 적합하며 빛이 없으면 잎이 노랗게 변할 수 있습니다. 식물이 정상적으로 광합석을 할 수 있도록 적절한 빛을 제공해야 하며, 반대로 빛이 너무 강할 경우 제때 차광 처리를 해야 합니다. 너무 강한 빛이나 과하게 긴 시간 동안 빛에 노출될 경우 식물이 마르고 물이 부족하게 될 수 있습니다.

2. 수분
 물을 너무 자주 주면 식물이 정상적으로 자라지 못하고 잎이 노랗게 변하거나 뿌리가 썩을 수 있습니다. 반대로 너무 건조하면 식물이 말라버립니다. 각 식물의 습성에 맞게 적당한 수분을 제공해 주세요.

3. 비료
 식물의 성장에 영양소는 꼭 필요하지만 과하게 주게 되면 불필요한 영양분을 흡수하게 되어 되려 성장을 방해하고, 토양의 화학적 조성을 방해하여 식물이 필요로 하는 영양분을 흡수 못하게 합니다. 비료를 주기 원할 때는 양을 조절해 주세요.

4. 통풍
 광합성에 꼭 필요한 이산화탄소 공급을 위해 통풍과 환기를 주기적으로 해주세요. 충분한 통풍이 이뤄지지 않으면 식물에서 증발된 수분으로 주위 공기가 습해질 수 있습니다. 습한 공기에서는 해충과 질병이(공팡이, 진드기, 뿌리 파리 등) 빠르게 퍼질 수 있습니다.

5. 온도
 보통 식물 생육온도는 15~35도 사이입니다. 날씨가 따뜻한 봄, 여름, 가을은 괜찮지만 겨울에는 기온이 낮아 식물이 얼 수 있습니다. 베란다나 외부에 있는 식물을 집안으로 들이거나 천이나 스티로품 등으로 감싸 보온에 신경 써주세요.

3.4. 씨앗 심기

1. 원예 도구를 이용하여 화분에 흙을 적당량 담습니다. 보통 상토 1L 정도가 들어갑니다.

2. 원예 도구로 표면을 평평하게 다집니다.

3. 원하는 위치에 적아한 깊이와 크기로 씨앗을 심을 구멍을 만듭니다.


4. 파놓은 구멍에 씨앗을 심습니다.


5. 원예 도구를 이용하여 씨앗 위에 흙을 덮습니다.

6. 훍이 촉촉해지도록 물을 줍니다.

7. 스마트팜의 루프를 열고 화분을 넣습니다.


8. 통풍이 잘되고 온도와 햇빛이 적당한 곳에 놓습니다.

9. 새싹이 자라나기 전까지 흙이 마르지 않게 합니다.

※ 종자 재배
 면포, 티슈 등 물에 충분히 적신 후 씨앗을 올린 후 씨앗이 발아할 때까지 스포이드로 물을 떨어뜨려 일정한 습도를 유지합니다.

4. 헥사보드


4.1. 헥사보드 기본형


헥사보드를 연결한 DIY 선샤인 스마트팜입니다.



온도, 습도, 토양 수분량을 LCD에 표시하고, Blynk App을 이용하여 스마트기기로 실시간 모니터링 및 제어를 할 수 있습니다.

헥사보드와 연결할 WiFi가 필수입니다.



4.1.1. 기구부 제작


1. 16*2 LCD 조립


 ① LCD 고정판과 볼트, 너트를 준비하고 LCD 고정판에 볼트와 너트를 조립한다.



 ② LCD를 조립된 볼트에 끼우고 너트로 고정한다. 



 

2. 헥사보드 거치대 조립


 ① 보드 고정판 거치대와 보드 고정판을 긴 볼트와 너트로 조립한다.



② 헥사보드를 보드 고정판에 짧은 볼트로 조립한다.


3. 센서 모듈 조립


※ 커넥터는 방향이 있어 거꾸로 끼워지지 않습니다^^


 ① DIY 선샤인 스마트팜 키트에서 배너와 상단 고정 지지대를 분해한다.

 ② 온습도 센서를 케이블과 연결한 뒤 양면테이프를 붙이고 케이블은 구멍을 통해 밖으로 빼낸다. 



 ③ 토양수분 센서의 케이블로 구멍으로 통해 밖으로 빼낸다. 



 

 ④ RGB LED 바를 상단 고정 지지대의 아랫면에 부착한다.




 ⑤ LCD 모듈에 연결된 케이블을 상단 고정 지지대의 구멍으로 하나씩(2개가 동시에 들어가지 않습니다^^) 넣은 뒤 미리 조립해 둔 LCD에 케이블을 연결한다.



 ⑥ LCD를 상단 고정 지지대에 조립한 후, RGB LED바와 LCD와 연결된 케이블은 모두 구멍을 통해 밖으로 빼준다. 



 

 ⑦ 아래와 같이 헥사보드에 케이블을 연결한다.

     토양수분 센서 -> PIN1,  온습도센서 -> PIN2,  RGB LED바 -> PIN3, LCD -> I2C



 ⑧ 헥사보드를 스마프팜에 걸어줍니다.



4.1.2. 코드 작성 및 동작 확인


1. 헥사보드


 -. Blynk 연결/ Blynk 연결 시 미소 표시/ Blynk에서 스위치 (V0) 동작 시 RGB LED바 홀수는 빨강, 짝수는 파랑으로 켜고 끄기(식물 생장에 도움을 주는 파장)

 -. 아래 코드를 보면 V0 값은 '문자'로 전송이 됩니다. 그래서 문자열로 "1" 로 넣은 것을 확인합니다.

 -. 식물은 청색, 적색일 때 생장이 좋아서, 홀수는 빨강, 짝수는 파랑으로 LED가 켜지게 합니다. 계속 사용하기 편하게 함수로 만들었습니다. 밝기는 가장 밝은 100으로 합니다.




 

   -. 헥사보드의 A 버튼으로 RGB LED바 끄고 켜기. 다른 동작과 관계없이 진행될 수 있도록 이벤트 블록을 사용합니다.


 

 -. 헥사보드 5*5 디스플레이에 스마트팜 글자 표시하기. 저는 계속 smart Farm 이라고 표시되게 하였으나, 조건에 따라 다양한 문자나 모양을 표시할 수 있겠지요^^

 

 -. 온도, 습도, 토양수분 변수를 만들고, 각각의 값을 가져옵니다. 그리고, 토양수분 값은 물이나 물티슈 등을 이용하여 시리얼 모니터에서 최대, 최소 값을 확인한 후, 백분율로 바꾸어 줍니다.

   (수분이 많을 수록 숫자가 작습니다.)




 -. Blynk의 가상핀에 온도, 습도, 토양수분_백분율을 전송하기.




 -. 원하는 자리에 표시하도록 설정합니다. 그리고 값은 3초마다 측정하여 보내도록 합니다. 사실 교육을 위해 시간이 짧은 것이지 실제 스마트팜의 측정은 더 긴 시간 단위로 하겠지요^^
 그리고, Blynk 무료 버전의 경우 데이터를 너무 빠르게 자주 보내면 약간의 시간 뒤 연결이 끊어지는 경우가 많습니다. 





2. Blynk


 이전 헥사보드 코딩에서 우리가 기억해야되는 사항은 LED -> V0, 온도 -> V1, 습도 -> V2,  토양수분_백분율 -> V3 으로 각각의 핀에 대응시켰다는 겁니다. 


 ① 데이타스트림


   units은 필수 사항은 아니고, 우리는 모두 정수(Integer)로 하면 됩니다.


  -. LED



 -. 온도


 -. 습도


 -. 토양수분


 저장하면 모두 간편하게 확인할 수 있습니다.




 ② 웹 대시보드

    

  위젯은 자신이 넣고 싶은 모양으로 넣습니다. 일단 저는 아래와 같이 하였습니다.




  -. LED


  -. 온도 


  -. 습도


 -. 토양 수분



스마트기기의 Blynk App은 PC와 별도로 세팅이 됩니다. App은 아래처럼 해 보았습니다.


 ③ 자동화

자동화를 하기 위해서는 먼저 자동화 타입과 상태 변화, 동작 등의 설정이 필요합니다. 아래처럼 합니다.




 -. 물주기

 토양의 적정 수분량은 식물마다 다르지만 대부분 약 40% 보다 떨어지면 건조하다고 합니다. 그래서, 토양수분이 40% 이하로 떨어지면 App 알람으로 물을 달라고 알람을 보내는 것을 해봅니다.





헥사보드의 기본 프로그래밍을 학습하고자 하실 때는 아래 링크를 참조하세요.


헥사보드 Blynk 관련 이매뉴얼 보기 클릭!

4.2. 헥사보드 자동급수형


헥사보드에 모터 쉴드를 연결하여 사용합니다.




4.2.1. 기구부 제작



4.2.2. 코드 작성 및 동작확인


코드는 일반형에 자동 급수를 위한 워터펌프 동작 스위치만 추가하면 됩니다.


1. EasyBlocks




2. Blynk

수중 모터를 V4번에 대응시켜 데이타 스트림과 웹 대시보드를 만들어 줍니다.

 ① 데이타스트림



 ② 웹대시보드

 

5. 아두이노 우노


5.1. 기본형


온도, 습도, 토양 수분, 조도 센서 입력값을 LCD에 표시하고, 밝기에 따라 식물생장 LED를 점멸하는 스마트팜입니다.



5.1.1 기구부 제작

1. 16*2 LCD 조립


 ① LCD 고정판과 볼트, 너트를 준비하고 LCD 고정판에 볼트와 너트를 조립한다.



 ② LCD를 조립된 볼트에 끼우고 너트로 고정한 뒤, 케이블을 색상에 유의하여 아래와 같이 연결한다. 


 

2. 아두이노 우노 보드 거치대 조립


 ① 릴레이와 아두이노 우노 보드에 볼트와 너트를 조립한다.


 ② 보드 고정판에 릴레이와 아두이노 우노 보드를 끼운 뒤 너트로 고정한다.

 

③ 보드 고정판 거치대를 볼트 너트를 이용하여 조립한다. 이 때, 볼트의 방향에 주의한다. 그리고, 센서 쉴드 보드를 아두이노 보드에 조립한다. 



3. 센서 모듈 조립


※ 커넥터는 방향이 있어 거꾸로 끼워지지 않습니다. 아래 사진의 방향대로 연결하면 됩니다.


 ① DIY 선샤인 스마트팜 키트에서 배너와 상단 고정 지지대를 분해한다.


 ② 온습도 센서를 케이블과 연결한 뒤 양면테이프를 붙이고 케이블은 구멍을 통해 밖으로 빼낸다.


 

③ 토양수분 센서의 케이블로 구멍으로 통해 밖으로 빼낸다.



 

 ④ 식물생장 LED를 상단 고정 지지대의 아랫면에 부착한다.


 

⑤ LCD 모듈에 연결된 케이블을 상단 고정 지지대의 구멍으로 하나씩(2개가 동시에 들어가지 않습니다^^) 넣은 뒤 LCD 고정판을 조립한다.


 

⑥ 상단 고정 지지대를 스마트팜에 조립하고 식물생장 LED와 LCD의 케이블은 구멍을 통해 밖으로 빼준다.


 

⑦ 조도센서를 양면테이프로 보드 고정판 거치대에 부착한다. 케이블을 연결하여 보드 고정판 오른쪽 구멍으로 빼내어 정리한다.


 

⑧ 보드 고정판 왼쪽 구멍으로는 토양수분 센서와 식물생장 LED 케이블을, 오른쪽 구멍으로는 LCD와 온습도 센서의 케이블을 빼낸다. 



⑨ 보드 고정판 거치대를 스마트팜에 조립한다.


 ⑩ 아래와 같이 케이블을 연결한다.


5.1.2. 코드 작성 및 동작 확인


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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <DHT.h>                    // 온습도 센서 라이브러리
#include <Wire.h>                   // i2C 통신을 위한 라이브러리
#include <LiquidCrystal_I2C.h>      // LCD 1602 I2C용 라이브러리
LiquidCrystal_I2C lcd(0x27162); // 화면이 안나오면 0x27 <-> 0x3F 로 변경
 
#define SoilPin A0         // 토양수분센서 A0번 핀에 연결 
#define CdsPin A1          // 조도센서 A1번 핀에 연결
#define LedPin 3           // LED 릴레이 3번 핀에 연결
#define DHTPin 4           // 온습도 센서 4번 핀에 연결
#define DHTTYPE DHT11      // 온습도 센서타입  
DHT dht(DHTPin,DHTTYPE);   // 온습도 센서 함수 선언
 
void setup() {
  Serial.begin(9600);               //시리얼 통신 속도 9600bps으로 설정
  dht.begin();                      //온습도 센서 초기화 및 통신 시작
  pinMode(LedPin,OUTPUT);           //릴레이핀(3번핀) 출력으로 설정
  pinMode(PumpPin,OUTPUT);          //릴레이핀(3번핀) 출력으로 설정
  lcd.init();                       // LCD 초기화
}
 
void loop() {
  float tempValue = dht.readTemperature();   // 온도 측정값을 tempValue에 저장
  float humValue = dht.readHumidity();       // 습도 측정값을 humValue에 저장
  int CdsValue = analogRead(CdsPin);         // 조도 측정값을 CdsValue에 저장  
  int SoilValue = analogRead(SoilPin);       // 토양수분 측정값을 SoilValue에 저장
  int SoilValue_per = map(SoilValue, 1505001000);  
  /* 센서 값을 퍼센트로 변경, 0~1023의 값이나, 물티슈로 센서를 감싼 상태로 최소값과 그냥 대기중의 최대값을 확인 후 기재 
  map(SoilValue, 최소값_물티슈, 최대값_대기, 100, 0) */
 
// 어두우면 LED 조명 켜기
 
  if(CdsValue > 600){                        // 조도 측정값에 따른 릴레이핀 동작(생장LED 동작)
    digitalWrite(LedPin,HIGH);             // 밝을 때와 어두울 때의 값을 시리얼모니터로 확인 후 중간 값을 기준으로 사용 
  } 
  else if(CdsValue <= 600){
    digitalWrite(LedPin,LOW);
  }
 
 
// LCD에 온도, 습도, 토양수분 표시하기
 
  lcd.backlight();      // 백라이트 켜기
  lcd.setCursor(00);  // (X축 넘길 갯수, 라인번호) 첫 번째 칸, 첫 번째 줄에 표시
  lcd.print("T : ");
  lcd.print((int)tempValue);
  lcd.print("C");
  lcd.setCursor(80);  // (1칸 띄고, 첫번째 라인)
  lcd.print("H : ");
  lcd.print((int)humValue);
  lcd.print("%");
  lcd.setCursor(21);  // (2칸 띄고, 2번째 라인)
  lcd.print("Soil_M : ");
  lcd.print(SoilValue_per);
  lcd.setCursor(131);  // (13칸 띄고, 2번째 라인)
  lcd.print("%");
 
// 시리얼 모니터에 온도, 습도, 조도, 토양수분 아날로그 입력값, 토양수분 %로 변경값 표시하
 
  Serial.print("temp : "); 
  Serial.print((int)tempValue); 
  Serial.print(" °C, ");               
  Serial.print("humi : "); 
  Serial.print((int)humValue); 
  Serial.print(" %, ");
  Serial.print("Cds : ");
  Serial.print(CdsValue);
  Serial.print("   ");
  Serial.print("Soil : ");
  Serial.print(SoilValue);
  Serial.print("   ");
  Serial.print("Soil_M : "); 
  Serial.print((int)SoilValue_per); 
  Serial.println(" % ");                  //다음 측정값은 줄바꿈하여 시리얼모니터 표시
  delay(300);
}
 
cs


아두이노 설치, 기본 및 각각의 센서 사용법은 아두이노 페이지를 참조바랍니다.

 -> https://www.happycreative.co.kr/manual/detail.php?idx=29

5.2. 자동 급수형


스마트팜 LCD에 릴레이, 수중모터, 급수 장치 등을 추가하여 수중모터를 토양 수분량에 따라 자동 급수를 하는 스마트팜입니다.


아래 영상입니다.

테스트를 여러번 했더니 흙에 물이 가득이네요^^;;



5.2.1 기구부 제작

1. 16*2 LCD 조립
 ① LCD 고정판과 볼트, 너트를 준비하고 LCD 고정판에 볼트와 너트를 조립한다.



 ② LCD를 조립된 볼트에 끼우고 너트로 고정한 뒤, 케이블을 색상에 유의하여 아래와 같이 연결한다. 


 

2. 아두이노 우노 보드 거치대 조립


 ① 릴레이 2개와 아두이노 우노 보드에 볼트와 너트를 조립한다.




 ② 보드 고정판에 릴레이와 아두이노 우노 보드를 끼운 뒤 너트로 고정한다.

 

③ 보드 고정판 거치대를 볼트 너트를 이용하여 조립한다. 이 때, 볼트의 방향에 주의한다. 그리고, 센서 쉴드 보드를 아두이노 보드에 조립한다. 




3. 센서 모듈 조립


※ 커넥터는 방향이 있어 거꾸로 끼워지지 않습니다. 아래 사진의 방향대로 연결하면 됩니다.


 ① DIY 선샤인 스마트팜 키트에서 배너와 상단 고정 지지대를 분해한다.


 ② 온습도 센서를 케이블과 연결한 뒤 양면테이프를 붙이고 케이블은 구멍을 통해 밖으로 빼낸다.


 

③ 토양수분 센서의 케이블로 구멍으로 통해 밖으로 빼낸다.



 

 ④ 급수 장치 상,하판을 볼트와 너트를 이용하여 조립한다.



 ⑤ 식물생장 LED를 방향에 유의하여 급수 장치에 부착한다.



⑥ 호스에 연결용 젠더를 연결하고 급수 장치에 조립한다.


 ⑦ 급수 장치 양쪽 홈으로 수중펌프 연결 케이블(40cm/ 2Pin/ 검정,빨강)을 넣는다.


 

 ⑧ LCD 모듈에 연결 된 케이블은 상단 고정 지지대의 구멍에 하나씩 넣어 빼낸 후, 급수 장치 상판 중앙의 사각 홈에 넣어 LED 케이블이 있는 방향으로 빼낸다.


 

 ⑨ 상단 고정 지지대에 LCD 고정판을 조립하고, 스마트팜에 조립한다. 케이블과 호스는 양 옆의 구멍으로 빼내어 준다.



 ⑩ 수중 펌프에 연결용 젠더가 끼워진 호스와 케이블을 연결한다.



 ⑪ 조도 센서를 양면테이프로 보드 고정판 거치대에 부착하고, 3Pin 케이블을 연결하여 보드 고정판 오른쪽 구멍으로 빼내어 정리한다.



⑫ 보드 고정판 왼쪽 구멍으로는 토양수분 센서, 식물생장 LED, 수중 펌프 연결 케이블을, 오른쪽 구멍으로는 LCD와 온습도 센서의 케이블을 빼낸다. 




⑬ 보드 고정판 거치대를 스마트팜에 조립한다.




 ⑭ 아래와 같이 케이블을 연결한다.






      -. 모터 스펙을 보면 동작을 위한 전류는 100~200mA 정도로 표시가 되지만, 물 안에서는 부하가 더 걸려 꽤 많은 양이 필요하니 외부 전원을 릴레이에 연결하는 것이 좋습니다. 모터 동작 확인을 할 때는 9V 건전지를 추가로 배럴잭에 연결하고, 본 키트의 실제 활용 시에는 9V 2A의 아답터 사용을 권장합니다.



5.2.2. 코드 작성 및 동작 확인 


모터 동작을 확인을 위해서 배럴잭에 외부 전원으로 9V 건전지(꼭 알카라인으로)를 연결해 줍니다.

9V 건전지는 단순히 동작을 확인하는 것일 뿐, 정상적인 동작을 위해서는 9V 2A  정도의 어댑터 전원을 이용합니다. 수중모터의 노이즈 문제로 간혹 동작 중 온습도가 측정이 되지 않을 수 있습니다.



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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <DHT.h>                    // 온습도 센서 라이브러리
#include <Wire.h>                   // i2C 통신을 위한 라이브러리
#include <LiquidCrystal_I2C.h>      // LCD 1602 I2C용 라이브러리
LiquidCrystal_I2C lcd(0x27162); // 화면이 안나오면 0x27 <-> 0x3F 로 변경
 
#define SoilPin A0         // 토양수분센서 A0번 핀에 연결 
#define CdsPin A1          // 조도센서 A1번 핀에 연결
#define LedPin 9           // LED 릴레이 3번 핀에 연결
#define DHTPin 4           // 온습도 센서 4번 핀에 연결
#define DHTTYPE DHT11      // 온습도 센서타입  
DHT dht(DHTPin,DHTTYPE);   // 온습도 센서 함수 선언
#define PumpPin 3          // 수중 펌프 릴레이 9번 핀에 연결
 
 
void setup() {
  Serial.begin(9600);               //시리얼 통신 속도 9600bps으로 설정
  dht.begin();                      //온습도 센서 초기화 및 통신 시작
  pinMode(LedPin,OUTPUT);           //릴레이핀(3번핀) 출력으로 설정
  pinMode(PumpPin,OUTPUT);          //릴레이핀(3번핀) 출력으로 설정
  lcd.init();                       // LCD 초기화
}
 
void loop() {
  float tempValue = dht.readTemperature();   // 온도 측정값을 tempValue에 저장
  float humValue = dht.readHumidity();       // 습도 측정값을 humValue에 저장
  int CdsValue = analogRead(CdsPin);         // 조도 측정값을 CdsValue에 저장  
  int SoilValue = analogRead(SoilPin);       // 토양수분 측정값을 SoilValue에 저장
  int SoilValue_per = map(SoilValue, 1505001000);  
  /* 센서 값을 퍼센트로 변경, 0~1023의 값이나, 물티슈로 센서를 감싼 상태로 최소값과 그냥 대기중의 최대값을 확인 후 기재 
  map(SoilValue, 최소값_물티슈, 최대값_대기, 100, 0) */
 
// 어두우면 LED 조명 켜기
 
  if(CdsValue > 600){                        // 조도 측정값에 따른 릴레이핀 동작(생장LED 동작)
    digitalWrite(LedPin,HIGH);             // 밝을 때와 어두울 때의 값을 시리얼모니터로 확인 후 중간 값을 기준으로 사용 
  } 
  else if(CdsValue <= 600){
    digitalWrite(LedPin,LOW);
  }
 
// 토양 수분이 40% 미만이면 수중모터 동작하기 (급수)
 
  if(SoilValue_per < 40){             // 토양수분 % 측정 값에 따른 릴레이핀 동작(수중모터 동작)
    digitalWrite(PumpPin,HIGH);       // 40% 를 기준으로 사용 
  } 
  else if(SoilValue_per >= 40){
    digitalWrite(PumpPin,LOW);
  }
 
// LCD에 온도, 습도, 토양수분 표시하기
 
  lcd.backlight();      // 백라이트 켜기
  lcd.setCursor(00);  // (X축 넘길 갯수, 라인번호) 첫 번째 칸, 첫 번째 줄에 표시
  lcd.print("T : ");
  lcd.print((int)tempValue);
  lcd.print("C");
  lcd.setCursor(80);  // (1칸 띄고, 첫번째 라인)
  lcd.print("H : ");
  lcd.print((int)humValue);
  lcd.print("%");
  lcd.setCursor(21);  // (2칸 띄고, 2번째 라인)
  lcd.print("Soil_M : ");
  lcd.print(SoilValue_per);
  lcd.setCursor(131);  // (13칸 띄고, 2번째 라인)
  lcd.print("%");
 
// 시리얼 모니터에 온도, 습도, 조도, 토양수분 아날로그 입력값, 토양수분 %로 변경값 표시하
 
  Serial.print("temp : "); 
  Serial.print((int)tempValue); 
  Serial.print(" °C, ");               
  Serial.print("humi : "); 
  Serial.print((int)humValue); 
  Serial.print(" %, ");
  Serial.print("Cds : ");
  Serial.print(CdsValue);
  Serial.print("   ");
  Serial.print("Soil : ");
  Serial.print(SoilValue);
  Serial.print("   ");
  Serial.print("Soil_M : "); 
  Serial.print((int)SoilValue_per); 
  Serial.println(" % ");                  //다음 측정값은 줄바꿈하여 시리얼모니터 표시
  delay(300);
}
 
cs



아두이노 설치, 기본 및 각각의 센서 사용법은 아두이노 페이지를 참조바랍니다.

 -> https://www.happycreative.co.kr/manual/detail.php?idx=29

TOP