目次
ATコマンドモードの概要
Espressif Systems社のWi-Fi/BluetoothコンボモジュールのESP-WROOM-32は安価でSDKも公開されており世界中で人気上昇中です。
公式SDKのESP-IDFを使えばファームウェアを好きなようにカスタムできるのですが、FreeRTOSの知識が無いと扱えずハードルは高めです。
ホストマイコン(MCU) - ESP32間をUARTで接続し、シリアル通信でATコマンドで操作するATコマンドモードを使用すると簡単に制御できます。
※ATコマンド…AT+xxxの形式で、文字列(ASCII)で構成されたコマンドを使って通信する方式。
また、同じ構成でWi-FiやBluetoothモジュールを制御する製品の場合は基本構成を変えずに置き換える事ができてコストダウンを狙えるというメリットがあります。
ただし、ATコマンドモードは扱いが簡単な分、使える機能に制限があります。
フルに性能を発揮したい場合はやはりESP-IDFでしっかりFreeRTOS上で開発する必要があります。
ATコマンドモードにする為のファームウェアは公開されています。
GitHubにソースコードも公開されている為、こちらをカスタムして任意のコマンドをATコマンドに追加する事も可能ですが、今回は単純にATコマンドモードにするファームウェアを書き込んで通信するところまでを説明ます。
https://github.com/espressif/esp32-at
工程としては単純なのですが細かい所で落とし穴がある為、その部分について掘り下げながら進めていきます。
- ATコマンドモードのファームウェアをダウンロード
- フラッシュ書き込みツールで書き込み
- シリアル通信でATコマンドを送信して動作確認
ATコマンドモードのファームウェアダウンロード
まずはATコマンド用のファームウェアをダウンロードしましょう。
以下のページから ESP32-WROOM-32 AT Bin の最新版をダウンロードしてください。
https://www.espressif.com/en/support/download/at
展開したらCドライブ直下など、パスに2バイト文字や空白が入らない場所に保管します。
※パスに2バイト文字や空白が入ってるとフラッシュツールが起動できなかったり、上手く書き込みができません。
フラッシュツールのダウンロード
フラッシュツールは以下のページの Flash Download Tools (ESP8266 & ESP32) からダウンロードします。
https://www.espressif.com/en/support/download/other-tools
こちらも展開したらパスに2バイト文字や空白が入らない場所に保管します。
フラッシュツールでファームウェア書き込み
ではファームウェアを書き込みましょう。
フラッシュツールフォルダ内の ESPFlashDownloadTool_vx.x.x.exe を起動し、ESP32 DownloadToolボタンを押します。
通信設定
COMポートと通信速度の設定を変更します。
USBで接続している場合は通信速度は最大の1152000bpsでOKです。
STARTボタンを押すと緑の部分がIDLE→SYNC→FINISHに変わります。
FINISHにならない場合はCrystalFreqやFLASH SIZE等の設定を確認しましょう。
.binファイルの書き込み
このツールで.binファイルを書き込みます。
保管したESP32-WROOM-32 AT Binのフォルダに.binがあります。
.binファイルは複数あり、download.configに書き込みアドレスとファイル名が指定されていますので、その通りにフラッシュツールで設定します。
--flash_mode dio --flash_freq 40m --flash_size detect 0x1000 bootloader/bootloader.bin 0x20000 at_customize.bin 0x21000 customized_partitions/ble_data.bin 0x24000 customized_partitions/server_cert.bin 0x26000 customized_partitions/server_key.bin 0x28000 customized_partitions/server_ca.bin 0x2a000 customized_partitions/client_cert.bin 0x2c000 customized_partitions/client_key.bin 0x2e000 customized_partitions/client_ca.bin 0xf000 phy_init_data.bin 0x100000 esp-at.bin 0x8000 partitions_at.bin
一番左のチェックボックスにチェックが入っていないと書き込めないので、忘れないようにしましょう。
読み込みは...ボタンからできますが、アドレスは自分で手打ちします。
一通り設定したらSTARTボタンを押して書き込みます。
ファイルが多くてフラッシュツールの欄が足りないと思いますので、2回に分けて書きましょう。
Tera Term等のターミナルソフトで接続するとデバッグ出力が表示されます。
もしデバッグ出力の起動時のログにエラーが出ていた場合は.binが上手く書き込めていないと思います。
エラー内容にもよりますが、元々書かれていたソフトの領域が影響している可能性もありますので、そういう時は一度ERASEしてから書き込んでみてください。
ATコマンド動作確認
書き込んだらATコマンドを送信してちゃんと返事が来るかを確認しましょう。
フラッシュ書き込みとデバッグ出力ポートは同じUART端子ですが、ATコマンドの送受信ポートは別です。
公式によるとUART1がATコマンド用のデフォルトとなっています。
GPIO16とGPIO17がデフォルトの送受信端子なので、ここにATコマンド用のシリアルポートを接続しましょう。
The ESP32 Board sends AT commands through UART1 by default.
GPIO16 is RXD
GPIO17 is TXD
GPIO14 is RTS
GPIO15 is CTS
https://github.com/espressif/esp32-at
ATコマンド用の端子は変更できます。
コマンドは以下にあります。
ATコマンドの確認を行う時はATを送信してOKと受信する事を確認しましょう。
注意:
ATコマンドはCR+LFの改行コードを送信する事で有効になります。
ターミナルソフトによってはEnterを押した時の送信がデフォルトではCRのみの場合があるので確認しましょう。
Tera TermはCRだけでした。
Tera Termで改行コードの設定を行う場合はメニューバーの設定 -> 端末で改行コードを変更できます。
これでATコマンドで制御する準備ができました。
コマンド一覧を見ながら色々遊んでみましょう!