今回は Wi-Fiを使った通信を試してみます。
この記事は JTAG でデバッグすることを前提にして書いています。
環境構築については こちら をご覧になってください。
投稿時の開発環境を記しておきます。
PC:
Windows10 OS
開発ボード :
ESP32-DevKitCーVE
(Soc : ESP32-D0WD-V3)
デバッガー(H/W):
FT2232D
デバッガー (S/W) :
Visual Studio Code + PlatformIO + ESP-IDF Framework
構成
今回は Wi-Fi を使ったソケット通信を行ってみます。
我が家には某社製のルーターがあり、それが AP (アクセスポイント) になるので、ESP32を STA(Station)モードで使ってみることにしました。
AP経由でPCソフト(フリー)のSocket Debugger を使ってソケット通信を行ってみます。
図があるとイメージしやすいと思うので貼っておきます。

Socket Debugger を TCP Server として、 ESP32 は TCP Client で動作させてみます。
ESP32の環境にもSocket通信用に組み込み用として有名な LwIP (Low weight IP) が用意されているので、それを使ってみることにします。
IPアドレスと Wi-Fi の SSID , PASSWORD は皆さまの環境に合わせて設定してください。
ポート番号は 8080 になっていますがクライアントとサーバーで合わせておけば任意の値(65535まで)でOKです。
プロジェクトをつくる
使っていたプロジェクトを開いていたら、File – Close Folder して閉じておきます。
その後にVSCodeからPlatformIOをOpenします。
以下の内容でプロジェクトを新規に作成します。
Name : ESP32E-WiFi-station
Board : Espressif ESP32 Dev Module
Framework : Eresspsif IoT Development Framework
Name : ESP32E の “E” は Framework (Espressif IoT Development Framework)の頭文字を示しています。
(後から見てわかるように、ESP-IDFを使うことを明示しています)

platformio.ini に以下の3行を追加して、 Ctrl + s で保存しておきます。
COM[4]の4の部分はデバイスマネージャーのポート(COMとLPT)で Silicon Labs CP210x から始まるCOMの番号を記述します。
debug_tool = minimodule
upload_port = COM[4]
monitor_speed = 115200
(今回は特に使いませんが、モニターを使う場合に必要です)
Wi-Fiリファレンスとサンプル
Wi-FiのAPIは こちら を参照してください。
サンプルプログラムは こちら を参考にしました。
また、lwip (tcp client) のサンプルは こちら を参考にしました。
PlatformIOで Eresspsif IoT Development Framework を選択したことにより、以下のローカルフォルダからも参照可能なはずです。
Wi-Fi (STA) :
C:\Users\xxxxx\.platformio\packages\framework-espidf\examples\wifi\getting_started\station
lwIP – tcp_client :
C:\Users\xxxxx\.platformio\packages\framework-espidf\examples\protocols\sockets\tcp_client
(xxxxxは皆さまのユーザー名)
ソースコード
Wi-Fi (STA) と tcp_client の組み合わせです。
ソースコードを github esp32e-wifi-station におきました。
ESP-IDF環境で Wi-Fi (STA) , tcp_client を試してみたい方はお使いになってみてください。
ソケット通信で TCP client を実装されたことがあれば簡単に理解できると思います。
(注)ソースコード main.c 冒頭の以下の部分を環境に合わせてお使いください。
#define HOST_IP_ADDR “192.168.11.5”
#define PORT 8080
#define CONFIG_ESP_WIFI_SSID “” // SSID
#define CONFIG_ESP_WIFI_PASSWORD “” // PASSWORD
この例では、connect()で繋ぎっぱなしにしておいて、1秒毎に文字列を送信しています。
PC(サーバー側)の設定
フリーで使えるソケット通信用のソフト Socket Debugger をご存じでしょうか。
Socket Debugger
Socket通信のテストを行うのに便利なツールです。
こちらから ダウンロードしてお使いください。
フリー版は一番下の 旧製品版 というところにあるものです。(2021/11/27現在)
フリー版は機能制限があるようですが、簡単な通信テストを行う程度であれば全く問題なく使うことができました。
ポートを2つ使える仕様のようです。
起動後、メニューの設定 – 通信設定 で 接続 – ポート1 に対して、以下のように設定します。

動作 – ポート1 でいくつかの動作設定を行うことができますが、ここでは触らずに初期設定のままにしておきます。
設定後、通信 – ポート1処理開始 を選択します。
これで TCP client からの接続を待ち受ける状態になりました。
初期設定のままにしておけばタイムアウトしないので慌てる必要はありません。
ビルドして動作させてみる
こちらの環境では、サーバー側にデータが届くのが確認できました。
皆さまはいかがでしょうか。
