2015年8月26日

ESP-WROOM-02でIoTデバイスっぽいものを作る(1)

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

前回(ESP-WROOM-02を使ってみる)の続き。

サンプルを漁ってたらCaptive Portalを使ったものがあったので、早速この機能を使って何か作ることに。
Captive Portal = APに接続したら強制的にWebページ(普通は認証ページなど)を開かせる、公衆無線LANに良くあるアレです。
そして、
1. ESP-WROOM-02をアクセスポイントにできる
2. Captive Portalが使える
3. ESP-WROOM-02がクライアントになれる
ということは...
スマホだけで家のアクセスポイントへの接続設定が出来るIoTデバイスを作れる訳です。

想定
1. 利用者がIoTデバイスの電源を入れる
2. 取説に書いてある特定のSSIDのAPが出現するので、それにスマホで接続する
3. 設定ページが自動的に立ち上がる
4. 家に既設のAPを選択し、パスワードを入力して設定
5. 自動的に再起動して、今度はクライアントとして家のLANにぶら下がってくれる

こういう物が出来れば素敵... というわけで、まずは雛形として使えそうなものを作ってみました。

9SQ/esp8266-wifi-setup (GitHub)

Arduino core for ESP8266を使っているので、前回の記事でも書いたようにArduino IDEへのボード情報の設定が必要です。

実際のスマホでの設定画面はこんな感じ。


その時のシリアルモニタはこんな感じ。


動作としては、
1. EEPROMを読みに行って、設定が存在しない場合はSetup Modeになる
2. 一旦、STA modeで周辺のアクセスポイントを検索して保存
3. AP modeに切り替えて、設定されたSSIDでアクセスポイントを立てる
4. WebサーバとDNSサーバも立てる
5. 接続してきたクライアントはCaptive Portalで設定ページに飛ばす
6. 設定ページから入力されたSSIDとパスワードをURLデコード
7. EEPROMに書き込み
8. 再起動
9. EEPROMを読みに行って、設定されたSSIDのAPに接続する
10. 接続を確立したらWebサーバを立てる
という流れです。

・設定したSSIDのAPに接続できなかったら、再びSetup Modeになります。
・設定後にシリアルモニタに出力されるIPアドレスに接続するとWebサーバが立ち上がってますが、ここにアクセスすると接続設定のリセットが可能です。

あとは、これにセンサーなどを接続してあげれば、同一LAN内からブラウザで値を覗いたり、外部のサーバにデータを定期的に送るようなデバイスが作れると思います。

実はまだ手を入れるところ(接続確立後に何らかの問題で接続断したときの再接続処理など)が結構残っているので、ぼちぼち修正する予定...と並行して次回は実際に何か作ってみたものを載せようと思います。

1 件のコメント:

  1. 接続状態確認に”WiFi.status()”を使うとできますよ!

    返信削除

記事へのコメントはいつも確認している訳ではないので、お返事が遅れる場合があります。
ご質問やご意見は twitter@9SQ へお送り頂けると早くお返事できると思います。