基于Arduino的智慧农业大棚监控系统使用DHT11传感器检测温湿度,当温度高于36度时,开启位于I7位置的小灯。使用土壤湿度传感器检测土壤湿度,当土壤湿度低于17%时开启位于I4位置的水泵,开启3秒。使用LDR和一个电阻串联来检测光照强度,当光照强度低于200时开启位于I5位置的小灯,当光照强度高于500时开启位于I6位置的小灯。使用MQ135检测二氧化碳浓度,当二氧化碳浓度高于0.3%时开启位于I7位置的小灯。生成代码
时间: 2024-02-13 12:06:29 浏览: 118
【arduino库】dht11温湿度传感器库文件
很高兴回答你的问题,下面是基于Arduino的智慧农业大棚监控系统的代码:
```
#include <dht.h>
dht DHT;
const int DHT11_PIN = 2; // 温湿度传感器连接的引脚为2
const int SOIL_MOISTURE_PIN = A0; // 土壤湿度传感器连接的引脚为A0
const int LDR_PIN = A1; // 光照强度传感器连接的引脚为A1
const int MQ135_PIN = A2; // 二氧化碳浓度传感器连接的引脚为A2
const int LIGHT_1_PIN = 5; // 位于I5位置的小灯连接的引脚为5
const int LIGHT_2_PIN = 6; // 位于I6位置的小灯连接的引脚为6
const int LIGHT_3_PIN = 7; // 位于I7位置的小灯连接的引脚为7
const int WATER_PUMP_PIN = 4; // 位于I4位置的水泵连接的引脚为4
void setup() {
pinMode(LIGHT_1_PIN, OUTPUT);
pinMode(LIGHT_2_PIN, OUTPUT);
pinMode(LIGHT_3_PIN, OUTPUT);
pinMode(WATER_PUMP_PIN, OUTPUT);
Serial.begin(9600);
}
void loop() {
// 温湿度检测
int chk = DHT.read11(DHT11_PIN);
float temperature = DHT.temperature;
float humidity = DHT.humidity;
if (temperature > 36) {
digitalWrite(LIGHT_3_PIN, HIGH); // 开启位于I7位置的小灯
} else {
digitalWrite(LIGHT_3_PIN, LOW);
}
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print(" °C, Humidity: ");
Serial.print(humidity);
Serial.println(" %");
// 土壤湿度检测
int soilMoisture = analogRead(SOIL_MOISTURE_PIN);
if (soilMoisture < 170) {
digitalWrite(WATER_PUMP_PIN, HIGH); // 开启位于I4位置的水泵
delay(3000); // 维持3秒
digitalWrite(WATER_PUMP_PIN, LOW);
}
// 光照强度检测
int ldrValue = analogRead(LDR_PIN);
if (ldrValue < 200) {
digitalWrite(LIGHT_1_PIN, HIGH); // 开启位于I5位置的小灯
} else {
digitalWrite(LIGHT_1_PIN, LOW);
}
if (ldrValue > 500) {
digitalWrite(LIGHT_2_PIN, HIGH); // 开启位于I6位置的小灯
} else {
digitalWrite(LIGHT_2_PIN, LOW);
}
// 二氧化碳浓度检测
int mq135Value = analogRead(MQ135_PIN);
float ppm = mq135Value / 1024.0 * 5000;
if (ppm > 300) {
digitalWrite(LIGHT_3_PIN, HIGH); // 开启位于I7位置的小灯
} else {
digitalWrite(LIGHT_3_PIN, LOW);
}
Serial.print("PPM: ");
Serial.println(ppm);
delay(1000); // 每隔1秒检测一次
}
```
希望能对你有所帮助!
阅读全文