首页 动态 版块 商城 我的
 退出
游客  
等级:
金币:
经验值:

ESP32的WiFi配置功能连接路由器 局域网AP/STA模式控制教程

  2387 
 0
 3
RASPI   ydxhuo.com 
文章主图

一:功能介绍

ESP32 之所以被称为“物联网神卡”,核心原因就在于它集成了强大的 Wi-Fi 和蓝牙功能。

在 Wi-Fi 开发中,主要有两种模式:

1.AP 模式 (Access Point):ESP32 自己产生热点,手机连接它(像配置路由器一样)。

2.STA 模式 (Station):ESP32 像手机一样连接家里的路由器(本章重点)。

连接上路由器后,ESP32 就拥有了访问互联网的能力,可以进行 NTP 对时、MQTT 通信、HTTP 请求等操作。



本期所用到的硬件:ESP32-S3 开发板、USB-TypeC数据线

网络环境:2.4 GHz Wi-Fi 网络(注意:ESP32-S3 不支持 5 GHz 频段 Wi-Fi)。

软件环境:Arduino IDE ,且已安装 ESP32 开发板(推荐 2.0.14 或以上版本)。

二:编程逻辑

1.引入头文件与定义网络凭证

#include 

// 替换为你的 Wi-Fi 名称和密码
const char* ssid     = "Your_WiFi_Name";
const char* password = "Your_WiFi_Password";

2.初始化串口wifi模式

进入 setup() 函数,将芯片设置为 Station 模式(客户端模式)并启动连接:

void setup() {
  Serial.begin(115200);
  delay(1000); // 留出时间让串口初始化

  Serial.println("\n正在初始化 Wi-Fi...");

  // 设置为客户端模式
  WiFi.mode(WIFI_STA);

  // 发起连接
  WiFi.begin(ssid, password);

  // 轮询等待连接成功
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("\nWi-Fi 连接成功!");
  Serial.print("IP 地址: ");
  Serial.println(WiFi.localIP());
}

3.断线重连机制

在实际项目中,网络可能会短暂中断。仅靠基础代码在断线后无法自动恢复,以下提供包含自动重连与状态监测的完整代码:

#include 

const char* ssid     = "Your_WiFi_Name";
const char* password = "Your_WiFi_Password";

// 记录上次检查时间,避免阻塞 loop
unsigned long previousMillis = 0;
const unsigned long interval = 10000; // 每 10 秒检查一次连接状态

void setup() {
  Serial.begin(115200);
  delay(1000);

  WiFi.mode(WIFI_STA);
  // 启用自动重连特性(ESP32 SDK 默认提供支持)
  WiFi.setAutoReconnect(true);

  Serial.print("正在连接到 ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  int timeout = 0;
  while (WiFi.status() != WL_CONNECTED && timeout < 20) { // 10秒超时
    delay(500);
    Serial.print(".");
    timeout++;
  }

  if (WiFi.status() == WL_CONNECTED) {
    Serial.println("\n[系统] Wi-Fi 连接成功!");
    Serial.print("[系统] IP 地址: ");
    Serial.println(WiFi.localIP());
    Serial.print("[系统] 信号强度 (RSSI): ");
    Serial.print(WiFi.RSSI());
    Serial.println(" dBm");
  } else {
    Serial.println("\n[错误] 初次连接超时,后台将继续尝试重连...");
  }
}

void loop() {
  unsigned long currentMillis = millis();

  // 定时检查 Wi-Fi 连接状态
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;

    if (WiFi.status() == WL_CONNECTED) {
      Serial.println("[状态] Wi-Fi 保持连接");
    } else {
      Serial.println("[警告] Wi-Fi 已断开,正在尝试重新连接...");
      WiFi.disconnect();
      WiFi.reconnect();
    }
  }

  // 此处放置你的主要业务逻辑代码
}

三:进阶代码

1.代码功能介绍

在上面的代码中我们已经熟悉了ESP32的WiFi配置连接和原理,那么下面我们用AP模式+STA模式一起来实现通过手机来配置ESP32的wifi账号和密码,还能通过手机远程控制ESP32开发板板载灯的实例


ESP32_wifi  下载这个ESP32_wifi源代码,用ArduinoIDE烧录代码,然后用手机连接热点:ESP32-WiFi-Setup 密码是 12345678



然后用手机游览器输入IP地址192.168.4.1,就可以连接自家的wifi,还能控制板载灯的开关。

2.代码解析

192.168.4.1 是 ESP32 自己创建的配置热点的访问地址。

代码逻辑很简单:

ESP32 启动后先创建一个 Wi‑Fi 热点,例如 ESP32-WiFi-Setup。

手机连接这个热点后,访问 192.168.4.1,就能进入 ESP32 内置的网页。

在网页输入家里路由器的 Wi‑Fi 名称和密码,ESP32 将它们保存到内部 Flash。

ESP32 用保存的信息连接路由器;连接成功后获得局域网 IP,例如 192.168.1.100。

以后手机也连接同一个路由器,访问这个局域网 IP,就能打开控制网页。

页面上的七种颜色按钮会请求 ESP32 的 /led 接口,ESP32 随即向 WS2812 发送对应的 RGB 数据,使灯变色;“关闭灯光”则发送全黑颜色值。

即使路由器连接失败,ESP32 的配置热点仍然可用,因此可以重新打开 192.168.4.1 修改 Wi‑Fi 信息。


技术支持(对本页存在疑难问题可联系我们工程师)

联系人:张工
电话:0755-32914578
QQ:2251000002
微信:扫下方二维码添加,请备注来意

提供:人工智能,IOT物联网,工控数显,嵌入式软硬件开发,科创教育,产品定制,生产,方案解决...

作者签名: www.ydxhuo.com   楼主  2026-08-04 14:30:58
回复列表
Powered by YDXHUO _VERSION
© 2017-2026 跃动芯火版权
您的IP: 216.73.216.31 , 2026-08-12 18:58:55
Powered by YDXHUO _VERSION
© 2017-2026 跃动芯火版权
(3) 分享
分享

请保存二维码或复制链接进行分享

取消
免责声明
1、本站资源,均来自网络与个人作者,所有资源和文章仅限用于学习和研究目的 。
2、不得用于商业或非法用途,否则,一切责任由该用户承担 !

侵权删除请致信 E-Mail:ydxho@qq.com
已有0次打赏