2020年7月11日土曜日

ESP32で実行ファイル(binファイル)を直接書き込む

概要


arudinoIDEを使ってESP32のプログラミングをするときには、arudinoIDEが自動でESP32への書き込みを行います。

複数のESP32への書き込みでは、arudinoIDEを使わず、実行ファイル(binファイル)だけで書き込みをしたいです。

このための方法がこちらのwebで紹介されています。
http://k-hiura.cocolog-nifty.com/blog/2019/06/post-17ebf9.html

ここで紹介されているbatファイルから、batファイルへのCOMNoの設定、binファイル名の設定をしなくて済むように書き換えました。

書き換え内容は

  1. COMNoはbatファイル実行中に直接入力する方式にする
  2. binファイル名はbatファイルが置かれているフォルダにコピーしたbinファイルを自動で取得する方式にする。
です。

書き換えしたbatファイルの内容
set /P COMNo="COM No Input = "
Echo.
for %%A in (*.bin) do (
    Echo wirte file = %%
    Echo.
.\esptool.exe --port COM%COMNo% --baud 921600 ^
     --chip esp32  --before default_reset --after hard_reset ^
     write_flash -z --flash_mode dio --flash_freq 80m --flash_size detect ^
     0x10000 ./%%A)
    
 pause


書き込み環境の準備

こちらにあるサンプルフォルダをダウンロードしてください。
https://drive.google.com/drive/folders/1EzbIrtbbzSeT9MBrrouXGA4fGCKtVhR2?usp=sharing

このサンプルフォルダには、ESP32の23Pinに対してHi/Lo出力するプログラム(blinkTest.ino.esp32_500ms.bin)が入っています。ESP32の23PinにLEDを接続しておくとLEDが点滅します。


書き込むbinファイルはESP32Write.bat が置いてあるフォルダにコピーしてください。
(binファイルは必ず1つだけにしてください。複数あるとどれを書き込めばよいかわかりません)


フォルダにあるファイル一覧


  1. ESP32Write.bat (このファイル) : このバッチファイルを実行するとESP32にプログラムを書き込む
  2.  esptool.exe : 書き込みプログラム本体 arduino IDEからコピーしてきたもの (C:\Users\USERNAME\Documents\ArduinoData\packages\esp32\tools\esptool_py\2.6.1 にあった)
  3. *.bin : EPS32に書き込むプログラムファイル arudiono IDEで作成したものをコピーしておく (arduino IDEで "スケッチ - コンパイルしたバイナリを出力" でファイル出力できる)


書き込み手順


  1. ESP32をUSBでパソコンに接続する
  2. USB Serialとして認識されるのでそのCOMNoを調べる
  3. コントロールパネル - デバイスマネージャー - ポート(COMとLPT) にCOMNoが出てくる
  4. ESP32Write.batをダブルクリックして起動する
  5. "COM No Input=" と表示が出るので、COMNoの数字部分を入力してenterを押す( "COM12"なら"12"を入力)
  6.  書き込み処理が開始され、終わると 
  7. "続行するには何かキーを押してください・・・”と表示されるので何か入力すると窓が閉じる
  8. 書き込みが完了するとESP32に書き込んだプログラムが自動で実行される








"sample_bin"フォルダには1s周期で点滅する"blinkTest.ino.esp32_1s.bin"があります。binファイルを差し替えれば、点滅周期が変わり、binファイルの書き換えができることが確認できます。

補足

arduinoIDEが作成するbinファイルの取得方法

コンパイルするときに, ”スケッチ - コンパイルしたバイナリを出力” を選択する。
生成されるbinファイルは、”・・・ドキュメント\Arduino・・・”以下のフォルダにある。

参考資料

esp32 arduino バイナリ配布 

このWEBのBATファイルを元にCOMポートの入力と、binファイルの自動取り込みを追加した
http://k-hiura.cocolog-nifty.com/blog/2019/06/post-17ebf9.html

以下はコマンドプロンプトの使い方の参考web

batfileの起動方法
exploerの窓のアドレスが表示されている横長の窓で、アドレスを消して"cmd"と打つとコマンドプロンプトが起動する
https://www.adminweb.jp/command/ini/index1.html#section5

batファイル実行中にdataを入力する
http://park1.wakwak.com/~ima/windows_tips0004.html
set /P INPUTDATA="data input="
とすると%INPUTDATA%に入力した文字列が入る

batファイルに引数を持たせる
https://www.adminweb.jp/command/bat/index6.html

batファイルの中でファイル名を取得する (検索文字列: "環境変数 ファイル名取得")
for %%変数名 in (検索対象ファイル名) do echo %%変数名
http://www.yamatyuu.net/computer/program/bat/for_files.html

dosコマンド一覧
https://www.pg-fl.jp/program/dos/doscmd/





2 件のコメント:

  1. 非常にありがたい記事でした。作成されたbatファイルを使わせてもらいたいのですが、よろしいでしょうか。arduinoのbinファイルを配布する時に使いたいと思います。

    返信削除
  2. ご連絡ありがとうございます。ご自由にお使いください。

    返信削除