You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ESP-WROOM-32在Arduino IDE中WiFi扫描输出乱码如何解决?

解决ESP-WROOM-32串口监视器乱码问题

我使用ESP-WROOM-32扫描所有可用WiFi并在Arduino IDE串口监视器显示结果,代码可正常上传至开发板,但串口监视器输出乱码,请求解决方法。代码如下:

#include "WiFi.h"

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

    // Set WiFi to station mode and disconnect from an AP if it was previously connected.
    WiFi.mode(WIFI_STA);
    WiFi.disconnect();
    delay(100);

    Serial.println("Setup done");
}

void loop()
{
    Serial.println("Scan start");

    // WiFi.scanNetworks will return the number of networks found.
    int n = WiFi.scanNetworks();
    Serial.println("Scan done");
    if (n == 0) {
        Serial.println("no networks found");
    } else {
        Serial.print(n);
        Serial.println(" networks found");
        Serial.println("Nr | SSID                             | RSSI | CH | Encryption");
        for (int i = 0; i < n; ++i) {
            // Print SSID and RSSI for each network found
            Serial.printf("%2d",i + 1);
            Serial.print(" | ");
            Serial.printf("%-32.32s", WiFi.SSID(i).c_str());
            Serial.print(" | ");
            Serial.printf("%4d", WiFi.RSSI(i));
            Serial.print(" | ");
            Serial.printf("%2d", WiFi.channel(i));
            Serial.print(" | ");
            switch (WiFi.encryptionType(i))
            {
            case WIFI_AUTH_OPEN:
                Serial.print("open");
                break;
            case WIFI_AUTH_WEP:
                Serial.print("WEP");
                break;
            case WIFI_AUTH_WPA_PSK:
                Serial.print("WPA");
                break;
            case WIFI_AUTH_WPA2_PSK:
                Serial.print("WPA2");
                break;
            case WIFI_AUTH_WPA_WPA2_PSK:
                Serial.print("WPA+WPA2");
                break;
            case WIFI_AUTH_WPA2_ENTERPRISE:
                Serial.print("WPA2-EAP");
                break;
            case WIFI_AUTH_WPA3_PSK:
                Serial.print("WPA3");
                break;
            case WIFI_AUTH_WPA2_WPA3_PSK:
                Serial.print("WPA2+WPA3");
                break;
            case WIFI_AUTH_WAPI_PSK:
                Serial.print("WAPI");
                break;
            default:
                Serial.print("unknown");
            }
            Serial.println();
            delay(10);
        }
    }
    Serial.println("");

    // Delete the scan result to free memory for code below.
    WiFi.scanDelete();

    // Wait a bit before scanning again.
    delay(5000);
}

解决方法

  • 波特率匹配检查:代码中Serial.begin(115200)设置的波特率为115200,必须确保Arduino IDE串口监视器右下角的波特率选项同样设置为115200,波特率不匹配是串口乱码最常见的原因。
  • 串口监视器参数设置:将串口监视器的换行模式设置为Both NL & CR,确保输出内容能正确换行;同时确认编码为UTF-8(Arduino IDE默认编码,若手动修改过需恢复)。
  • 硬件排查:
    • 使用带数据传输功能的USB线,避免使用仅充电的USB线;
    • 若使用外接USB转串口模块,需交叉连接引脚:ESP32的TX接模块RX,RX接模块TX;开发板自带USB转串口则检查USB接口是否接触良好。
  • 代码输出统一测试:代码同时使用了Serial.print()和Serial.printf(),虽ESP32支持两种方式,但可尝试统一使用Serial.printf()输出,排除兼容性问题。
  • 重启时机调整:上传代码后等待1-2秒,待开发板完全重启后再打开串口监视器,避免捕捉重启过程中的混乱数据。

内容的提问来源于stack exchange,提问作者Jordy Cyrille Mbarga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 14:40:21