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 或以上版本)。
#include // 替换为你的 Wi-Fi 名称和密码 const char* ssid = "Your_WiFi_Name"; const char* password = "Your_WiFi_Password";
进入 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());
}在实际项目中,网络可能会短暂中断。仅靠基础代码在断线后无法自动恢复,以下提供包含自动重连与状态监测的完整代码:
#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();
}
}
// 此处放置你的主要业务逻辑代码
}在上面的代码中我们已经熟悉了ESP32的WiFi配置连接和原理,那么下面我们用AP模式+STA模式一起来实现通过手机来配置ESP32的wifi账号和密码,还能通过手机远程控制ESP32开发板板载灯的实例
| ESP32_wifi 下载这个ESP32_wifi源代码,用ArduinoIDE烧录代码,然后用手机连接热点:ESP32-WiFi-Setup 密码是 12345678 |
然后用手机游览器输入IP地址192.168.4.1,就可以连接自家的wifi,还能控制板载灯的开关。
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物联网,工控数显,嵌入式软硬件开发,科创教育,产品定制,生产,方案解决...