ESP8266은 어떻게 든 wifi 액세스 데이터를 기억합니까?


10

오늘 저는 ESP8266을 사용하여 OTA를 시도하고 웹 서버를 작성했습니다. 오류를 찾기 위해 스케치를 다음 줄로 줄였습니다.

#include <ESP8266WebServer.h>

ESP8266WebServer server(80);

void setup() {
  Serial.begin(115200);
  server.on("/", []() {
    Serial.println("Sending response...");
    server.send(200, "text/plain", "Hi there!");
  });
  server.begin();
}

void loop() {
  server.handleClient();
}

Wi-Fi 네트워크에 연결하기위한 코드가 없습니다. 그러나 칩은 여전히 ​​부팅 할 때마다 로컬 WPA2 보안 네트워크에 연결됩니다. 칩을 핑 (ping) 할 수 있고 브라우저는 "Hi there!" http를 통해 메시지가 표시되면 직렬 메시지가 인쇄됩니다.

이것이 어떻게 가능한지? ESP8266은 완전히 덮어 쓰여지지 않은 오래된 OTA 데이터로 인해 Wi-Fi 정보를 어떻게 유지합니까?

나는 platformio를 사용하고 있습니다. 내 전체 platformio.ini는 다음과 같습니다.

[env:d1_mini]
platform = espressif8266
board = d1_mini
framework = arduino

여기에 컴파일 및 업로드 로그를 게시했습니다 : https://pastebin.com/BtGrFZiu

답변:


12

예. 일반적으로 마지막 WiFi 자격 증명은 플래시에 저장되며 ESP8266은 부팅시이 데이터를로드하고 마지막으로 알려진 WiFi에 다시 연결합니다. https://github.com/esp8266/Arduino/issues/2843#issuecomment-334250100을 참조 하십시오 .

SDK는 Wi-Fi 자격 증명을 포함한 일부 정보를 플래시 섹터에 저장합니다.

해당 섹터는 업데이트 후 빠른 시작을 위해 깜박임 사이에 유지됩니다. 부팅시 스케치가 실행되기 전에 SDK가 wifi 자격 증명을 검색하고 빠른 연결을 시도합니다.

https://github.com/esp8266/Arduino/blob/master/doc/esp8266wifi/station-class.rst#setautoconnect에WiFi.setAutoConnect(autoConnect) 설명 된 기능 을 사용하여이 동작을 제어 할 수 있습니다 . Espressif SDK 함수를 호출합니다 ( API 참조 ).wifi_station_set_auto_connect

여기에 이미지 설명을 입력하십시오

한마디로 : 이것은 정상적인 행동입니다. 명시 적으로 지시하지 않는 한 ESP8266이 WiFi에 연결되지 않도록하려면 WiFi.setAutoConnect(autoConnect)처음에 전화 하십시오.

편집 : 펌웨어 코드 내에서을 사용할 수 있습니다 system_restore. 설명서에는 WiFi 관련 데이터를 재설정한다고 나와 있습니다. 이전 설정이 삭제됩니다. 이 기능은 Arduino-ESP8266의 https://github.com/esp8266/Arduino/blob/master/tools/sdk/include/user_interface.h 에서 포함 할 수 있습니다 . 나는 이것을 직접 시도하지 않았지만 실제로 보안에서 중요한 정보를 플래시에서 삭제한다고 말할 수는 없습니다.

알파벳

또는 알다시피 전체 플래시를 지우면 WiFi 데이터가 확실하게 제거됩니다. 예를 들어 옵션 esptool.py과 함께 사용하면 됩니다 . 그런 다음 이전 WiFi 설정을 사용하지 않는 새 펌웨어를 플래시 할 수 있습니다 (그러나 기본 액세스 포인트를 다시 열 것임).erase_flashpython esptool.py -p COM6 erase_flash

그런 다음 ESP.eraseConfig관련 플래시 섹터 만 지우는 것도 있습니다 .


감사합니다. 플래시에서 이전에 설정 한 자격 증명을 지우는 방법이 있습니까? 편집 : esptool을 사용하여 가능하다는 것을 알았습니다 : esp8266.com/viewtopic.php?f=32&t=8204
Geier

1
@Geier가 업데이트되었습니다.
막시밀리안 게르 하트

1
WiFi.disconnect ()도 기억 된 자격 증명을 제거합니다
Juraj
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.