Trồng nấm tự động: kiểm soát ẩm và nhiệt độ với Arduino
Thùng trồng nấm DIY tự động duy trì độ ẩm 85-95% và nhiệt 22-25°C. Phun sương khi khô, quạt thông gió khi ẩm cao. DHT22 + relay.
Đa số nấm (sò trắng, hoàng đế, kim châm) cần:
Thùng phổ biến: hộp xốp/nhựa 50L, kín kín hộp + 4 lỗ thông gió có sleeve nhựa.
Đấu nối:
Logic:
#include <DHT.h>
DHT dht(2, DHT22);
const int PIN_PHUN = 7;
const int PIN_QUAT = 8;
unsigned long lastPhun = 0;
unsigned long lastVentilation = 0;
bool phunDangBat = false;
unsigned long phunBatLuc = 0;
void setup() {
Serial.begin(115200);
pinMode(PIN_PHUN, OUTPUT);
pinMode(PIN_QUAT, OUTPUT);
digitalWrite(PIN_PHUN, LOW);
digitalWrite(PIN_QUAT, LOW);
dht.begin();
delay(3000);
}
void loop() {
float t = dht.readTemperature();
float h = dht.readHumidity();
if (isnan(t) || isnan(h)) { delay(2000); return; }
Serial.printf("T=%.1f H=%.0f%%\n", t, h);
// Phun suong
if (!phunDangBat && h < 85 && millis() - lastPhun > 5UL * 60 * 1000) {
digitalWrite(PIN_PHUN, HIGH);
phunDangBat = true;
phunBatLuc = millis();
}
if (phunDangBat && millis() - phunBatLuc > 30000) {
digitalWrite(PIN_PHUN, LOW);
phunDangBat = false;
lastPhun = millis();
}
// Quat: am qua cao hoac nhiet cao
bool needFan = (h > 95 || t > 26);
// Hoac dinh ky thong gio
if (millis() - lastVentilation > 6UL * 60 * 60 * 1000) {
digitalWrite(PIN_QUAT, HIGH);
delay(5UL * 60 * 1000);
digitalWrite(PIN_QUAT, LOW);
lastVentilation = millis();
} else {
digitalWrite(PIN_QUAT, needFan ? HIGH : LOW);
}
delay(2000);
}