1. 온습도 센서 라이브러리 설치 및 I2C 디스플레이 라이브러리 설치
아두이노 스케치 새창을 띄워 온습도 센서값 출력을 확인해 보자.
필요 라이브러리 설치

온습도 센서 라이브러리 설치
1) DHT11을 검색 후 DHT sensor library by Adafruit를 설치해 줍니다.

2) adafruit unified sensor를 검색 후 Adafruit Unified Sensor by Adafruit를 설치해 줍니다.

I2C lcd 라이브러리 설치
1) 'liquid crystal i2c' 로 검색 한 후 Frank de Brabander가 만든 LiquidCrystal I2C 라이브러리를 설치해 줍니다.

2. 온습도 센서 lcd 출력 코드
아래 코드를 복사하여 업로드 해보도록 하자.
// 필요한 라이브러리를 호출
#include "DHT.h" // DHT 센서를 사용하기 위한 라이브러리
#include <LiquidCrystal_I2C.h> // LCD를 제어하기 위한 라이브러리
#define DHTPIN A0 // DHT 센서와 연결된 아두이노 핀을 정의
#define DHTTYPE DHT11 // 사용하는 DHT 센서의 모델을 지정
DHT dht(DHTPIN, DHTTYPE); // DHT 객체를 생성
LiquidCrystal_I2C lcd(0x27, 16, 2);
// LCD 객체를 생성. I2C 주소는 0x27이지만, 연결이 안 되면 0x3F를 사용해 보세요.
void setup() {
Serial.begin(9600);
dht.begin(); // DHT 센서를 초기화
lcd.init(); // LCD를 초기화
lcd.backlight(); // LCD의 백라이트를 on
}
void loop() {
float humidity = dht.readHumidity(); // DHT 센서로부터 습도와 온도를 읽기.
float temperature = dht.readTemperature();
if (isnan(humidity) || isnan(temperature) ) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// 만약 습도나 온도를 제대로 읽지 못했다면 오류 메시지를 출력하고 함수를 종료.
// 읽은 온도와 습도를 시리얼 모니터에 출력.
Serial.print((int)temperature); Serial.print(" *C, ");
Serial.print((int)humidity); Serial.println(" %");
String humi = "Humi : "; // LCD에 표시할 습도 문자열을 생성
humi += (String)humidity;
humi += "%";
String temp = "temp : "; // LCD에 표시할 온도 문자열을 생성
temp += (String)temperature;
temp += "C";
lcd.setCursor(0, 0); // LCD의 첫 번째 줄에 습도, 두 번째 줄에 온도를 표시
lcd.print(humi);
lcd.setCursor(0, 1);
lcd.print(temp);
}
3. 12v 쿨링팬 작동시켜 보기
위 코드에서 주석 부분에 아래 추가하기
- define fan 10
- pinMode(fan,OUTPUT);
- digitalWrite(fan,HIGH);
#include "DHT.h"
#include <LiquidCrystal_I2C.h>
#define DHTPIN A0
#define DHTTYPE DHT11
#define fan 10 // 쿨링팬 디지털 10번을 지정 (두팬 모두 10번핀으로 동시제어)
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
dht.begin();
lcd.init();
lcd.backlight();
pinMode(fan,OUTPUT); // 쿨링팬 출력모드
}
void loop() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (isnan(humidity) || isnan(temperature) ) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print((int)temperature); Serial.print(" *C, ");
Serial.print((int)humidity); Serial.println(" %");
String humi = "Humi : ";
humi += (String)humidity;
humi += "%";
String temp = "temp : ";
temp += (String)temperature;
temp += "C";
lcd.setCursor(0, 0);
lcd.print(humi);
lcd.setCursor(0, 1);
lcd.print(temp);
digitalWrite(fan,HIGH); // 쿨링팬 항상 켜두기
}
만약 온도에 따라 작동을 시키고자 한다면 조건문을 활용해 보자.

바람의 세기를 제어하기 위해 에코그로우 보드에는 쿨링팬 번호에서PWM 제어가 가능하여

아날로그 출력값으로 전력을 제어하여 회전속도를 제어할 수 있다. 디지털PWM은 연속되는 값(0 ~ 255) 까지 출력이 가능하다.
식물을 키우는데 바람은 큰 영향을 차지하며 작물에 따라 바람을 조절하여 보도록 하자.
(심화)또한, 자연바람과 같이 시간의 흐름에 따라 바람의 세기를 조절해 보자.
'에코그로우 스마트팜' 카테고리의 다른 글
EcoGrow_4차시 수위 센서 확인 하고 액체펌프 자동화 만들기. (0) | 2024.04.17 |
---|---|
EcoGrow: 3차시_ 식물성장LED, 온습도 출력, 팬 코드 합치기 (0) | 2024.04.15 |
EcoGrow : 1차시_식물성장 LED 제어하기. (0) | 2024.04.12 |