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

NodeMCU ESP8226看门狗复位问题及WiFi连接代码求助

排查NodeMCU ESP8266 WiFi连接时看门狗复位问题

嘿,你的问题很典型——看门狗复位(rst cause:4)十有八九是因为代码里的死循环没给系统留出处理后台任务的时间!咱们一步步来解决:

核心问题:阻塞式循环触发看门狗

你代码里的这个while循环:

while(!(WiFi.status() == WL_CONNECTED)){
  Serial.print("...");
}

这个循环会疯狂占用ESP8266的CPU,让它完全没时间处理WiFi连接的后台逻辑(比如握手、IP分配这些关键步骤)。看门狗定时器会误以为程序“卡死”,直接触发复位来强制恢复系统。

快速修复方案

给循环加个延时,同时增加超时判断避免无限循环,还要注意ESP8266的WiFi库细节:

#include <ESP8266WiFi.h> // 划重点!ESP8266要用这个库,不是通用的WiFi.h

char ssid[] = "wifinetwork";
char pass[] = "admin";

void setup(){
  Serial.begin(115200);
  WiFi.disconnect();
  Serial.println("================= S T A R T I N G ==============");
  
  WiFi.begin(ssid, pass);
  unsigned long startMillis = millis();
  const unsigned long timeout = 10000; // 设置10秒连接超时

  while(WiFi.status() != WL_CONNECTED){
    Serial.print("...");
    delay(500); // 关键:给系统留足时间处理WiFi后台任务
    // 超时退出,避免一直卡循环
    if(millis() - startMillis > timeout){
      Serial.println("\nWiFi连接超时!");
      break;
    }
  }

  if(WiFi.status() == WL_CONNECTED){
    Serial.println("\n==== I AM CONNECTED TO THE WIFI ==== ");
    Serial.println("Your IP is: ");
    Serial.println(WiFi.localIP());
  }
}

void loop(){
  // 这里放你的主程序逻辑
}

其他可能的排查方向

如果加了延时还是有问题,再检查这几点:

  • 电源供电不足:ESP8266连接WiFi时电流会飙升到200mA左右,电脑USB口或劣质充电宝可能供电不稳,导致看门狗误触发。建议用5V/1A以上的电源,或者给模块加个1000uF的电解电容滤波。
  • 引脚冲突:如果NodeMCU接了其他外设(比如传感器、LED),检查有没有占用WiFi相关引脚(比如GPIO1/GPIO3是串口引脚,GPIO16是睡眠引脚,误用会影响系统稳定性)。
  • 固件版本问题:如果用的是旧版ESP8266核心库,尝试更新到最新稳定版,有些旧版本的WiFi驱动存在bug。

内容的提问来源于stack exchange,提问作者Dapper

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:47:42