ESP8266をTCPサーバとTCPクライアントにするATコマンド実例Wi-Fiモジュール「ESP8266」で始めるIoT DIY(3)(2/4 ページ)

» 2015年10月19日 07時00分 公開
[今岡通博MONOist]

 ここからの操作は前ページ「List1」の続きからとなります(List1で行った設定はESP8266の不揮発性メモリに残っており、省略できる場合があります)。

AT+CIPMUX=1
 
OK
AT+CIPSERVER=1,8888
 
OK
0,CONNECT
 
+IPD,0,7:hello
AT+CIPSEND=0,7
 
OK
>
Recv 7 bytes
 
SEND OK
0,CLOSED
USBシリアル変換モジュール経由で接続した、Tera termの通信ログ

 1行目の「AT+CIPMUX=1」はパラメーターが1ですのでESP8266をマルチプルコネクションモード(複数のコネクションに対応できるモード)に設定しています。パラメーターが0の場合はシングルコネクションモードとなり、1つのコネクションにしか対応できません。

 4行目の「AT+CIPSERVER=1,8888」はTCPサーバの設定です。このコマンドには2つのパラメターがあります。1つ目がモードの設定で、1はサーバを生成しています(0はサーバを削除します)。2つ目がサーバを生成する際に利用するポート番号を指定しています。ポート番号を指定しなかった場合はデフォルトのポート番号(333)が採用されます。ですから、このコマンドの結果、ポート番号8888のTCPサーバを生成することになります。

 ちなみに「AT+CIPMUX」と「AT+CIPSERVER」の兼ね合いですが、AT+CIPMUXでマルチコネクションモードに設定していないとどうもTCPサーバを立ち上げられないみたいです。

 6行目でESP8266がOKを返してきたので、無事サーバが立ち上がったようです。それではリモートのPC(192.168.1.16)からESP8266に接続に行ってみましょう。この操作もATコマンド同様Tera termを使います。Tera termを立ち上げた最初あるいは「新しい接続を」メニューバーから選択した時にダイアログボックスが表示されます。以下のように設定してください。

Tera termの設定 Tera termの設定

 今回はUSBシリアル変換モジュール経由のシリアル接続ではなく、TCP/IP経由で接続しますので「TCP/IP」のラジオボタンをチェックしてください。ホストのところのテキストボックスはESP8266に付与されたIPアドレスを入力します。次に「サービス」のラジオボタンを「Telnet」とし、TCPポート#を先ほどのATコマンド(AT+CIPSERVER=1,8888)でサーバを生成した時のポート番号を入力します。そして画面下の「OK」ボタンをクリックします。

 するとATコマンド操作画面の方の7行目のように「0,CONNECT」と表示されます。この状態でリモートPC(192.168.1.16)のPCのターミナルエミュレーターの方から“hello”と打ってリターンターキーを打ちます。端末設定をエコー設定していなければ画面には打った文字は表示されません。するとATコマンド操作画面の9行目のように“+IPD,0,7:hello”と表示されます。

 9行目先頭の「+IPD」は受信データであることを示しています。カンマで区切られた後の0はコネクションIDを示しています(AT+CIPMUXで指定したコネクションモードをシングルコネクション設定にした場合はこのコネクションIDは省かれます)。そして次の7は受信したデータの長さになります。helloのみなら5文字ですがリターンを打った時にCRとLFがあるのでそれも合わせて受信データ長は7となっています。そしてコロンの後が受信したデータです。

 今度はATコマンド操作ターミナルから文字列を送信してみましょう。

 10行目の「AT+CIPSEND=0,7」はコネクションIDが0のリンクに対して7文字送信するコマンドです。7は送信するデータ長です。このコマンドが受理されるとOKの後に>のプロンプトが表示されますので、helloと打ってリターンキーを打ちます。打った文字はターミナルエミュレーターの設定をエコーモードにしてなければこの時点では何も表示されません。

 送信データ長を7としたのは、helloとリターンキーを押したときに送信されるCRとLFを入れたためです。するとRecv 7 bytesと表示された後SEND OKと表示されます。リモートPCのターミナルエミュレーターの画面を見てください。“hello”と表示されているはずです。

 次はリモートPCのターミナルエミュレーターを終了してみましょう。するとATコマンド操作ターミナルの画面に0,CLOSEDが表示され、このコネクションが終了となります。今回はESP8266をステーションモードとして既存のアクセスポイントに接続して実験を行いましたが、ESP8266をアクセスポイントモードにしても同様のことが可能です。

Copyright © ITmedia, Inc. All Rights Reserved.