05.picoでwifiデモ動作 ATコマンド
05.picoでwifiデモ動作 ATコマンド
Pico-ESP8266は、Pico用コネクタ付のWiFiモジュールで、UART ATコマンドで制御でき、TCP/UDP通信プロトコルをサポートしています。
Pico ESP8266 (微雪電子)
https://www.waveshare.com/wiki/Pico-ESP8266
購入先は、アマゾンです。
https://www.amazon.co.jp/gp/product/B09KYF559X/ref=ppx_od_dt_b_asin_title_s00?ie=UTF8&psc=1
・Vsysから3端子で3.3Vを作っています。
・3.3V出力にR1を通して赤LEDが接続されています。(電源LED)
・ESP8266は、3.3Vで動作しています。
・ESP88266のGP0は10kΩで3.3Vに、IO0ボタンでGNDに接続されています。(ESP8266に書込時に使用)
・ESP8266のRSTpinは、10kΩで3.3Vに、RSTボタンでGNDに接続されています。
・そのままでは、GP0とGP1(UART0)ですが、半田し直してGP4とGP5(UART1)に変更できます。RXD0とGP0間、TXD0とGP1間(UART0)に、ジャンパー抵抗が付いていますが、ジャンパー抵抗を横にずらすと、RXD0とGP4間、TXD0とGP5間(UART1)が接続できます。
ATファームウェア更新
picoに転送ソフト?をインストール
Pico ESP8266 (微雪電子)のHPで、下側のデモコードの中にあるPico-ESP8266\dev_cdc_ports.uf2
をpicoにコピーします。
ESP8266にFlash Download toolをインストール
HPの下側にあるソフトウェアのFlash Download toolをダウンロードパスに日本語があるとダメなので、
C:\Pico\flash_download_tool
にコピーし、
flash_download_tool_v3.8.5.exe を実行。開いたら、
Developer Mode > ESP8266 DownloadTool
SPIDownloadタブを以下に設定します。
・1行目の...をクリックして、
C:\Pico\flash_download_tool\Ai-Thinker_ESP8266_DOUT_32Mbit_v1.5.4.1-a_20171130.bin を開く
・@の右に 0x0を入力
・左にチェックマークを入れます
・SPI SPEED = 40MHz
・SPI MODE = DOUT
・FLASH SIZE = 32Mbit-C1
・COM値を選択
・BAUD = 115200
ESP8266のIO0ボタンを押したまま、ESP8266のRSTボタンを押してダウンロードモードに入ります。
画面のSTARTをクリックするが、___...___しか表示しなかったので変更します。
フラッシュダウンロードツールV3.9.2(2021/11/10)
https://www.espressif.com/en/support/download/other-tools
をダウンロードし、binファイルは以前のものを使用すると
FINISH と表示されます。
Tera Termの設定
設定 > シリアルポート...・ポート = 正しいCOMを選択
・スピード = 115200
・(8bit, none, 1bit, none)
に設定 > 新規オープン
設定 > 端末 > 改行コード
・受信 = AUTO
・送信 = CR+LF
* 送信コマンドの"+"は、数字キーボードの"+"ではなく、Shiftを押しながら ; の"+"で入力します。
TCP Client、TCP Server、UDPとは
TCP
受信側の確認後に送信。信頼性が高い。UDP
一方的に送信。通信速度が速い。TCP Client
クライアントは、特定のIPアドレス+TCPポート番号で接続待ちをしているサーバに対して接続要求を出します。接続が成功すると、通信を開始できます。一度接続が出来上がってしまえば、サーバとクライアントで通信方法に違いはありません。例
・127.0.0.1(localhost)の20000番へ接続
・文字列を送信
・送信が終わったらソケットを閉じる。
TCP Server
サーバは、クライアントからの接続要求を待ちます。接続要求を待つには、どのような待ち方をするかを設定しないといけません。設定する情報としては、接続待ちをするTCPポート番号があります。一度接続が出来上がってしまえば、サーバとクライアントで通信方法に違いはありません。例
・ポート番号20000番で開く。
・クライアントからの接続を受付ける
・クライアントからのデータを最後まで受信
・受信したデータはコンソールに表示
・クライアントとの接続ソケットを閉じる。
・待受けソケットを閉じる。
サーバーの立ち上げ方
ネットワーク製品を販売しているHWgroup社のヘラクレスセットアップユーティリティを使用してサーバーを立ち上げます。https://www.hw-group.com/product-version/hercules
Ver3.2.8(2014/6)
1つの.exeファイルのみでインストールは不要です。
製品紹介
https://www.hw-group.com/software/hercules-setup-utility
同ユーティリティを使用した、下記pdfも参考になります。
ESP-WROOM02の取説
http://www.microtechnica.tv/support/manual/espwroom02jp_man.pdf
p5 透過的通信(ATコマンドモード)
p6 サーバー(ソフトAPモード)
p7 仮想COMポートによるPCとの透過的通信
p8 ESP同士による通信 ステーションモード
p10 ESP同士による通信 ソフトAPモード
p10 ESPからTwitterへの投稿、読取り
p11 Twitterから最新返信の読取り
p12 Androidとの通信
[TCP Client]での立上げ方法
1.exeファイルをダブルクリックし起動2.最初の配布および使用条件の画面はClose
3.TCP Serverタブをクリック
4.Port = 8000に設定
5.Listenボタンをクリック
6.ポート8000のサーバーが立上がります。
* 上窓が受信文字、下の細長い窓に送信文字を入力します。
[ATコマンド基本]
01. AT
ATが正しく機能するか02. AT+RST
モジュールを再起動03. AT+GMR
ATコマンドバージョンを表示[TCP Server]の動作
01. AT+CWMODE=3
接続するAP情報を設定1:ステーションモード クライアント
2:APモード ホスト
3:1+2 デュアルモード
02. AT+CWJAP="*****","*****"
指定したSSIDとパスワードに接続03. AT+CIFSR
ローカルIPアドレスを取得。応答例は、+CIFSR:APIP,"192.168.4.1"
↑ESP8266 SoftAPのIPアドレス
+CIFSR:APMAC,"46:17:93:04:8c:ae"
↑ESP8266 SoftAPのMACアドレス
+CIFSR:STAIP,"192.168.68.61"
↑ESP8266ステーションのIPアドレス
この値は、PC > スタート > Windowsシステムツール > コマンドプロンプトで arp -a の入力で表示と同じです。
+CIFSR:STAMAC,"44:17:93:04:8c:ae"
↑ESP8266ステーションのMACアドレス
04. AT+CIPMUX=1
{0:単一接続, 1-4:複数接続}* 全接続が切断された後にのみ変更可能。
* サーバーが起動時は再起動が必要。
05. AT+CIPSERVER=1
{0:サーバー削除 再起動までにフォローの必要あり, 1:サーバー作成}* サーバーは、AT+CIPMUX=1の時のみ作成可能。
* サーバー作成時にサーバーモニターが自動的に作成。
* クライアントがサーバーに接続時、1つの接続を使用しIDが提供。
06.Tera Termの追加画面設定
ファイル > 新しい接続 > TCP/IP にて・ホスト=192.168.68.61(ESP8266のIPアドレス)
・Telnet
・TCPポート#=333(デフォルト)
OKで今までのシリアル接続の他にTCP/IP接続の画面開くので、その画面にて
設定 > 端末 > 改行コードで
・受信 = AUTO
・送信 = CR+LF
ローカルエコーにチェック > OK
設定 > TCP/IP... にて
・Keep-alive = 0秒
・自動的にウィンドウを閉じるのチェックを外す。
07. AT+CIPSEND=0,4
id番号,データ長最大2048バイトでデータを送る。>が表示され、
text (CR無し)
と入力すると、もう1面側にtestと表示される。
08. PC側画面(TCP/IP)から
test(CR)と入力するとPico-ESP8266側画面(シリアルポート)に
+IPD,0,6:test
と表示される。4文字 + CR + LF
09. AT+CIPCLOSE=0
TCP or UDP接続を閉じる。[TCP Client]の動作
環境ESP8266 PC
クライアント サーバー
192.168.68.61 192.168.68.60:8000
Tera Term Hercules
* ここでPC側のポートは8000としました。
01. AT+CWMODE=3
01-03は[TCP Server]と同じ。02. AT+CWJAP="*****","*****"
03. AT+CIFSR
確認 ESP8266="192.168.68.61"04. PCのIPアドレスの確認
スタート > 設定 > ネットワークとインターネット > 状態 > プロパティ > IPv4アドレス=192.168.68.60とわかます。
上記の方法で、PC側にTCPサーバーを立ち上げます。
05. AT+CIPSTART="TCP","192.168.68.60",8000
TCP接続を確立するかUDPポートを登録してサーバーに接続開始。TCP or UDP,リモートIP,リモートポート
06. AT+CIPSEND=4
> 1234と入力すると、ESP8266は、指定長のデータをサーバーに送信し、4文字入れ終わるとヘラクレス側の受信窓に 1234 と表示されます。
07. PCから送信
ヘラクレスのSend欄に 12345 と入力して、Sendボタンを押すとTera Term側には、+IPD,5:12345
と表示され、ESP8266がサーバーから受信すると、出力されます。
08. AT+CIPMODE=1
先の文字に続けて入力します。透過送信モードを有効にします。09. AT+CIPSEND
透過送信モードの場合、データを直接送信できます。ESP8266側(Tera Term)から文字を送ると即PC側(ヘラクレス)に表示され、PC側から文字を送ると即ESP8266側に表示されます。10. +++
Tera Termに単一パケットで +++ のみを入力し(キーボードで1文字ずつタイプしてもダメでコピーして貼付ける)、1秒待つ。データ送信を終了します。透過送信中に単一パケットで+++が検出された場合、透過送信を停止します。11. AT+CIPMODE=0
透過送信モードを終了します。12. AT+CIPCLOSE
TCPを切断します。[UDP]の動作
環境ESP8266 PC
192.168.68.61 192.168.68.60
51000 50000
Tera Term ヘラクレス
* ここではポートを51000と50000にしました。
01. AT+CWMODE=3
01-03と5は、[TCP Server]の01-04と同じ02. AT+CWJAP="*****","*****"
03. AT+CIFSR
確認04. サーバーをセットアップ
・ヘラクレスを起動・ライセンス画面をClose
・UDPタブをクリック
(UDP Setupタブはメーカー機種のみ利用可能)
・Module IP = 192.168.68.61 (ESP8266)
・Port = 51000 (ESP8266)
・Local port = 50000 (PC)
・上記設定し、Listen ボタンをクリック
05. AT+CIPMUX=1
複数の接続を有効に設定。06. AT+CIPSTART=4,"UDP","192.168.68.60",50000,51000,0
UDPトランスポートを作成します。・4は、id(0-4) 識別番号
・"192.168.68.60",50000は、送信された相手のリモートIPとポート、ステップ4で構築されたUDPポートです。
・51000は、ESP8266のローカルUDPポートで、構成可能であるか、ランダムポートです。
・0は、現在のUDP送信が確立された後、UDPリモートデバイスが他のデバイスによって変更されません。他のデバイスがUDPプロトコルを介してESP8266UDPポート51000にデータを送信する場合でも、ESP8266の4は置換えられません。
07. AT+CIPSEND=4,7
データをid4に送信します。入力が7バイトを超えた場合は、BUSYを表示し、最初の7バイトを送信し、送信完でSEND OKと表示します。超えたデータは無効となります。08. PCから送信
ヘラクレスのSend欄に12345と入力してSendボタンを押すと、Tera Term側に+IPD,4,5:12345
と表示されます。ESP8266がサーバーから受信すると表示します。
09-12. 略
09-12は、GithubのUPD送信に書かれていなく、エラーなので略しました。13. AT+CIPCLOSE=4
UDP送信を切断します。カーソル位置に続けて入力します。確認コマンド
[wifi]・AT+CWMODE? | ESP8266のwifiモード (3) |
・AT+CWLAP | ssid等一覧 |
・AT+CWJAP? | ESP8266に接続されているssid等 |
・AT+CIPSTA? | ESP8266 STAのIPアドレス |
・AT+CIPSTAMAC? | ESP8266 STAのMACアドレス |
・AT+CWLIF | ESP8266 softAPに接続されているステーションのIPアドレス |
・AT+CWSAP? | ESP8266 softAPモードの構成 |
・AT+CIPAP? | ESP8266 softAPのIPアドレス |
・AT+CIPAPMAC? | ESP8266 softAPのMACアドレス |
・AT+CIPSTATUS | 接続情報 |
{2:IP取得,3:接続済,4:切断} 接続ID(0-4) マルチコネクトの場合 TCP or UDP IPアドレス(文字列) ポート番号 {0:WSPはクライアント,1:ESPはサーバー} | |
・AT+CIFSR | ESP8266のローカルIPアドレス |
・AT+CIPSTO? | クエリサーバーのタイムアウト秒 (180) |
・AT+GMR | ATコマンドのVer (1.2) |
・AT | ATコマンドが起動するか |
参考資料
espressif/ESP8266_AT 公開アーカイブhttps://github.com/espressif/esp8266_at/wiki/AT_Description
ESP8266 ATコマンドリファレンス 2015
https://room-15.github.io/blog/2015/03/26/esp8266-at-command-reference/
ESP8266 ATコマンド 一覧
https://jumpwire.io/ja.docs_subdomain/ESP8266Reference/ATCommands/
ATコマンドを利用した接続の基礎 2018
http://yuukiwogousei.blog.fc2.com/blog-entry-127.html?sp