本节课源码

#include <WiFi.h>                 // 引入WiFi库,用于WiFi功能
#include <WebServer.h>            // 引入Web服务器库

const char *ssid = "2333";        // 定义WiFi的SSID
const char *password = "88888888";// 定义WiFi的密码

// 定义两个引脚:湿度传感器和水泵
const int ssrPin = 34;            // 土壤湿度传感器连接的引脚,ADC模拟输入
const int waterPin = 23;          // 控制水泵的引脚,数字输出

// 创建一个Web服务器实例,默认端口为80
WebServer server(80);

void setup() {
    Serial.begin(115200);         // 开始串行通信,波特率设置为115200
    pinMode(ssrPin, INPUT);       // 将土壤湿度传感器的引脚设置为输入模式
    pinMode(waterPin, OUTPUT);    // 将水泵控制的引脚设置为输出模式// 连接wifi
WiFi.begin(ssid, password);   // 使用指定的SSID和密码开始WiFi连接
while (WiFi.status() != WL_CONNECTED) {
    delay(1000);              // 如果未连接,则每秒重试一次
    Serial.println("正在连接中..."); // 在串行监视器上打印状态
}
Serial.println("连接成功:");   // 打印连接成功的消息
Serial.println(WiFi.localIP());// 打印分配给ESP32的IP地址

// 定义服务器路由
server.on("/", HTTP_GET, handleRoot); // 定义根路由,用于显示主页
server.on("/shidu", HTTP_GET, handleMoisture); // 定义湿度检测路由
server.on("/kai", HTTP_GET, kai); // 定义开启水泵的路由
server.on("/guan", HTTP_GET, guan); // 定义关闭水泵的路由

// 启动服务器
server.begin();               // 启动Web服务器
}

void loop() {
    server.handleClient();        // 处理客户端的请求
}

void handleRoot() {
    String html = "<html><meta charset='UTF-8'><body>";
    html += "<h1>土壤湿度传感器</h1>";
    html += "<p>湿度值: <span id='moistureValue'>0</span></p>";
    html += "<a href='/kai'>开启</a><br>";
    html += "<a href='/guan'>关闭</a><br><br>";
    html += "<script>";
    html += "setInterval(function() {fetch('/shidu').then(response => response.text()).then(data => document.getElementById('moistureValue').innerHTML = data);}, 2000);";
    html += "</script>";
    html += "</body></html>";
    server.send(200, "text/html", html); // 发送HTML内容作为响应
}

void handleMoisture() {
    int moistureValue = analogRead(ssrPin); // 读取土壤湿度传感器的值
    server.send(200, "text/plain", String(moistureValue)); // 发送读取的湿度值作为响应
}

void kai() {
    digitalWrite(waterPin, HIGH); // 将水泵控制引脚设置为高电平,开启水泵
    server.send(204);             // 发送HTTP状态码204,表示无内容响应
}

void guan() {
    digitalWrite(waterPin, LOW);  // 将水泵控制引脚设置为低电平,关闭水泵
    server.send(204);             // 发送HTTP状态码204,表示无内容响应
}