问题描述
我在家里做过家庭自动化。一切顺利,但每次当我打开 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 的内存。