安装库


连接开发板

编程
#include <WiFi.h>
// ================= WiFi 配置 =================
const char* WIFI_SSID = "REDME K80"; // ⚠️ 仅支持 2.4GHz
const char* WIFI_PASS = "123123123"; // ⚠️ 推荐 WPA2-PSK(AES)
const uint32_t WIFI_TIMEOUT_MS = 15000; // 连接超时时间(ms)
// =============================================
/**
* @brief 将 WiFi 状态码转换为人类可读的错误信息
*/
const char* getWifiStatusStr(wl_status_t status) {
switch (status) {
case WL_NO_SHIELD: return "未检测到WiFi模块(硬件故障)";
case WL_IDLE_STATUS: return "空闲状态(尚未开始连接)";
case WL_NO_SSID_AVAIL: return "❌ 找不到指定的SSID(请检查名称或2.4G频段)";
case WL_SCAN_COMPLETED: return "扫描完成(非连接状态)";
case WL_CONNECTED: return "✅ 已成功连接";
case WL_CONNECT_FAILED: return "❌ 连接失败(通常是密码错误或WPA3兼容问题)";
case WL_CONNECTION_LOST: return "⚠️ 连接丢失(信号弱或路由器主动断开)";
case WL_DISCONNECTED: return "已断开连接";
default: return "未知状态";
}
}
void setup() {
Serial.begin(115200);
delay(1000); // 等待 USB-CDC 枚举稳定
Serial.println("\n===== ESP32-C3 WiFi 诊断测试 =====");
Serial.printf("目标热点: [%s]\n", WIFI_SSID);
WiFi.mode(WIFI_STA);
WiFi.setAutoReconnect(false); // 关闭自动重连,便于捕获初始连接的真实错误
WiFi.begin(WIFI_SSID, WIFI_PASS);
Serial.print("正在连接");
uint32_t startTime = millis();
wl_status_t lastStatus = WL_IDLE_STATUS;
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
// 实时捕获并打印状态变化
wl_status_t currentStatus = WiFi.status();
if (currentStatus != lastStatus) {
Serial.printf("\n[状态变更] %s\n", getWifiStatusStr(currentStatus));
lastStatus = currentStatus;
}
// 超时退出
if (millis() - startTime > WIFI_TIMEOUT_MS) {
Serial.println("\n================================");
Serial.println("⏱️ 连接超时!");
Serial.printf("最终状态码: %d\n", (int)WiFi.status());
Serial.printf("诊断结果: %s\n", getWifiStatusStr(WiFi.status()));
Serial.println("================================");
return;
}
}
// ✅ 连接成功,打印网络信息
Serial.println("\n================================");
Serial.println(getWifiStatusStr(WL_CONNECTED));
Serial.println("--------------------------------");
Serial.printf("IP 地址 : %s\n", WiFi.localIP().toString().c_str());
Serial.printf("子网掩码 : %s\n", WiFi.subnetMask().toString().c_str());
Serial.printf("网关 : %s\n", WiFi.gatewayIP().toString().c_str());
Serial.printf("DNS : %s\n", WiFi.dnsIP().toString().c_str());
Serial.printf("MAC 地址 : %s\n", WiFi.macAddress().c_str());
Serial.printf("信号强度 : %d dBm\n", WiFi.RSSI());
Serial.printf("信道 : %d\n", WiFi.channel());
Serial.println("================================");
}
void loop() {
// 纯测试代码,loop 保持空闲
delay(1000);
}
运行结果
