🗣 Wd提问: esp8266 网页服务器
🤖 Ai回答: 以下是一个基于ESP8266的网页服务器实现,可通过网页控制LED开关并显示传感器数据(以DHT11温湿度传感器为例):
硬件准备
ESP8266开发板(如NodeMCU)
DHT11温湿度传感器(可选)
LED(可选,使用板载LED)
完整代码
cpp
include <ESP8266WiFi.h
include <ESP8266WebServer.h
include <DHT.h
// WiFi配置
const char* ssid = 你的WiFi名称;
const char* password = 你的WiFi密码;
// 服务器配置
ESP8266WebServer server(80);
// 传感器配置
define DHTPIN 2 // DHT11数据引脚连接GPIO2
define DHTTYPE DHT11 // 使用DHT11传感器
DHT dht(DHTPIN, DHTTYPE);
// LED引脚(使用板载LED,GPIO2)
define LED_PIN 2
// 全局变量
bool ledState = false;
// HTML页面
const char* html = R(
<!DOCTYPE html
<html
<head
<titleESP8266 Web Server</title
<meta name=viewport content=width=device-width, initial-scale=1
<style
body { font-family: Arial; text-align: center; margin: 0; padding: 20px; }
.container { max-width: 400px; margin: 0 auto; }
h1 { color: 2c3e50; }
.sensor { background: f8f9fa; padding: 15px; border-radius: 8px; margin: 10px 0; }
.button { background: 3498db; color: white; border: none; padding: 12px 24px; font-size: 16px; border-radius: 4px; cursor: pointer; }
.button:active { background: 2980b9; }
.status { font-size: 20px; font-weight: bold; margin: 10px 0; }
</style
</head
<body
<div class=container
<h1ESP8266 Web Server</h1
<div class=sensor
<h2环境数据</h2
<p温度: <span id=temp</span °C</p
<p湿度: <span id=humid</span %</p
</div
<div class=control
<h2LED控制</h2
<p class=statusLED: <span id=ledStatusOFF</span</p
<button class=button onclick=toggleLED()切换LED</button
</div
</div
<script
// 获取传感器数据
function updateSensorData() {
fetch('/sensor')
.then(response = response.json())
.then(data = {
document.getElementById('temp').innerText = data.temp;
document.getElementById('humid').innerText = data.humid;
});
}
// 切换LED
function toggleLED() {
fetch('/toggle')
.then(response = response.text())
.then(data = {
document.getElementById('ledStatus').innerText = data;
});
}
// 初始加载
updateSensorData();
setInterval(updateSensorData, 2000); // 每2秒更新一次
</script
</body
</html
);
void setup() {
Serial.begin(115200);
// 初始化LED
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
// 初始化DHT传感器
dht.begin();
// 连接WiFi
WiFi.begin(ssid, password);
Serial.print(连接WiFi中...);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(.);
}
Serial.println(\nWiFi已连接!);
Serial.print(IP地址: );
Serial.println(WiFi.localIP());
// 设置路由
server.on(/, HTTP_GET, []() {
server.send(200, text/html, html);
});
server.on(/sensor, HTTP_GET, []() {
// 读取传感器数据
float temp = dht.readTemperature();
float humid = dht.readHumidity();
// 创建JSON响应
String json = {\temp\: + String(temp) + ,\humid\: + String(humid) + };
server.send(200, application/json, json);
});
server.on(/toggle, HTTP_GET, []() {
ledState = !ledState;
digitalWrite(LED_PIN, ledState ? HIGH : LOW);
server.send(200, text/plain, ledState ? ON : OFF);
});
server.begin();
Serial.println(HTTP服务器已启动);
}
void loop() {
server.handleClient();
}
功能说明
1、WiFi连接:配置WiFi名称和密码,连接后显示IP地址
2、网页控制:
通过网页按钮控制LED开关
实时显示温湿度数据(每2秒自动更新)
3、响应路径:
`/`:返回主页面
`/sensor`:返回JSON格式的传感器数据
`/toggle`:切换LED状态
使用步骤
1、安装依赖库:
bash
Arduino IDE库管理器中安装
ESP8266WiFi
DHT sensor library
2、修改代码中的WiFi名称和密码
3、上传代码到ESP8266
4、浏览器访问显示的IP地址
注意事项
1、LED控制:
默认使用GPIO2(板载LED)
部分开发板LED是低电平点亮,需修改`digitalWrite`逻辑
2、传感器连接:
DHT11数据引脚连接GPIO2(可修改`DHTPIN`)
VCC接3.3V,GND接地
3、内存优化:
复杂HTML可使用SPIFFS存储
减少全局变量使用
扩展功能
1、添加更多传感器(光照、气压等)
2、实现OTA远程更新
3、添加用户认证功能
4、集成MQTT协议连接物联网平台
提示:首次使用时,如果LED不亮,可能是电平逻辑相反,尝试修改`digitalWrite(LED_PIN, ledState ? LOW : HIGH)`
📣 商家广告:





0
IP地址: 62.249.43.233
搜索次数: 10
提问时间: 2025-11-09 09:16:45
🛒 域名购买:
rj.biz
lf.gs
2.sd.cn
chusou.cn
tc.gs
chesou.com.cn
81.biz
5.hi.cn
zd.gs
32.gs
❓️ 热门提问:
康普机柜
成都 虚拟主机
腾讯云主机续费
云主机国内哪家好
域名平台转让
美国win vps
vnp路由器
海外vps网
菲律宾cn2
如何注册免费域名
豌豆Ai站群搜索引擎系统
🌐 域名评估:
oo.sn.cn
z.nm.cn
oo.js.cn
xgoi.cn
yu8.hl.cn
catl.pw
vtol.yn.cn
dji.gd.cn
tieba.chat
ff.ln.cn
⛏ 最新挖掘:
凯里酸汤鱼
贵阳烤脑花
都匀毛尖茶
花溪牛肉粉
贵阳烤生蚝
贵阳烤豆腐
贵阳纸包鱼
贵阳特色菜
🖌 热门作画:
🤝 关于我们:
豌豆Ai
域名
建站
站群
留痕
推广
评估
源码
开发Ai
工具
日记
价格
加盟
广告
流量
留言
联系
🗨 加入群聊:
🔗 友情链接:
搜尋引擎優化
软件开发定制
ai提问
🧰 站长工具:
Ai工具 whois查询 搜索
📢 温馨提示:本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。
👉 技术支持:本站由豌豆Ai提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。