前回に引き続きTCPソケット通信のテストを行っていきます。
実際の通信を行っていく前に、ESP-WROOM-02のモードについて説明しておきます。
ステーションモードとソフトAPモード
- ステーションモード
- ソフトAPモード
周囲にあるアクセスポイント(AP)に接続するモードです。
ESP-WROOM-02をAPとして動作させるモードです。
通常モードとトランスペアレントモード
- 通常モード
- トランスペアレントモード
ATコマンドを使用してESP-WROOM-02の設定、接続の確立およびデータを送受信するモードです。
ATコマンドで接続の確立後、まるで有線で接続されているかのようにデータの送受信できるモードです。
まずは、ESP-WROOM-02をステーションモードにしてATコマンドを使用して通信を行う方法を説明します。
アクセスポイントに接続する
- まずは、周囲にあるアクセスポイントに接続するためにESP-WROOM-02をステーションモードに設定します
- 続いて、周囲にあるAPに接続します
- APに接続できたらESP-WROOM-02に割り当てられたIPアドレスを確認しておきます
AT+CWMODE=1
AT+CWJAP="SSID","Password"
SSIDには周囲にあるAPのSSID名、Passwordにはパスワード(暗号化キー)を入力してください(“”(ダブルクォーテーション)で囲う)。正しく接続されると以下のメッセージが表示されます。
WIFI CONNECTED WIFI GOT IP OK
AT+CIFSR
割り当てられているIPアドレスとMACアドレスが返ります(MACアドレスはデバイス固有の値なので一応隠しておきます)。
+CIFSR:STAIP,"192.168.0.8" +CIFSR:STAMAC,"18:fe:xx:xx:xx:xx" OK
サーバーと通信する
- サーバー側の準備
- ESP-WROOM-02側でサーバーとの接続を確立する
- ESP-WROOM-02からサーバーにデータを送信する
- サーバーからESP-WROOM-02にデータを送信する
ESP-WROOM-02と同一ネットワークに接続されているPCで準備編で入手しておいたHerculesを起動します。Herculesが起動したらTCP Serverタブを開きServer StatusのところにあるPort番号に8080と入力(任意の値でOKです)してListenボタンをクリックします。
また、Herculesを起動しているPCのIPアドレスをipconfigコマンドを使用して確認しておきます。今回は”192.168.0.9″でした。
AT+CIPSTART="TCP","192.168.0.9",8080
接続に成功すると以下のメッセージが出力されます。
CONNECT OK
これでサーバーとの接続が確立されました。
HerculesのClient connection statusに”hh:mm:dd: 192.168.0.8 Client connected”と表示されています。
ESP-WROOM-02からサーバーに4バイトのデータを送信してみます。以下のコマンドを入力します。
AT+CIPSEND=4
すると、以下のメッセージが返り4バイトデータの送信準備が完了します。
OK >
このメッセージの後で送信したいメッセージを入力します。ここでは「abcd」というデータを送ってみます。正しく送信できた場合、SEND OKというメッセージが返ります。また、HerculesのReceinved Dataにabcdと表示されています。
今度はサーバからESP-WROOM-02にデータを送信してみます。HerculesのSendテキストボックスにHELLOと入力してSendボタンをクリックします。すると、ターミナルソフトには以下のように表示されます。
+IPD,5:HELLO
以上でATコマンドを使用したサーバーとの通信ができました。次はトランスペアレントモードを使用した通信をやってみたいと思います。
トランスペアレントモード
- ESP-WROOM-02をトランスペアレントモードにする
- CIPSENDコマンドを送信する
- ESP-WROOM-02からデータを送信する
- ESP-WROOM-02がデータを受信する
- トランスペアレントモードを終了する
AT+CIPMODE=1
AT+CIPSEND >
CIPSENDコマンドを送信して”>”が返ってきたらトランスペアレントモードでのデータ送受信の待ち受け状態となります。
ターミナルソフトに好きな文字列を打ち込んでみると、その文字列がそのままHerculesのReceinved Dataに表示されます。
Herculesから任意の文字列を送信すると、その文字列がそのままターミナルソフトに表示されます。
トランスペアレントモードを終了するにはエスケープシーケンスを実行する必要があります。トランスペアレントモードを終了させるためのエスケープシーケンスは”+++”(+を3つ)を送信します。
・・・はずなのですが、私の環境ではなぜかトランスペアレントモードが終了しません。もう少し調査をして結果を書きたいと思います。
コメント