Programming Technology

ESP-WROOM-02にArduinoでプログラムを書き込む(3)

Programming
スポンサーリンク

前回に続き、いよいよプログラミングに入っていきます。
【プログラミング】
早速、ソースプログラムすべてを載せます。
27行目のSSIDと28行目のセキュリティキーは、接続するネットワークのものを入れましょう。

これを、前回で環境構築したESP-WROOM-02に書き込むことで、WebブラウザからESP-WROOM-02にアクセスし、表示された2種類のボタン(On/Off)からLEDを点灯、あるいは消灯させることができます。
IMG_20170914_142946.jpg
それでは、ソースを上から順に追っていきましょう。
まずは必要なライブラリをインクルードしていきます。

続いて、INDEX_HTMLという文字列(char配列)が出てきますが、こちらはESP_WROOM_02に格納されたHTMLファイルで、いわばアクセスするサイトの中身ということになります。

直下の部分は、接続するWi-FiネットワークのSSIDとパスワード、そしてサーバーのインスタンスを生成します。
今回はSSIDとパスワードは決め打ち、サーバーはポート80番で接続するようにしています。

この後は、クライアントからのアクセスに対するコールバックメソッドを定義しています。
まず、handleRootは最初にアクセスを受けた際のイベント処理を定義し、アドレスにledというパラメータがあればhandleSubmitを呼び出し、それ以外は格納されているHTMLファイルをそのまま開くという処理になっています。

続いて、handleNotFoundはサーバー側、つまりESP-WROOM-02にエラーが発生した場合の処理を定義します。

こちらは、ブラウザのボタンを押した際のイベントを定義します。
(文字通り)handleLEDonが点灯、handleLEDoffが消灯の処理となります。

そして、クライアントへ送るステータスメッセージの内容を定義します。
イベント処理ではないのですが、前述のイベントメソッドの一部で呼び出されます。returnOKがアクセス成功、returnFailがアクセス失敗をクライアントに通知するメソッドです。

一連の準備が完了したところで、いよいよメイン処理に移ります。
まず、setupメソッドで出力ピン設定、シリアル通信とWi-Fi、そしてサーバーを起動します。
ピン設定は、IO0を出力ピンにするため、0(LEDPIN)をデジタル出力と設定します。
続いて、Wi-Fiおよびシリアル通信ですが、まずWiFi.biginメソッドで接続先のSSIDとパスワードを入れてネットワークへの接続を確立します。Wi-Fiへの接続は、WiFi.status()WL_CONNECTEDになるまで待機しています。
ESP-WROOM-02とのシリアル通信は必須ではないのですが、デバッグ処理に便利なため設定しています。ただ、ESP-WROOM-02の初期設定がボーレート115200bpsとなっているため、プログラム側でも同じ速度に設定します。
最後のサーバー設定は、大まかに(1)コールバック設定、(2)サーバー立ち上げに分かれます。
まず、コールバック設定については、前述のコールバックメソッドを各イベントに合わせて設定します。server.onはクライアントのアクセス時、server.onNotFoundはサーバー内部のエラー発生時の処理を与えます。
必要なコールバック処理を追加したら、server.beginでサーバーとして起動します。

最後のメインループは、常にクライアントからのアクセスを待機するのみです。

なお、今回使用したモジュール(部品については初回参照)の注意点として、出力に使えるピン番号が0, 2のみのため、プログラムのピン設定も0、あるいは2のどちらかを設定してください。
ちなみに、アナログ出力(PWM)は可能ですが、入力ピンとしてはどちらも一切使えないため、実質このモジュールは出力ピンが2つだけとなっています。
【テスト】
プログラムを書き込んだら、さっそくテストしてみましょう。
手順は以下の通り。
(1)Webブラウザを開く
(2)IPアドレス(あるいはhttp://esp8266WebForm.local)を入力してアクセス
(3)サイトに出てきたボタン(LED On / LED Off)を押す
(4)回路のLEDが点灯/消灯すれば成功

これですべての実装が終わりました。いかがだったでしょうか。
まだまだいろいろと必要な知識も残っていますが、これがIoT電子工作の入門になれば幸いです。
では(・ω・)ノ))

コメント

タイトルとURLをコピーしました