ESP8266をTCPサーバとTCPクライアントにするATコマンド実例:Wi-Fiモジュール「ESP8266」で始めるIoT DIY(3)(2/4 ページ)
話題の技適モジュール「ESP8266」を使ってIoTを手作りするこの連載、今回はESP8266をTCPサーバとTCPクライアントにする方法を紹介します。これで他ノード間でのTCP接続ができるようになります。
ここからの操作は前ページ「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
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を立ち上げた最初あるいは「新しい接続を」メニューバーから選択した時にダイアログボックスが表示されます。以下のように設定してください。
今回は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.