#include "WiFi.h"
#include "DHT.h"
// WIFI 信息(Wokwi 仿真专用,你不用改)
const char* ssid = "WokwiWiFi";
const char* password = "wokwi123";
// DHT11
#define DHTPIN 4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
// 继电器引脚
#define FAN_PIN 18
#define HUMIDIFIER_PIN 19
WiFiServer server(80);
void setup() {
Serial.begin(115200);
pinMode(FAN_PIN, OUTPUT);
pinMode(HUMIDIFIER_PIN, OUTPUT);
digitalWrite(FAN_PIN, LOW);
digitalWrite(HUMIDIFIER_PIN, LOW);
dht.begin();
// 连接 WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
server.begin();
}
void loop() {
WiFiClient client = server.available();
if (!client) return;
String request = client.readStringUntil('\r');
client.flush();
// 读取温湿度
float h = dht.readHumidity();
float t = dht.readTemperature();
int pm25 = random(10, 60); // 模拟 PM2.5
// 控制指令
if (request.indexOf("FAN_ON") != -1) digitalWrite(FAN_PIN, HIGH);
if (request.indexOf("FAN_OFF") != -1) digitalWrite(FAN_PIN, LOW);
if (request.indexOf("HUMI_ON") != -1) digitalWrite(HUMIDIFIER_PIN, HIGH);
if (request.indexOf("HUMI_OFF") != -1) digitalWrite(HUMIDIFIER_PIN, LOW);
// 返回网页
client.println("HTTP/1.1 200 OK");
client.println("Content-Type:text/html");
client.println();
client.println("<h1>智能助眠净化系统</h1>");
client.print("温度:"); client.print(t); client.println("℃<br>");
client.print("湿度:"); client.print(h); client.println("%<br>");
client.print("PM2.5:"); client.print(pm25); client.println("<br><br>");
client.println("<a href= "/FAN_ON\">开启净化</a > | <a href=\"/FAN_OFF\">关闭净化</a ><br>");
client.println("<a href=\"/HUMI_ON\">开启加湿</a > | <a href=\"/HUMI_OFF\">关闭加湿</a >");
delay(10);
}