17浏览
查看: 17|回复: 0

[ESP8266/ESP32] FireBeetle 2 ESP32-C5 HTTP Server实现网页控制LED闪烁

[复制链接]
简介
在本文中主要简介如何使用ESP32C5 快速的搭建一个HTTP server实现HTML页面的显示并且可以在HTML页面上来控制核心板上的LED闪烁。




效果如下所示:


FireBeetle 2 ESP32-C5 HTTP Server实现网页控制LED闪烁图1


整个程序由四个主要部分组成:
  • Wi-Fi 连接部分 → 让 ESP32-C5 连上你的路由器
  • HTTP 服务器初始化 → 在端口 80 上建立网页访问
  • 网页与路由处理函数 → 定义访问 / 和 /led 时返回的内容
  • 主循环处理请求 → 持续监听并响应浏览器请求






1- 首先引入库文件
  1. #include <WiFi.h>
  2. #include <WebServer.h>
复制代码


2- 然后配置自己的wifi信息
  1. const char* ssid     = "ImmortalWrt-5G";
  2. const char* password = "XXXXXXXXX";
复制代码


3- 创建WebServer的实例对象
  1. // 创建 WebServer 实例(端口 80)
  2. WebServer server(80);
复制代码
这里需要的话可以自己修改端口。

4- 定义板载的LED灯引脚
  1. const int LED_PIN = 15;
复制代码
根据开发板丝印可以确定是引脚15

5- 然后定义当访问网页的时候将要显示的内容是什么
  1. void handleRoot() {
  2.   server.send(200, "text/html",
  3.               "<html><body>"
  4.               "<h1 style="color:red">FireBeetle 2 ESP32-C5</h1>"
  5.               "<h2>Hello from DFROBOT!</h2>"
  6.               "<p><a href="/led?state=on">Turn LED ON</a></p>"
  7.               "<p><a href="/led?state=off">Turn LED OFF</a></p>"
  8.               "</body></html>");
  9. }
复制代码


6- 以及对应的LED响应函数
  1. void handleLed() {
  2.   String state = server.arg("state"); // 获取URL参数 state
  3.   if (state == "on") {
  4.     digitalWrite(LED_PIN, HIGH);
  5.     server.send(200, "text/plain", "LED is ON");
  6.   } else if (state == "off") {
  7.     digitalWrite(LED_PIN, LOW);
  8.     server.send(200, "text/plain", "LED is OFF");
  9.   } else {
  10.     server.send(400, "text/plain", "Invalid state");
  11.   }
  12. }
复制代码


完整代码如下:


  1. #include <WiFi.h>
  2. #include <WebServer.h>  // ESP32 内置 HTTP Server 库
  3. // 修改为你的 Wi-Fi 信息
  4. const char* ssid     = "ImmortalWrt-5G";
  5. const char* password = "mazha1997";
  6. // 创建 WebServer 实例(端口 80)
  7. WebServer server(80);
  8. // 板载 LED 引脚(根据开发板修改)
  9. const int LED_PIN = 15;
  10. void handleRoot() {
  11.   server.send(200, "text/html",
  12.               "<html><body>"
  13.               "<h1 style="color:red">FireBeetle 2 ESP32-C5</h1>"
  14.               "<h2>Hello from DFROBOT!</h2>"
  15.               "<p><a href="/led?state=on">Turn LED ON</a></p>"
  16.               "<p><a href="/led?state=off">Turn LED OFF</a></p>"
  17.               "</body></html>");
  18. }
  19. void handleLed() {
  20.   String state = server.arg("state");
  21.   if (state == "on") {
  22.     digitalWrite(LED_PIN, HIGH);
  23.     server.send(200, "text/plain", "LED is ON");
  24.   } else if (state == "off") {
  25.     digitalWrite(LED_PIN, LOW);
  26.     server.send(200, "text/plain", "LED is OFF");
  27.   } else {
  28.     server.send(400, "text/plain", "Invalid state");
  29.   }
  30. }
  31. void setup() {
  32.   Serial.begin(115200);
  33.   pinMode(LED_PIN, OUTPUT);
  34.   digitalWrite(LED_PIN, LOW);
  35.   // 连接 Wi-Fi
  36.   Serial.println();
  37.   Serial.print("Connecting to ");
  38.   Serial.println(ssid);
  39.   WiFi.begin(ssid, password);
  40.   while (WiFi.status() != WL_CONNECTED) {
  41.     delay(500);
  42.     Serial.print(".");
  43.   }
  44.   Serial.println("\nWiFi connected!");
  45.   Serial.print("IP address: ");
  46.   Serial.println(WiFi.localIP());
  47.   // 注册路由
  48.   server.on("/", handleRoot);
  49.   server.on("/led", handleLed);
  50.   // 启动服务器
  51.   server.begin();
  52.   Serial.println("HTTP server started");
  53. }
  54. void loop() {
  55.   server.handleClient(); // 处理客户端请求
  56. }
复制代码


当然如果需要的话我们可以替换一点元素,比如说增加额外的CSS,这样的话页面会变得更加美观。


FireBeetle 2 ESP32-C5 HTTP Server实现网页控制LED闪烁图2

修改后的HTML内容(AI生成,这效果真的好)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail