Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

ESP8266のWi-Fi接続時のSSIDとPassをブラウザから設定する。

注:このページでIPアドレスについて書いてある部分については要検証
  ルータのDHCPでIPアドレスに制限を設定しているため
  割り当てられるIPアドレスに関して混乱が生じているが
  それを未確認のまま書いているため。
  通常は 192.168.4.1 にアクセスすればいいようだ。

ここの受け売り。
https://qiita.com/exabugs/items/2f67ae363a1387c8967c

ESP8266のWi-Fi接続時には無線ルーター固有のSSIDとPassを指定する必要がある。
普通はスケッチに書き込んである。

上はサンプルのAdvancedWebServerの例だ。
うちでは無線ルータが2台あるので2組書いてあり、片方をコメント・アウトしてあるが、普通は1組。

自分で何か作って自分が自宅で使うなら問題ない。
問題は他人に使わせる場合だ。
Arduino IDE環境を持ってて自分でスケッチを書き換えられる人なんて残念ながらあまりいない。
なので、使い始めのときにWi-Fi接続なしでSSIDとPasswordを書き換えられるようにしておく必要がある。
それを可能にしてくれるのが上のサイトで紹介されている方法、スケッチだ。

要するに、起動時のモード選択によってSPIFFS(SPI Flash File System)にSSIDとPassを保存したり読み込んだりするという仕組みらしい。

ここではESP8266ボードとしてこれを使った。

WeMosだかNodeMcuだかよくわからないESP8266モジュール。
WeMosだかNodeMcuだかよくわからないESP8266モジュール。2

参考サイトのスケッチでは、サーバー・モードで起動させてIDやPassをブラウザから設定するには、リセット・ボタンを押して再起動してから1秒後の時点でGPIO0がLOWになっている必要がある。

回路図によれば、都合よくS1のリセット・ボタンも備わっているし、GPIO0がS2押下でLOWに出来るようになっているので、

全く手を加えず、USBにつなぐだけで試すことができた。

スケッチを書き込んでただリセット・ボタンだけ押すと以下のようにシリアル・モニターに表示される。
SSIDとPASSは空欄だ。

赤枠で囲った部分のIPアドレスを覚えておいて、今度はリセット後すぐにS2を1秒以上押し続けると以下のようになる。
SSIDにはMACアドレスが表示されている。

ちなみに、リセット時にS2を押していてはいけない。
この場合スケッチ書き込みモードで起動してしまう。
リセット・ボタンだけを押して離し、その後すぐにS2スイッチを押し、そのまま1秒以上S2スイッチを押し続ける。
この状態で先ほど控えたアドレスをブラウザで表示させると以下のようになる。

これで、SSIDとPassの設定ができるというわけだ。

と、ここまではいいのだが、どうも設定が保存されていないような、読み込めていないような…。
その後再起動してもSSIDやPassが表示されることが無かった。

実は、SPIFFSのサイズを設定せずno SPIFFSになっていた。
以下のようにしたらちゃんと保存できた。

再起動後はちゃんとSSIDとPassが表示された。

なお、以上との関連は不明だが、NodeMCUもどきのWeMosとシルクのあるボードが4枚ある。
昨日この記事を書き始めて、3枚がWebServerとして接続できなかった。
今日は4枚とも問題なく機能する。
ボードには何もしてないので、PCを再起動したことか無線ルータを再起動したことかのいずれかがボードが復調した原因と考えられるが不明。

追記(2020/02/27)
 原因のよくわからない以下のようなトラブルが発生した。
  ESP-WROOM-02の自作モジュールで上を試した。
  当初はうまくいったが、じきにIPアドレスにつながらなくなった。
  ルーターの LAN > DHCPリース で確認してみた。
  ちゃんとMACアドレスとIPアドレスが表示されていた。
  つながらないので放置した。
  再度確認した。
  該当するMACアドレスもIPアドレスも表示されなくなった。
  ルータの再起動をした。
  MACアドレスは同じだが違うIPアドレスで表示された。
  IPアドレスの指定を自動から手動から変更して固定した。
  ブラウザから接続できるようになった。
 この間シリアル・モニターにもIPアドレスは表示されなかったと思う。
 なのに、つながってたときのアドレスをブラウザで表示しようとしていた。
 どの段階で不具合が発生していたのか不明だ。

追記(2020/02/29)
ESP8266上のアクセス・ポイントのIPアドレスに関して疑問が出て来た。
上のサイトでは当然のように 192.168.4.1 となっている。
うちでやると、192.168.4.1 だったり 192.168.11.34 だったり 192.168.11.40 だったりいろいろだ。
192.168.4.1 になるとうちのルーターからは接続できないので、スマホから接続してスマホでブラウザを立ち上げなければならなくなる。
キーボードが使えない文字の打ち込みはえらく面倒だ。
そもそもIPアドレスがどうやって決まるのかがわからない。

追記(2020/03/01)
初期設定は192.168.4.1のようだ。
変更したいときはWiFi.config()で決め打ちする。
何で192.168.11.##になったかは不明。
ルータ側で規制する方法を探したら自分の記事しか出て来なかった。

このエントリーをはてなブックマークに追加

Posted under: ESP8266


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.