ESP8266はどういうわけかwifiアクセスデータを覚えていますか?


10

今日私はESP8266をいじくり回し、OTAを試してWebサーバーを作成しました。エラーを見つけるために、スケッチを次の行だけに減らしました。

#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();
}

Wifiネットワークに接続するためのコードがないことに注意してください。ただし、チップは起動のたびにローカルのWPA2で保護されたネットワークに接続します。私はチップにpingを実行でき、ブラウザは「こんにちは!」http経由のメッセージでは、シリアルメッセージが出力されます。

これはどのようにして可能ですか?ESP8266はどういうわけかWifi情報を保持していますか?おそらく完全に上書きされなかった古いOTAデータのためでしょうか?

私は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は、wifi認証情報を含むいくつかの情報をフラッシュのセクターに保存します。

そのセクターは点滅の間に保持され、更新後の迅速な起動を可能にします。起動時に、スケッチが実行される前に、SDKはwifi認証情報を取得して、迅速な接続を試みます。

この動作はWiFi.setAutoConnect(autoConnect)https://github.com/esp8266/Arduino/blob/master/doc/esp8266wifi/station-class.rst#setautoconnectに記載されている関数を使用して制御できます。これにより、Espressif SDK関数が呼び出されますwifi_station_set_auto_connectAPIリファレンス

ここに画像の説明を入力してください

つまり、これは正常な動作です。ESP8266がWiFiに接続しないようにするには、明示的に指示しない限りWiFi.setAutoConnect(autoConnect)、最初に電話してください。

編集:ファームウェアコード内から、を使用できますsystem_restore。ドキュメントには、WiFi関連のデータがリセットされると記載されています。これにより、以前の設定が破壊されます。関数は、https://github.com/esp8266/Arduino/blob/master/tools/sdk/include/user_interface.hからArduino-ESP8266内に含めることができます。私はこれを自分で試したことがなく、実際にフラッシュからセキュリティクリティカルな情報を消去するとは言えません。

ABC

または、ご存知のように、フラッシュ全体をハード消去すると、WiFiデータが確実に消去されます。これはesptool.pyerase_flashオプションとともに使用することで実現できますpython esptool.py -p COM6 erase_flash。次に、以前のWiFi設定を使用しない新しいファームウェアをフラッシュできます(ただし、おそらくデフォルトのアクセスポイントが再び開きます)。

次にESP.eraseConfig、関連するフラッシュセクターのみを消去するものもあります。


ありがとうございました。以前にフラッシュから設定された資格情報を消去する方法はありますか?編集:esptoolで可能であることがわかりました:esp8266.com/viewtopic.php?f
Geier

1
@Geierが更新されました。
Maximilian Gerhardt

1
WiFi.disconnect()は記憶された資格情報も削除します
Juraj
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.