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

話題の技適モジュール「ESP8266」を使ってIoTを手作りするこの連載、今回はESP8266をTCPサーバとTCPクライアントにする方法を紹介します。これで他ノード間でのTCP接続ができるようになります。

» 2015年10月19日 07時00分 公開
[今岡通博MONOist]
「ESP8266」(出展:Espressif Systems) 「ESP8266」(出展:Espressif Systems)

 Espressif Systemsより提供されているワイヤレスSoC「ESP8266」を搭載したモジュールで“IoTを手作りしてみよう”というこの連載、前回(Wi-Fiモジュール「ESP8266」で始めるIoT DIY(2):ESP8266を宅内Wi-Fiにぶら下げるATコマンド実例)は、ATコマンドを使ってESP8266をWi-Fiのアクセスポイントに接続し、また、ESP8266自体をアクセスポイントにするための設定を紹介しました。

 今回はいよいよESP8266と他のWi-Fi接続されたノード間でのTCP接続に挑戦してみたいと思います。最初はESP8266がTCPサーバになる方法を、また後半は逆にESP8266がTCPクライアントになる方法を試してみます。

ESP8266にTCPサーバを設定する

 最初にESP8266にTCPサーバを設定しますが、その前にWi-Fi接続する必要があります。ステーションモードとしてエリア内にあるWi-Fiのアクセスポイントに接続する方法と、ESP8266自体がアクセスポイントになる方法がありますが、今回はステーションモードの設定で実験します(準備するものは前回前々回と全く変わりません。また回路や配線も前回と同じです)。

図1 ESP8266をステーションモードにしてアクセスポイントに接続 図1 ESP8266をステーションモードにしてアクセスポイントに接続

 ATコマンドによる操作は以下の通りです。

AT+CWMODE=1
 
OK
AT+CWLAP
+CWLAP:(0,"JA5YOT",-76,"00:0a:79:5e:2a:76",6)
 
OK
AT+CWJAP="JA5YOT",""
WIFI CONNECTED
WIFI GOT IP
 
OK
AT+CIFSR
+CIFSR:STAIP,"192.168.1.15"
+CIFSR:STAMAC,"18:fe:34:a2:a2:e5"
 
OK
Tera termの通信ログ「List1」

 上のコマンドリスト「List1」では、ESP8266のWi-Fi接続モードをステーションモードにし、エリア内にあるアクセスポイントのリストを表示し、そのアクセスポイントに接続します。そして接続されたアクセスポイントから付与されたIPアドレスを表示しています。それぞれのコマンドの説明やパラメーター、表示メッセージの意味については前回記事を参考にしてください。

 ESP8266側でTCPサーバを立ち上げる際のシステム構成は以下のようになります。

図2 ESP8266側でTCPサーバを立ち上げる 図2 ESP8266側でTCPサーバを立ち上げる

 ESP8266はエリア内のアクセスポイントに接続し、無線ルーターのDHCPサーバ機能により図に示すIPアドレスが付与されているものとします。同様にPCも接続されています。ESP8266のUART(シリアルポート)は、USBシリアル変換モジュール経由でターミナルソフトが稼働するPCなどに接続されています。このPCからESP8266のATコマンド経由でESP8266を制御することができます。TCP接続時の送受信操作をこのPCで行います。

 Wi-Fi経由で接続されているIPアドレスが192.268.1.16のPCも、Tera termのtelnetの機能でESP8266に接続します(方法は後述します)。telnet(テルネット)はインターネットで接続されたホストコンピュータにターミナルエミュレーターなどでリモート接続するためのプロトコルの1つですが、最近はセキュリティの面からSSHに取って代わられています。CUI操作でTCPサーバに接続テストする場合などに筆者は良く使っています。

 図2ではESP8266にUART接続してATコマンドを入力する端末と、Wi-Fi接続されたリモート端末を混同しないように別々のPCで表現していますが、1つのPCで2つのターミナルエミュレーターを立ち上げて操作しても結構です。筆者はそのようにしています。

       1|2|3|4 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.