esp32 arduino バイナリ配布

- ESP32 Arduino バイナリコード書きこみ概要
- バイナリファイル(.bin)の作成
- Windowsで単体で動くuploadキットの作成
- upload/確認手順
- サンプルのダウンロード
- esptoolオプションの選択法
- esptool.pyを使う
- Linuxを使ってupload/確認する
ESP32 Arduino バイナリコード書きこみ概要
例として次のコードを動かします。
// SerialPrint.ino static int count; void setup() { Serial.begin(9600); } void loop() { Serial.print("Serial.print TEST "); Serial.println(++count); delay(1000); }
Arduino-IDEでバイナリを作成し、esptoolで装置にバイナリの書きこみ(upload)を行います。
実行すると、シリアル出力に1秒ごとにカウント表示が出ます。
このバイナリをArduino-IDE無しの環境で装置にupload(インストール)するキットを作成します。
ソースを付けずに書き込み機向けに配布することができます。
バイナリファイル(.bin)の作成

Arduino-IDEで[スケッチ]⇒[コンパイルしたバイナリを出力]で.binファイルを作成します。
ソースと同じフォルダに.esp32.binファイルが作成されます。
SerialPrint.ino ソースファイル
SerialPrint.ino.esp32.bin 作成されたファイル
Windowsで単体で動くuploadキット(esp32loader)の作成
ツールとバイナリファイルのコピー
Windows用のArduino-IDEにはesptool.exeが付属しています。
esptool.exeは単体で動くツールです。
適当な名前のフォルダ(例えば"esp32loader")を作成し
- esptool.exe
と - SerialPrint.ino.esp32.bin(作成されたbin)
esptool.exeは通常次の場所に置かれています。
C:\Users\userName\Documents\ArduinoData\packages\esp32\tools\esptool_py\2.6.1 ・userNameはユーザごとに異なります。 ・2.6.1は別の番号のこともあります。
バッチファイルの作成/esptoolの呼び出し方
作成したフォルダ上にesptoolを起動するバッチファイルを作成します。
ファイル名は例えば"loadSerialPring.bat"などとします。
SHIFT-JISで作成する必要があります。
内容は次のものとなります。
:: (Shift-JIS) :: .binをESP32にアップロードする :: PORTを装置のusbシリアルに合わせて設定すること :: ボーレートも必要なら :: set PORT=COM3 set APP=SerialPrint .\esptool.exe --port %PORT% --baud 921600 ^ --chip esp32 --before default_reset --after hard_reset ^ write_flash -z --flash_mode dio --flash_freq 80m --flash_size detect ^ 0x10000 ./%APP%.ino.esp32.bin pause
upload/確認手順
USBの接続とCOMの確認

WindowsのUSBに装置を繋ぎます。
デバイスマネージャーの「ポート(COMとLPT)」で番号を確認します。
この例ではCOM3となりました。
バッチファイル(loadSerialPring.bat)のPORTをCOM3にします。
USBは自動で認識されました。認識されない場合のドライバ入手法はここでは述べません。
実行
バッチファイルをダブルクリックします。

動作確認
TeraTerm等のターミナルソフトでシリアルポート(ここではCOM3)にアクセスします。
次の出力が1秒間隔で得られます。
Serial.print TEST カウント

サンプルのダウンロード
サンプルを
esp32loader.zip
と
esp32loaderPy.zip
に置いてあります。
次のファイルが入っています。
・esp32loader.zip esp32loader/ +-- esptool.exe +-- SerialPrint.ino.esp32.bin +-- SerialPrint2.ino.esp32.bin +-- loadSerailPrint.bat +-- loadSerailPrint2.bat ・esp32loaderPy.zip esp32loaderPy/ +-- esptool.py +-- SerialPrint.ino.esp32.bin +-- SerialPrint2.ino.esp32.bin +-- loadSerailPrint.bat +-- loadSerailPrint2.bat +-- loadSerailPrint.sh +-- loadSerailPrint2.sh
SerialPrint2は表示に"<2>"が追加されたもので、2つのプログラムを選択的にuploadできるということを確認するためのものです。 次のシリアル出力が1秒間隔で得られます。
Serial.print <2> TEST カウント
loadPySerialPrintは後述のesptool.pyを使うもので、WindowsだけでなくLinuxでもロード作業を行うことができるものです。 しかもコンパクトです。
esptoolオプションの選択法
ここで使用したesptoolのオプション群はArduino-IDEの「ファイル」⇒「環境設定」で"より詳細な情報を表示する"の[書き込み]にチェックを付け 「スケッチ」⇒「マイコンボードに書きこむ」を実施し、トレース画面にでたesptoolの引数を拾い集めたものです。
残念ながらそれぞれのオプションの詳細な意味合いは現時点では把握していません。

esptool.pyを使う
python2.7がインストールされている環境ではesptool.exeではなくpythonでesptool.pyを実行することが出来ます。
WindowsでもLinuxでも動作可能です。
環境によっては次のモジュールのinstallが必要になります。
pip install pyserial
esptool.exeが約3MBあるのに対しesptool.pyは130KBとかなりコンパクトです。
esptool.pyは通常次の場所に置かれています。
C:\Users\userName\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.2\tools ・userNameはユーザごとに異なります。 ・1.0.2は別の番号のこともあります。
バッチファイルは.exeを.pyに置き換えただけです。
Linuxを使ってupload/確認する
LinuxにPython2.7がインストールされていればLinuxからuploadすることが出来ます。
$ sudo apt install python $ sudo apt install python-pip $ pip install pyserial
なおPython2.7は"python"コマンドで動き、Python3は"python3"コマンドで動くようになっているようです。
以下は古いノートパソコンに「ubunto 19.04 日本語Remix」を導入した環境で作業しました。
USBの接続と/devの確認
装置をUSB接続し、次のコマンドでデバイス名の確認を行います。
$ ls -l /dev/serial/by-id/ 合計 0 lrwxrwxrwx usb-Silicon_Labs_CP2102N_USB_to_UART_Bridge_Controller _74f1dcfe1640e811a4b090ad7a7060d0-if00-port0 -> ../../ttyUSB0 $
USBは自動で認識されました。認識されない場合のドライバ入手法はここでは述べません。
実行
USBターミナルのモードを書きこみ可能としたうえで、./loadSeralPrint.shを起動します。
$ cd /project/arduino/upload/esp32loadPy/
$ sudo chmod 666 /dev/ttyUSB0
$ sh ./loadSeralPrint.sh
動作確認
cu等のターミナルソフトでシリアルポート(/dev/ttyUSB0)にアクセスします。
次の出力が1秒間隔で得られます。
$ sudo apt install cu
$ cu -l /dev/ttyUSB0 -s 9600
Serial.print TEST 2166
Serial.print TEST 2167
:
| 固定リンク
コメント