ESP32 微控制器 Wi-Fi 联网
FreeGuideOnline
最新
2026-07-12
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
3. 点击**好**保存设置。
4. 进入 **工具 > 开发板 > 开发板管理器**,搜索 **esp32**,找到 **esp32 by Espressif Systems** 并安装。
5. 安装完成后,在 **工具 > 开发板** 中选择你的 ESP32 具体型号(例如 `ESP32 Dev Module`),并选择正确的端口。
## 编写 Wi‑Fi 连接程序
### 基本连接代码
新建一个 Arduino 草图,复制以下代码:
```cpp
#include <WiFi.h>
// 替换为你的 Wi‑Fi 名称和密码
const char* ssid = "你的WiFi名称";
const char* password = "你的WiFi密码";
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println();
Serial.print("正在连接 ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println("Wi‑Fi 连接成功!");
Serial.print("IP 地址: ");
Serial.println(WiFi.localIP());
}
void loop() {
// 在此处添加后续逻辑
}
代码详解
#include <WiFi.h>:引入 ESP32 的 Wi‑Fi 库。const char* ssid和password:定义连接的 Wi‑Fi 名称与密码,需根据实际情况修改。WiFi.begin(ssid, password):启动 Wi‑Fi 连接。while (WiFi.status() != WL_CONNECTED):循环检测连接状态,期间会在串口打印“.”以表示正在连接。WiFi.localIP():获取当前设备在网络中分配的 IP 地址。
串口输出示例
连接成功时,串口监视器将显示类似以下内容:
正在连接 你的WiFi名称
..........
Wi‑Fi 连接成功!
IP 地址: 192.168.1.100
常见状态处理与错误检查
连接失败的可能原因
| 状态码常量 | 说明 |
|---|---|
WL_CONNECTED |
已成功连接 |
WL_NO_SSID_AVAIL |
找不到指定的 SSID |
WL_CONNECT_FAILED |
密码错误或其他原因导致连接失败 |
WL_IDLE_STATUS |
Wi‑Fi 模块空闲 |
WL_DISCONNECTED |
已断开连接 |
可以在 loop() 或 setup() 中根据 WiFi.status() 的返回值给出不同的提示。
if (WiFi.status() == WL_NO_SSID_AVAIL) {
Serial.println("错误:未找到此 Wi‑Fi 网络");
}
重新连接机制
无线网络可能不稳定,建议在 loop() 中加入断线重连逻辑:
void loop() {
if (WiFi.status() != WL_CONNECTED) {
Serial.println("连接已断开,尝试重新连接...");
WiFi.reconnect();
delay(5000);
} else {
// 执行联网任务
}
}
WiFi.reconnect() 会使用之前保存的 SSID 和密码再次连接。
进阶内容
使用 Wi‑Fi Multi 连接多个网络
WiFiMulti 库允许你预先存储多个 Wi‑Fi 凭据,设备会自动连接信号最强的可用网络。
#include <WiFi.h>
#include <WiFiMulti.h>
WiFiMulti wifiMulti;
void setup() {
Serial.begin(115200);
wifiMulti.addAP("网络1名称", "密码1");
wifiMulti.addAP("网络2名称", "密码2");
wifiMulti.addAP("网络3名称", "密码3");
Serial.println("正在自动连接最佳网络...");
while (wifiMulti.run() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println("连接成功!");
Serial.print("IP 地址: ");
Serial.println(WiFi.localIP());
}
固定 IP 地址配置
如果希望 ESP32 始终使用同一 IP,可使用 WiFi.config() 方法,在 WiFi.begin() 之前调用:
IPAddress local_IP(192, 168, 1, 200);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress dns(8, 8, 8, 8);
if (!WiFi.config(local_IP, gateway, subnet, dns)) {
Serial.println("固定 IP 配置失败!");
}
WiFi.begin(ssid, password);