前回から始めた 「ESP32を使ってWi-Fiしてみる」の第2回目です。
投稿時の開発環境を記しておきます。
PC:Windows10 OS
IDE: STM32CubeIDE Version1.6.0
Configurator: STM32CubeMX Version6.2.0
Board: STM32Nucleo-F401RE
Module: ESP32-DevKitC-VE
ATコマンド試験用 USBシリアルモジュール: AE-FT234X
Wi-Fiシステム構成の確認
Wi-Fi システム構成を確認しておきます。
我が家にはバッファロー製のWi-Fiルーターがあります。
このルーターをAP(アクセスポイント)とし、PCからATコマンドでESP32を操作してルーター経由でPCのサーバーに接続してみます。
サーバーを用意する
今回はTCP/IPのクライアント・サーバーの動作確認を行ってみます。
ESP32側をクライアントにして、PCにサーバー機能を用意します。
サーバーをつくるためにソケットデバッガーという Windowsのフリーソフトを使ってみます。
こちら からダウンロードすることができます。
起動して設定 – 通信設定で 接続 – ポート1 に対して以下のように設定します。
通信タイプを TCPサーバ
localポート番号は初期値の 1024 としておきます。
OKボタンを押してダイアログウィンドウを閉じます。
ツールメニューの ポート1通信開始ボタン(以下の赤枠部分)をクリックしてサーバーを待ち受け状態にしておきます。
メニュー下のリストに Socket処理開始 と表示されます。
デフォルトの設定でタイムアウトすることはありませんので、このまま放置しておいて構いません。
ついでにサーバー(PC)のIPアドレスを確認しておきます。
PCのステータスバーのWi-Fiアイコン(以下の赤枠部分)をクリックします。
つながっているAP(ルーター)のプロパティをクリックし、IPv4アドレスの値をメモしておきます。
システム構成に書いたとおり、こちらの環境のPCのIPアドレスは 192.168.11.4 でした。
接続を確認しコマンドを打ってみる
ATコマンド攻略編(1) を参考に接続と確認を行ってください。
Tera Term で と入力し enterキーを押して OK が返ってくることを確認します。
OKが返らない場合には、接続や設定を見直してみてください。
(注)入力間違いをしないようにしてください。deleteやback spaceキーを押してもうまくいきません。
ERROR が返ってきたら間違いのないようにコマンドをもう一度入力します。
ATコマンドの取扱説明書を見ながら設定してみてください。
サーバーに接続しデータを送信してみる
それではいくつかのコマンドを送りながら動作を確認していきます。
(1)AT+CWMODE : Wi-Fiモードを設定します。
AT+CWMODE=1
1 はStation mode(子機モード)です。
ルーターがAP(親機)になっているので、 1 を設定します。
OKが返ってくることを確認します。
AT+CWMODE=1
OK
参考:
AT+CWMODE? ( コマンドに続けて? を入力後enter)で現在の設定を確認することができます。
(2)AT+CWJAP : APに接続します。
AT+CWJAP=”ssid”,”pwd”
ssid にはAPのIDを、pwdにはパスワードを入力します。
正しく設定されると次のように返ってきます。
WIFI CONNECTED
WIFI GOT IP
OK
AT+CWJAP="Buffalo-x-xxxx","xxxxxxxxxxxxx"
WIFI CONNECTED
WIFI GOT IP
OK
これで接続が完了し、IPアドレスが割り当てられました。
(3)AT+CIFSR : ESP32に割り当てられたIPアドレスとMACアドレスを確認できます。
こちらの環境では以下のように返ってきました。
+CIFSR:STAIP,”192.168.11.8″
+CIFSR:STAMAC,”7c:9e:bd:91:58:cc”
AT+CIFSR
+CIFSR:STAIP,"192.168.11.8"
+CIFSR:STAMAC,"7c:9e:bd:91:58:cc"
(4)AT+CIPSTART : 接続します。
TCP/IPでPCの待ち受けポート 1024 に接続します。
こちらの環境のPCのIPアドレスは 192.168.11.4 でした。
AT+CIPSTART="TCP","192.168.11.4",1024
CONNECT
OK
PC(ソケットデバッガー)側は Accept Port OK! と表示されて接続が確認できます。
(5)AT+CIPMODE=1 : 透過モードに設定します。
UART と Wi-Fi 間を透過するモードです。
AT+CIPMODE=1
OK
(6)AT+CIPSEND : OK が返った後 > が表示されデータを送受信できる状態になります。
AT+CIPSEND
OK
>
Tera Term でキーを打ち込むとソケットデバッガー側で受信することが確認できます。
(この間のエコーはかからないので Tera Term 上で送信データの確認はできないことに注意してください)
もちろんPC側からデータを送信することも可能です。
ソケットデバッガーの右側にある送信データエディタにカーソルをあててデータを入力します。
16進数で入力するので、下図のように入力することで 01234 を送ることになります。
入力後、ポート1データ送信ボタン(以下の赤枠部分)を押すことでデータを送信します。
Tera Term側でデータを受信することが確認できます。
(7)透過モードを解除する
解除するにはコツが必要です。
+++ のように 半角の + を続けて3つ送信すると透過モードを解除できるのですが、手で入力すると文字の間に時間があくために解除できません。
(Tera Term ではひと文字打つ毎にひと文字ずつデータを送信するために間があいてしまいます)
メモ帳などのエディタで +++ を入力後クリップボードにコピーしておき、Tera Term の編集 – 貼り付け を選択します。
そうすると Tera Term にカーソルが表示されて透過モードが解除され、再びATコマンドを受け付けるようになります。
いかがでしたか。うまくWi-Fi接続してデータ通信できたでしょうか?
それでは次回は STM32マイコンを使って ATコマンドで ESP32 を操作して通信してみることにします。
お疲れさまでした。