とりあえず動いたので、次は Wi-Fi への接続。ESP8266 のサンプルを見ると、ssid/pass をスケッチの中に直書きしているものが多いが、これだと違う環境に持って行った時にコンパイルし直さないといけなくなる。次のようにしたい。
- 最初は soft AP モードで立ち上げて、パソコンなどから ssid/pass が入力できるようにする。
- 入力された ssid/pass を保存して、接続する。
- 次からは、保存された ssid/pass を使って接続する。
WiFiManager
というライブラリを使ったら簡単に実現できる。インストールも簡単。Arduino IDE の「ライブラリをインクルード/ライブラリを管理」でライブラリマネージャを開く。下の方に WifiManager
があるので、インストール。
サンプルスケッチの中の WifiManager/AutoConnect
を開く。
コンパイルしてみる。かなり時間かかる(2.4 GHz Core 2 Duo で1分30秒)。スケッチ 323857バイト(31%), グローバル変数 34984バイト(42%)。
ESP8266 に書き込んで走らせてみた。"AutoConnectAP" という WiFi アクセスポイントが出現している。
これに接続すると、次のような画面が出てくる。
"Configure WiFi" を選ぶと、次のように、利用できるアクセスポイントが表示される。SSID とパスワードを入力。
次のような表示に変わる。接続に成功すると、この画面は自動的に消える。
Arduino IDE のシリアルモニタにログが表示されている。次のようになった。最後に "yeey :)" って言ってるから、接続できたんでしょう。
*WM:
*WM: AutoConnect
*WM: Connecting as wifi client...
*WM: Using last saved values, should be faster
*WM: Connection result:
*WM: 0
*WM: SET AP STA
*WM:
*WM: Configuring access point...
*WM: AutoConnectAP
*WM: AP IP address:
*WM: 192.168.4.1
*WM: HTTP server started
*WM: Request redirected to captive portal
*WM: Handle root
*WM: Request redirected to captive portal
*WM: Handle root
*WM: Request redirected to captive portal
*WM: Handle root
*WM: Info
*WM: Sent info page
*WM: Request redirected to captive portal
*WM: Handle root
*WM: Scan done
*WM: ########
*WM: -43
*WM: Sent config page
*WM: Request redirected to captive portal
*WM: Handle root
*WM: WiFi save
*WM: Sent wifi save page
*WM: Connecting to new AP
*WM: Connecting as wifi client...
*WM: Connection result:
*WM: 3
connected...yeey :)
なお、リセットをかけてもう一度立ち上げると、今度は直接接続してくれる。
*WM: AutoConnect
*WM: Connecting as wifi client...
*WM: Using last saved values, should be faster
*WM: Connection result:
*WM: 3
*WM: IP Address:
*WM: 192.168.1.22
connected...yeey :)
なんかめちゃくちゃ簡単やなあ。もっとあちこち手こずるかと思ったけど。
これで何をやりたいかと言うと、電波時計を合わせるための微弱電波発信機を作りたい。こういうやつです。WiFi でインターネットの ntp サーバにつないで、読み込んだ時刻を電波で発信する。いくつか製作例があるが、「オールドレンズじゃないよ往年のニッコール(仮)」さんの記事を参考にしようと思っている。