NodeMCU esp8266 不断断开我的笔记本电脑与路由器的连接

问题描述

我在家里做过家庭自动化。一切顺利,但每次当我打开 nodemcu esp8266 时,它都会断开我的笔记本电脑与家庭 wifi 的连接,有时我的笔记本电脑卡住了,无法重新连接。并且只有在其他设备保持连接的情况下才会发生这种情况。

这是我用过的代码

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

/* Put your SSID & Password */
const char* ssid = "***";
const char* password = "***";


ESP8266WebServer server(80);

int ledPin1 = 5; // GPIO5 D1
int ledPin2 = 4; // GPIO4 D2
int ledPin5 = 14; // D5
int ledPin6 = 12; // D6

void handle_Led1(){
  digitalWrite(ledPin1,!digitalRead(ledPin1));
  String mess = String(digitalRead(ledPin1)) + "," + String(digitalRead(ledPin2)) + "," + String(digitalRead(ledPin5)) +"," + String(digitalRead(ledPin6));
  server.send(200,"text/plain",mess); 
}

void handle_Led2(){
  digitalWrite(ledPin2,!digitalRead(ledPin2));
  String mess = String(digitalRead(ledPin1)) + ",mess); 
}

void handle_Led5(){
  digitalWrite(ledPin5,!digitalRead(ledPin5));
  String mess = String(digitalRead(ledPin1)) + ",mess); 
}
void handle_Led6(){
  digitalWrite(ledPin6,!digitalRead(ledPin6));
  String mess = String(digitalRead(ledPin1)) + "," + String(digitalRead(ledPin6));
    server.send(200,mess); 
}
void handle_OnCheck() {
  String mess = String(digitalRead(ledPin1)) + ",mess); 
}

void handle_NotFound(){
  server.send(404,"Not found");
}

void setup() {
  pinMode(ledPin1,OUTPUT);
  pinMode(ledPin2,OUTPUT);
  pinMode(ledPin5,OUTPUT);
  pinMode(ledPin6,OUTPUT);
  digitalWrite(ledPin1,0);
  digitalWrite(ledPin2,0);
  digitalWrite(ledPin5,0);
  digitalWrite(ledPin6,0);
  Serial.begin(9600);
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid,password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
  }
  
  server.on("/check",handle_OnCheck);
  server.on("/LED1",handle_Led1);
  server.on("/LED2",handle_Led2);
  server.on("/LED5",handle_Led5);
  server.on("/LED6",handle_Led6);
  
  server.onNotFound(handle_NotFound);

  server.begin();
  Serial.println("HTTP server started");
  Serial.println(WiFi.localIP());
}
void loop() {
  server.handleClient();

}

解决方法

我想通了。我闪现了一个具有 AP 模式的代码,其名称与我的家庭 wifi 相同,这让我的笔记本混淆了哪个网络是什么。

上传新代码并没有删除前一个代码,因为它只是覆盖了它在内存中的空间。

所以我使用 esptool 将空文件闪存到 esp8266。然后上传代码。

esptool.py --port /dev/ttyUSB0 write_flash 0x000000 blank_1MB.bin 
esptool.py --port /dev/ttyUSB0 write_flash 0x100000 blank_1MB.bin
esptool.py --port /dev/ttyUSB0 write_flash 0x200000 blank_1MB.bin 
esptool.py --port /dev/ttyUSB0 write_flash 0x300000 blank_1MB.bin 

此代码将清除 esp8266 的内存。