오늘은 화분 물공급 키트에 대해 알아보는
세번째 시간입니다.
토양습도센서(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 동작 소스코드
1234567891011121314151617181920212223242526272829303132333435363738 #include "DHT.h" // DHT 라이브러리 호출#include <LiquidCrystal_I2C.h>#include <Wire.h>LiquidCrystal_I2C lcd(0x27, 16, 2);#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);}
Chapter 5. 워터펌프
저희가 사용할 워터펌프입니다.
아래쪽에서 빨아 들여 옆으로 나온 곳으로 물이 나오게 됩니다.
나오는 곳에 호스를 연결해 물을 주도록 하겠습니다.
워터펌프를 사용하기 위해서는
모터 드라이브를 사용해주셔야 합니다.
워터펌프, 모터 드라이브 연결
먼저 모터의 선을 모터 드라이브 출력 부분에 연결해주세요,
우측 사진처럼 L9110 모듈은 핀 4개만 사용했습니다.
위 그림과 아래 표를 참고해 연결해주세요.
L9110 모터드라이브 | 아두이노 우노 | 외부전원 |
GND | GND | ( - ) |
VCC | VIN | ( + ) |
A-1A | D10 | |
A-1B | D09 |
워터펌프, 모터 드라이브 테스트 소스코드
123456789101112131415161718192021222324 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 으로 적용해보도록 하겠습니다.
회로도
이렇게 회로도로 보면 어려우실 수 도 있어요.
챕터1~5까지의 사진을 참고해서 차근차근 연결하시면 쉽게 연결할 수 있습니다.
완성 소스코드
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 #include "DHT.h" // DHT 라이브러리 호출#include <LiquidCrystal_I2C.h>#include <Wire.h>LiquidCrystal_I2C lcd(0x27, 16, 2);#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보다 작을때 모터 offdigitalWrite(IN1, LOW);digitalWrite(IN2, LOW);}delay(1000);}
동작 영상
이렇게 기준치 이상이 되면 물을 주어 식물이 잘 자랄수 있게끔 할 수 있어요
온습도도 같이 확인하여 이 식물이 잘 자랄수 있는 조건을 맞춰보세요
전자부품 전문 쇼핑몰 인투피온입니다.
필요한 자재에 관한 문의는 홈페이지를 통한 견적 신청, 혹은 전화나 메일로 주시면 빠른 회신을 드릴 수 있도록 하겠습니다.
▶ 홈페이지: http://intopion.com/
▶ 전화: 02-2615-7278
▶ FAX : 02-6124-4242
▶ 메일: intopion@hanmail.net
'인투피온 강좌 > 아두이노 팁(Tip)' 카테고리의 다른 글
아두이노 매뉴얼 [미세먼지 측정 키트] - 2 (0) | 2022.08.19 |
---|---|
아두이노 매뉴얼 [미세먼지 측정 키트] - 1 (0) | 2022.08.18 |
아두이노 매뉴얼 [화분 물공급 키트] - 2 (0) | 2022.08.01 |
아두이노 매뉴얼 [화분 물공급 키트] - 1 (0) | 2022.07.29 |
아두이노 매뉴얼 [소리감지 LED 키트] - 3 (0) | 2022.07.28 |