当前位置: 首页 > news >正文

ESP32-S3 控制 WIFI

ESP32-S3 WiFi 实验 —— 手机网页控制 LED

在本实验中,我们将学习如何让 ESP32-S3 通过 WiFi 搭建一个简单的网页服务器,从而实现手机端网页控制开发板上的 LED 灯开关。


一、实验名称

WiFi实验


二、接线说明

设备 ESP32-S3
LED模块 D1 3号引脚

注意事项

  1. 手机和 ESP32-S3 必须在同一网络(同一局域网内),IP 地址在同一网段(例如 192.168.1.xxx)。
  2. 通过串口监视器获取 ESP32-S3 的 IP 地址,然后在手机浏览器输入该 IP 地址即可访问网页。

三、实验现象

程序下载成功后:

  1. ESP32-S3 连接 WiFi。
  2. 串口监控输出板子的 IP 地址。
  3. 在手机浏览器输入该 IP 地址访问网页。
  4. 网页上提供两个链接,点击即可控制 LED 灯开/关。

四、完整代码示例

#include "public.h"
#include <WiFi.h>const char* ssid     = "puzhong88";    // WiFi 名称
const char* password = "PUZHONG88";    // WiFi 密码WiFiServer server(80);                  // 创建 Web 服务器,端口 80// LED 控制引脚
#define led_pin   3// WiFi 连接函数
void wifi_connect(void)
{Serial.print("Connecting to ");Serial.println(ssid);WiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}Serial.println("");Serial.println("WiFi connected.");Serial.println("IP address: ");Serial.println(WiFi.localIP());
}void setup(){Serial.begin(115200);pinMode(led_pin, OUTPUT);      // 设置 LED 引脚为输出模式delay(10);wifi_connect();                // 连接 WiFiserver.begin();                // 启动服务器
}void loop(){WiFiClient client = server.available();   // 监听客户端请求if (client) {                             // 如果有客户端连接Serial.println("New Client.");String currentLine = "";                // 保存客户端请求数据while (client.connected()) {            // 客户端连接期间循环if (client.available()) {             // 如果有数据可读char c = client.read();             // 读取字节Serial.write(c);if (c == '\n') {                    // 新行表示 HTTP 请求结束if (currentLine.length() == 0) {  // 两个换行符,HTTP 请求结束// 发送 HTTP 响应头client.println("HTTP/1.1 200 OK");client.println("Content-type:text/html");client.println();// 网页内容client.print("Click <a href=\"/H\">here</a> to turn the LED on pin 3 on.<br>");client.print("Click <a href=\"/L\">here</a> to turn the LED on pin 3 off.<br>");client.println();break;} else {currentLine = "";}} else if (c != '\r') {  // 忽略回车currentLine += c;}// 根据请求控制 LEDif (currentLine.endsWith("GET /H")) {digitalWrite(led_pin, HIGH);   // 打开 LED}if (currentLine.endsWith("GET /L")) {digitalWrite(led_pin, LOW);    // 关闭 LED}}}// 关闭客户端连接client.stop();Serial.println("Client Disconnected.");}
}

五、代码讲解

  1. WiFi 连接
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) { ... }
  • ESP32-S3 连接指定 WiFi,并通过串口输出连接状态和 IP 地址。
  1. 网页服务器
WiFiServer server(80);
server.begin();
  • 创建并启动一个 HTTP 服务器,监听端口 80。
  1. 处理客户端请求
WiFiClient client = server.available();
  • 当有客户端连接时,读取 HTTP 请求,并判断请求路径 /H/L 来控制 LED。
  1. 网页响应
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.print("Click <a href=\"/H\">here</a> ...");
  • 发送 HTTP 响应头和网页内容,生成简单的控制界面。

六、实验效果

  1. ESP32-S3 连接到 WiFi,串口显示 IP 地址,例如:192.168.1.123
  2. 手机浏览器输入该 IP 地址即可访问网页。
  3. 网页上点击链接即可控制 LED 灯开/关。

七、进阶应用

  1. 多路控制
    可扩展多个 LED 或继电器,通过网页控制多路设备。

  2. 数据反馈
    在网页上显示 LED 状态或传感器数据,实现双向控制。

  3. 智能家居
    结合温湿度传感器、继电器、摄像头等,实现物联网智能控制。


八、总结

本实验通过 ESP32-S3 WiFi 模块 实现网页控制 LED,掌握了:

  • WiFi 连接与状态检查
  • HTTP 服务器搭建
  • 客户端请求解析与设备控制

这是学习 ESP32 IoT 项目、智能家居与远程控制的重要基础。

http://www.sczhlp.com/news/13162/

相关文章:

  • ESP32-S3 控制 红外遥控
  • ESP32-S3 控制 舵机
  • 代码随想录算法训练营第八天(字符串篇)|Leetcode151翻转字符串中的单词,卡码网右旋转字符串,Leetcode28实现Strstr(),Leetcode459重复的子字符串
  • 数论专题-欧拉定理与费马小定理
  • ESP32-S3 控制 OLED液晶显示
  • Arduino PWM 引与 Atmega 引脚对应关系
  • ESP32-S3 控制 超声波测距
  • 无痕检测是否注册iMessage服务,iMessages数据筛选,iMessage蓝号检测协议
  • 电脑win10-菜单栏-搜索栏-鼠标一放入输入框中或者点进二级菜单中就会反复失效-bldbaseservice
  • ESP32-S3 控制 DHT11温湿度传感器
  • ESP32-S3 控制 RTC实时时钟
  • 前端Vite介绍(现代化前端构建工具,由尤雨溪创建,旨在显著提升开发体验和构建效率)ES模块(ESM)、与传统Webpack对比、Rollup打包
  • 8.16
  • ESP32-S3 控制 DS18B20温度传感器
  • Uniapp 之使用renderjs实现APP中腾讯地图搜索定位选点
  • [论文笔记] Indirection-bounded Callgraph Analysis
  • c语言矩阵的倒置
  • ESP32-S3 控制 WS2812 RGB 彩灯
  • 一步一步学习使用LiveBindings(15)TListView进阶使用(3),创建自定义的列表项打造天气预报程序
  • ESP32-S3 控制 ADC
  • ad-hoc 合集
  • ESP32-S3 控制 RGB彩灯
  • 导航页 - zlay
  • c语言寻找马鞍点
  • ESP32-S3 控制 串口通信
  • 数论专题-最大公约数
  • ESP32-S3 控制 PWM呼吸灯
  • AI去、穿、换装软件下载,无内容限制,偷偷收藏
  • python中的reduce函数 - 实践
  • 在Android APK中嵌入Meterpreter的技术解析