arduino+esp32

安装库

连接开发板

编程

复制代码
#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);
}

运行结果

相关推荐
Keith Guo3 天前
Event Task Matrix(ETM)工作机制
驱动开发·esp32·etm
星野云联AIoT技术洞察5 天前
ESP32 接入 Meta Muse:Gadget SDK 能做什么,为什么不能直接做商业设备
esp32·agent·token·边缘ai·meta muse·mcu选型
ITKEY_8 天前
VSCode Arduino cli 开发ESP32
esp32·iot
J_bean8 天前
Mac(Intel 芯片)ESP32 USB 串口驱动安装教程
esp32·iot·usb 串口驱动
星野云联AIoT技术洞察9 天前
ESP32-P4 摄像头到屏幕的数据链路:CSI、ISP、PPA、缓冲与 DSI 如何协同
esp32·esp-idf·esp32-p4·摄像头集成·芯片集成·乐鑫芯片
星野云联AIoT技术洞察11 天前
ESP32-P4 没有 Wi-Fi,产品该怎么联网:C6 协处理器、总线与双固件边界
esp32·esp32-s3·esp32-p4·芯片选型·esp-hosted·设备联网
ITKEY_11 天前
Arduino IDE开发ESP32环境搭建到helloworld
ide·esp32
国产化创客12 天前
ESP32音频/语音技术(4)AudioTools 库及转发播放程序分析
物联网·音视频·esp32
夏虫不可与之言冰16 天前
Windows WSL2 (Ubuntu) 搭建 ESP‑IDF 6.1 开发环境全过程演示
linux·windows·ubuntu·esp32·乐鑫科技·乐鑫eim·乐鑫代理商
逗脑IDE20 天前
零基础学ESP32:RFID无线射频卡——让ESP32拥有“刷卡“能力!
开发语言·网络·人工智能·python·esp32·硬件开发