본문 바로가기
에코그로우 스마트팜

EcoGrow : 2차시_ 온습도 LCD 출력하기

by SwMaker_Jun 2024. 4. 12.
728x90
반응형

 

 

1. 온습도 센서  라이브러리 설치 및   I2C 디스플레이 라이브러리 설치

아두이노 스케치 새창을 띄워 온습도 센서값 출력을 확인해 보자.

 

필요 라이브러리 설치

라이브러리 설치

 

온습도 센서 라이브러리 설치

    1) DHT11을 검색 후 DHT sensor library by Adafruit를 설치해 줍니다.

DHT11 온습도 센서 라이브러리 설치

 

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

adafruit unified sensor 설치

 

 

I2C lcd 라이브러리 설치

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

i2c lcd 라이브러리 설치

 

 

 

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);          // 쿨링팬 항상 켜두기
 }

 

 

만약 온도에 따라 작동을 시키고자 한다면 조건문을 활용해 보자.

28도 이상일때 작동

 

 

 

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

 

PWM 제어

 

 

아날로그 출력값으로 전력을 제어하여 회전속도를 제어할 수 있다.    디지털PWM은 연속되는 값(0 ~ 255) 까지 출력이 가능하다. 

 

식물을 키우는데 바람은 큰 영향을 차지하며 작물에 따라 바람을 조절하여 보도록 하자.

(심화)또한, 자연바람과 같이 시간의 흐름에 따라 바람의 세기를 조절해 보자.

728x90
반응형