2020年7月25日土曜日

M5stackにobnizOSを入れる

公式Webの説明にはなかった作業ポイント

M5StackにobnizOSをインストール・設定をする前に、obnizの”開発者コンソール” - ”デバイス” - ”+デバイスを追加”からデバイス登録をしておく。
登録すると、デバイスキーデータファイルをダウンロードできる。

これは、インストール後に手動でデバイスキーの設定をするため。(ダウンロードしたtxtファイルの中にキーが記録されている)


公式、ユーザの説明では、デバイスキーの設定については説明がありません(自動で設定されるのだと思います)が、私の場合は、M5stack画面の表示が出ず、wifi設定などに進めませんでした。

これの対応では、
M5StackをUSBSerialでコンソール接続(115200bps)するとデバイスキー入力の
M5StackにobnizOSのインストールが完了した後に、PCからusbCOMでターミナル接続して、デバイスキーの入力画面が出るので、そこからキーを入力しました。

そのあとでM5Stackをリセットすると、LCD画面に表示が出ました。
この後は上記のユーザのWebの説明に従ってwifi設定ができました。

2020年7月12日日曜日

音声合成ソフト(AquesTalk)はaruduinoIDE(1.8.13)では動かない

概要

音声合成ソフトのAquesTalk(製造元はこちら)
https://www.a-quest.com/products/aquestalk_pico_esp32.html

にはESP32で動作するlibraryがあります。
このページではlibraryファイルの登録を手動で行う指示となっており、作業が煩雑になります。
これを改良して、通常のユーザーlibraryとして扱えるようにしたlibraryパッケージにしたものがこちらのサイトにあります。
https://lang-ship.com/blog/work/aquestalk-esp32/

このlibraryですが、aruduinoIDE(1.8.13)では動きません。

コンパイルすると
"The plaform does not support 'compiler.libraries.ldflags' for precompiled libraries."
と表示が出て、その後 AquesTalkのlibraryに登録されている関数がない("undefined reference)のエラーになります。



代わりにaruduino(1.8.12)なら動作します。


参考

AquesTalk pico for ESP32(AquesTalk-ESP)

Library specification









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/





2020年7月5日日曜日

wio XIAO のuf2による実行プログラム書き込み

概要

arudinoIDEを使えば、コンパイルからボードへの書き込みが行えますが、実行ファイルだけを配布・書き込みしたい場合があります。

wioXIAOはパソコンにUSB接続して、ボードのRESET端子を2回連続でショートするとパソコンからUSBメモリとして認識され、出てきたドライブにbinファイルを変換して作ったuf2ファイルを書き込むとボードへのプログラム書き込みができます。

この手順をまとめておきます。(windows10)

必要なものとインストール・ファイルの準備

書き込むbinファイル

arduino IDEで作成する
(例として、サンプルプログラムのLED点滅のプログラムを使った)



コンパイル後に実行ファイル(binファイル)をファイルとするために
"スケッチ - コンパイルしたバイナリを出力 
を選択してコンパイルする。


実行ファイル(binファイル)
"ドキュメント - Arduino - プログラム名"
のフォルダに保管されている
(ここでは BlinkWithoutDelay.ino.XIAO_m0.bin という名称になっている)


uf2

 binファイルをuf2ファイルに変換するツール。pythonで動作する。


”Download ZIP"でダウンロードする。


解凍して "uf2-master - utils - uf2conv.py"
arudinoの実行ファイル(binファイル)のあるフォルダにコピーしておく



uf2を動作させるためのpython動作環境.20/07/05での最新Ver=3.7で動作した。


リンク先の説明に従ってインストールファイルをダウンロード&インストールする。

インストールの時には、"Add Python 3.7 to PATH"にチェックを入れる。
binファイル変換の時にDOS窓のコマンドラインで処理するため)


binからuf2ファイルの作成

コマンドプロンプトでbinファイルのあるフォルダに移動して、そのフォルダでuf2conv.pyを起動します。

コマンドプロンプトの起動



”Windownsシステムツール - コマンドプロンプト
を選択

binファイルのあるフォルダへの移動


"CD "と入力した後で、exploerbinファイルのあるフォルダをドラック&ドロップすると、フォルダ名が入力される。この状態で"Enter"を押す。

"CD"コマンドについては、こちらを参照
binからuf2ファイルへの変換操作


"python uf2conv.py -c -o filename.uf2 finename.bin"

filename.uf2 : 返還後のuf2ファイルの名称
filename.bin   : arduinoIDEが作ったbinファイル名

-c, -o :これらのコマンドオプションの詳細は不明。こちらのwebを参照した


uf2conv.pyのコードの中にコマンドオプションのコードがあった




uf2ファイルの確認



binファイルのあるフォルダにuf2ファイルができていることを確認する。

uf2ファイルのボードへの書き込み


XIAOを書き込みモードに入れる

製造販売元のwebにあるように、ボードのRESET端子を2回連続でショートすると書き込みモードに入る。そうするとパソコン上にドライブが現れる。





uf2ファイルをarduinoドライブにコピー

ボードをRESETして現れたドライブにuf2ファイルをコピーする。これで書き込みができる。uf2ファイルの書き込みが完了するとパソコン上のドライブは消えて、ボードのプログラムが動作する。

uf2に関する参考Web

ハンディバーサライタ PovRanianの表示映像生成フォームの仕組み

Wio Terminalの実行ファイルを配布するなら.UF2
wio terminalでのuf2での書き込み方法