基于Arduino的智慧农业大棚监控系统使用温湿度传感器DHT11检测温湿度,当温度高于36度时,开启位于I7位置的小灯。使用土壤湿度传感器检测土壤湿度,当土壤湿度低于17%时开启位于I4位置的水泵,开启3秒。使用LDR和一个电阻串联来检测光照强度,当光照强度低于200时开启位于I5位置的小灯,当光照强度高于500时开启位于I6位置的小灯。使用MQ135检测二氧化碳浓度,当二氧化碳浓度高于0.3%时开启位于I7位置的小灯。生成代码
时间: 2024-02-13 12:06:36 浏览: 128
好的,以下是基于Arduino的智慧农业大棚监控系统的代码,它使用DHT11传感器检测温湿度,土壤湿度传感器检测土壤湿度,LDR和电阻串联检测光照强度,以及MQ135检测二氧化碳浓度,并根据读数控制相应的设备。
```
#include <dht.h>
#define DHT11_PIN 2
#define SOIL_HUMIDITY_PIN A0
#define LDR_PIN A1
#define MQ135_PIN A2
#define LED_PIN_1 4
#define PUMP_PIN 7
#define LED_PIN_2 8
#define LED_PIN_3 9
dht DHT;
void setup() {
pinMode(PUMP_PIN, OUTPUT);
pinMode(LED_PIN_1, OUTPUT);
pinMode(LED_PIN_2, OUTPUT);
pinMode(LED_PIN_3, OUTPUT);
Serial.begin(9600);
}
void loop() {
int chk = DHT.read11(DHT11_PIN);
Serial.print("Temperature: ");
Serial.print(DHT.temperature);
Serial.print(" °C, Humidity: ");
Serial.print(DHT.humidity);
Serial.println("%");
// Check temperature and control LED
if (DHT.temperature > 36) {
digitalWrite(LED_PIN_1, HIGH);
} else {
digitalWrite(LED_PIN_1, LOW);
}
// Check soil humidity and control water pump
int soilHumidity = analogRead(SOIL_HUMIDITY_PIN);
Serial.print("Soil Humidity: ");
Serial.print(soilHumidity);
Serial.println("%");
if (soilHumidity < 17) {
digitalWrite(PUMP_PIN, HIGH);
delay(3000);
digitalWrite(PUMP_PIN, LOW);
}
// Check light intensity and control LED
int ldrValue = analogRead(LDR_PIN);
Serial.print("Light Intensity: ");
Serial.println(ldrValue);
if (ldrValue < 200) {
digitalWrite(LED_PIN_2, HIGH);
} else {
digitalWrite(LED_PIN_2, LOW);
}
if (ldrValue > 500) {
digitalWrite(LED_PIN_3, HIGH);
} else {
digitalWrite(LED_PIN_3, LOW);
}
// Check CO2 concentration and control LED
int mq135Value = analogRead(MQ135_PIN);
Serial.print("CO2 Concentration: ");
Serial.print(mq135Value);
Serial.println(" ppm");
if (mq135Value > 300) {
digitalWrite(LED_PIN_1, HIGH);
} else {
digitalWrite(LED_PIN_1, LOW);
}
delay(2000);
}
```
在这个程序中,我们使用了dht库来读取DHT11传感器的数据,以及analogRead函数来读取土壤湿度传感器、LDR和MQ135传感器的数据。在setup函数中,我们将PUMP_PIN、LED_PIN_1、LED_PIN_2和LED_PIN_3设置为输出模式,并启动串口通信。在loop函数中,我们首先读取传感器数据,并将温度、湿度、土壤湿度、光照强度和CO2浓度值打印到串口。然后,我们检查温度、土壤湿度、光照强度和CO2浓度是否超过了设定的阈值,并相应地控制LED_PIN_1、PUMP_PIN、LED_PIN_2和LED_PIN_3的输出状态,以便开启或关闭相应的设备。最后,我们在延迟2000毫秒后重复执行loop函数。
阅读全文