智慧溫室環境控制
#include "DHT.h" // 使用函式庫為 "DHT.h"
DHT dht(2, DHT11); // 定義溫溼度感測器物件名稱為 dht,讀取資料接腳為接腳 8
#include <Wire.h> // 載入 Wire 函式庫
#include <BH1750_WE.h> // 載入 BH1750 函式庫
BH1750_WE myBH1750(0x23); // myBH1750 物件
int Relay1 = 6; // 繼電器 1 接腳
int Relay2 = 5; // 繼電器 2 接腳
int LED = 13; //LED 燈接腳
int conditioner = 0; // 循環風扇
int humi = 0;
void setup()
{
Serial.begin(9600); // 監控視窗鮑率
dht.begin(); // 溫溼度感測器開始偵測
Wire.begin(); // 啟動 I2C
myBH1750.init(); // BH1750 光感模組初始化
pinMode( LED , OUTPUT); //LED 燈接腳模式
pinMode( Relay1 , OUTPUT); // 繼電器 1 接腳模式
pinMode( Relay2 , OUTPUT); // 繼電器 2 接腳模式
digitalWrite( LED , HIGH ); //LED 燈接腳初始狀態
digitalWrite( Relay1 , HIGH ); // 繼電器 1 接腳初始狀態
digitalWrite( Relay2 , HIGH ); // 繼電器 2 接腳初始狀態
delay(1000);
}
void loop()
{
Serial.println("=== 智慧溫室控制系統 ==="); // 監控視窗輸出
// 光感測器
float light = myBH1750.getLux(); // 讀取光照數值
Serial.print(" 目前光照度 = "); // 列印文字
Serial.print(light); // 列印光照數值
Serial.print(" Lux "); // 列印單位
if(light < 200){ // 判斷環境黑暗
Serial.println("==== 燈光照明:ON");
digitalWrite(LED,LOW); // 打開 LED 燈
}
else { // 判斷環境明亮
Serial.println("==== 燈光照明:OFF");
digitalWrite(LED,HIGH); // 關閉 LED 燈
}
// 溫溼度感測器
float t = dht.readTemperature(); // 讀取溫度數值
float h = dht.readHumidity(); // 讀取濕度數值
if(t > 28){
conditioner = 1;
}else {
conditioner = 0;
}
Serial.print(" 目前溫度 = ");
Serial.print(t);
Serial.print(" ℃ ");
if(conditioner == 1){
Serial.println("==== 風扇:ON");
digitalWrite(Relay1,LOW);
}
if(conditioner == 0){
Serial.println("==== 風扇:OFF");
digitalWrite(Relay1,HIGH);
}
if(h >= 60) {
humi = 0;
}else {
humi = 1;
}
Serial.print(" 目前濕度 = ");
Serial.print(h);
Serial.print(" % ");
if(humi == 1){
Serial.println("==== 澆水系統:ON");
digitalWrite(Relay2,LOW);
}
if(humi == 0){
Serial.println("==== 澆水系統:OFF");
digitalWrite(Relay2,HIGH);
}
Serial.println();
delay(10000); // 每 10 秒更新一次
}