洪嵐峰 發表於 2023-3-30 05:57:23

製作Arduino智能溫室系統

製作Arduino智能溫室系統需要以下零件:

Arduino UNO 控制板 x 1
DHT11 溫度濕度傳感器 x 1
BH1750 光照度傳感器 x 1
5V 電風扇 x 1
5V 水泵 x 1
5V 電磁閥 x 1
5V LED燈 x 1
杜邦線若干
面包板 x 1
以下是相關的程式碼,你可以根據自己的需求進行修改:


#include <DHT.h>
#include <Wire.h>
#include <BH1750.h>

#define DHTPIN 2          // DHT11傳感器的引腳接到Arduino的2號引腳
#define DHTTYPE DHT11     // 傳感器的類型
DHT dht(DHTPIN, DHTTYPE);

BH1750 lightMeter;
byte buff;

int fanPin = 3;         // 風扇控制引腳
int pumpPin = 4;        // 水泵控制引腳
int valvePin = 5;       // 電磁閥控制引腳
int ledPin = 6;         // LED燈控制引腳

void setup() {
  Serial.begin(9600);
  dht.begin();
  lightMeter.begin();
  pinMode(fanPin, OUTPUT);
  pinMode(pumpPin, OUTPUT);
  pinMode(valvePin, OUTPUT);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // 讀取溫度和濕度
  float temperature = dht.readTemperature();
  float humidity = dht.readHumidity();

  // 讀取光照度
  uint16_t lux = lightMeter.readLightLevel();

  // 判斷溫度是否過高
  if (temperature > 30) {
    digitalWrite(fanPin, HIGH);   // 打開風扇
  } else {
    digitalWrite(fanPin, LOW); // 關閉風扇
}

// 判斷濕度是否不足
if (humidity < 60) {
digitalWrite(pumpPin, HIGH); // 打開水泵
} else {
digitalWrite(pumpPin, LOW); // 關閉水泵
}

// 判斷光照度是否不足
if (lux < 500) {
digitalWrite(ledPin, HIGH); // 打開LED燈
} else {
digitalWrite(ledPin, LOW); // 關閉LED燈
}

// 判斷溫度和濕度是否適宜
if (temperature > 18 && temperature < 28 && humidity > 50 && humidity < 80) {
digitalWrite(valvePin, HIGH); // 打開電磁閥
} else {
digitalWrite(valvePin, LOW); // 關閉電磁閥
}

// 在序列監視器上顯示溫度、濕度和光照度
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print(" °C, Humidity: ");
Serial.print(humidity);
Serial.print(" %, Light: ");
Serial.print(lux);
Serial.println(" lux");

// 延遲1秒
delay(1000);
}
頁: [1]
查看完整版本: 製作Arduino智能溫室系統