2020/11/14

macOS Big Sur + Arduino IDE + M5Stack


macOS Big Sur 入れたら案の定ビルドが出来なくなった〜〜。

買ったばかりの CoreInk だからダメなのかと思ったら M5Stack もダメでした。

調べてみるとしばらく前から Big Sur で esptool.py が動かないという報告と色々な対処が。

一番筋が良さそうな方法があったので試したらうまく行ったのでメモしておきます。


注)公式でもサポートしそうな雰囲気があります。まず ~/Library/Arduino15 以下を削除するとかして、Arduino IDE 環境をクリーンインストールしてみて、それでもダメだったら試してみてください。


スイッチサイエンスさんでも、M1 + Big Sur での対処法書かれてますね。こちらも参考にしてみては(2020/12/21)。
https://mag.switch-science.com/2020/12/21/macos-espr-developer/


さて、私が対処したとき参考になったのは、

https://github.com/pyserial/pyserial/issues/509

の Eliahg さんの A better fix ... とコメントしている投稿

やってることは Python を最新のものでビルドしなおして、esptool.py を Git から拾ってきて(多分 Python3 版)、esptool バイナリをスクリプト版に入れ替えです。スクリプトの名前変えて、実行属性つけて、呼び出す Python を Python3 にしてます。

Python にはバグがあるらしいのですが、Python のリポジトリではすでに Apple によってバグフィックスされてるのですが、Big Sur には反映されていないらしいので Python のビルドしなおしが必要だそうです。ビルドはそこそこ時間かかります。


基本的には Eliahg さんのやってることそのままなのですが、自分の環境だと esptool の場所が違うので、そこを変えたぐらい。

実際に実行したコマンドを書いておきます。esptool のパスはそれぞれ若干違うかも。最新のにしたら 3.0.0 でした (11/28/'20)。

% sudo rm -rf /Library/Developer/CommandLineTools

% sudo xcode-select --install

% brew install --build-from-source python

% /usr/local/bin/pip3 install pyserial

esptool.py を以下からダウンロードする https://github.com/espressif/esptool/blob/master/esptool.py

% mv ~/Library/Arduino15/packages/m5stack/tools/esptool_py/2.6.1/esptool ~/Library/Arduino15/packages/m5stack/tools/esptool_py/2.6.1/esptool.old

% mv ~/Download/esptool.py  ~/Library/Arduino15/packages/m5stack/tools/esptool_py/2.6.1/esptool

% chmod +x ~/Library/Arduino15/packages/m5stack/tools/esptool_py/2.6.1/esptool

エディタで esptool の先頭を修正 #!/usr/bin/env python を #!/usr/local/bin/python3 

% vi ~/Library/Arduino15/packages/m5stack/tools/esptool_py/2.6.1/esptool


以上です。


ちなみに PlatformIO も同じように対処できて、

~/.platformio/packages/tool-esptoolpy@1.20600.0/esptool.py

を上記スクリプトに置き換えれば OK でした。

2020/11/01

MAK127 focuser Ver.2 (ソフトウェア編)

 ソフトのインストールを少しと操作方法を解説します。

MAK127 フォーカサーの制作は、概要ハードウェア編コントローラ選択編、そして今回で一応一通りです。

ファームウェアのインストール

ATOMIC ステッパーモータードライバキットの ATOM lite と、M5Stack (PC を使う人は不要)にプログラムを書き込みます。

ソフトウェア一式は GitHub 上に上がっています。

https://github.com/ttrsato/mak127focuser2

リンク先の Code、Download Zip をクリックするとまとめてダウンロードができます。


ダウンロードしたファイル mak127focuser2-main.zip を解凍します。

ATOM lite 用は ATOM_StepMotorCtrl.ino

M5Stack 用は M5Stack_focus2_controll.ino

が Arduino IDE 用のコードになります。
コンパイルするには ESP32_I2C_Slave と、LovyanGFX の二つのライブラリのインストールが必要です。
内容が古いのですがラズパイ好きの日記に Arduino IDE や M5Stack に挿した SD カードに入れた複数のプログラムを切替えられる LovyanLouncher のインストールなどについて書かれています。神楽坂らせんさんのnoteが比較的新そうです。ここら辺はアップデートが激しいので公式のドキュメントをみた方が良いです(英語ですが)。細かいこと知らなくてもインストールできる方法も模索したのですが、ライセンス的に問題なくしっくりくる方法がなくて(GPL系は苦手です)。ソースコードを公開しますのでコンパイルしてインストールしてみて下さい(MIT ライセンス)。まぁ、インストールに関しては別途詳しく書くかもしれません。何かご質問あれば Twitter まで。

セットアップ

選んだステッピングモータに合うようセットアップが必要です。
一回転のステップ数と1ステップを更に細かく分割する二つの設定が必要です。

一回転のステップ数

ステッピングモーターの基本的な分解能は、例えばハードウェア編で紹介したモータの仕様を見ると一回転ステップ数という項目があり、200と書かれています。この数字が基本的な分解能です。一回転のステップ数という項目がなくて、ステップアングルという項目しか無い場合は、例えばこのモータの場合 1.8°なので、360/1.8=200と計算で求めることができます。

1ステップの分割数

ATOMIC ステッピングモータードライバキットに載っているモータドライバICのDRV8825は、基本的な分解能を更に細かくできる機能(マイクロステッピング)があります。200ステップのモータでも十分細かいのですが、更に細かくしたい場合はこの機能を設定します。1/1(Full), 1/2(Half), 1/4, 1/8, 1/32 の設定ができますが、あまり細かくしてもその違いが分かりませんし、細かすぎて動かすのが大変です。ちなみに買ってきたばかりの ATOMIC ステッピングモータードライバキットは 1/32 の設定になっていて(少なくとも私が買ったものは)、細かすぎるので変えた方が良いと思います。

M5Stack の設定

多分こちらを先に設定した方が良いでしょう。Cボタン(一番右端)を押したまま赤いボタンを押して起動します。設定画面が表示されたらCボタンを離します。
Bボタン(Sel) を押すと Step/Round, Ustep, Brightness(明るさ) を順に選択します。選択後はエンコーダのダイヤルを回すと設定値を変更することができます。
一回転のステップ数は Step/Round に、分解能は Ustep で設定します。分解能は 1/4 ぐらいが丁度良い感じだと思います。これら設定値及明るさの Brightness は保存できます。Aボタン(Save) ボタンを押すと、次回起動したときにこれら値が自動的に設定されます。Cボタン(Quit )を押すと設定は保持したままですが、電源を切ると元の値に戻ります。



ATOMIC ステッピングモータードライバキットの設定

M5Stack で決めた分解能は ATOMIC ステッピングモータードライバキットでも設定する必要があります。ATOM lite を外すと写真のようになって基板の中央上側に4チャンネルのディップスイッチが見えます。これを変えて設定します。買ったばかりだと保護のビニールが貼ってあると思うので剥がします。
設定は M5Stack の設定画面の Ustep 右端に表示されています。1/4 だと LHLX となっていますので、ディップスイッチも LHLX (L は下側、H は上側、X はどっちでも)と設定します。写真は LHLX の設定です。ちなみに製品のページにこれら設定の表がありますが間違ってました。直ったかな?

あともう一つやっておいた方が良いところがあります。DRV8825の電流の調整。無駄に電流が多いと消費電流が多くなるし、何しろモータがかなり熱くなります。蓋を開けると下の写真の赤丸のところに電流が調整できるところがあるので、プラスドライバーで回して調整します。左に回して行ってちゃんとモータが回るよりはちょっと大きめのところにしておくと良いと思います。あまり左に回しすぎると電流が少なすぎて回らなくなります(脱調という)。


設定は以上です。

M5Stack の使い方

使っている雰囲気はこんな感じです。結構サクサク動くので手放せません。

基本操作

使い方は至って簡単。エンコーダのダイヤルを回せば回した方向にフォーカスノブの棒が回ります。右端のボタンを押すと x1, x5, x10 が順繰り交代します。x1 はそのまま 1倍で、モータが一周200ステップならばエンコーダが200クリックすると一回転します。Faces のエンコーダは20クリックで一周するので、10回エンコーダを回すとフォーカスノブ一周です。
x5 は 5倍なので、200/5=40クリックで一周。x10は 200/10=20クリックで一周。つまり x10の時はエンコーダの一周がフォーカスノブの一周。

Fine モード

また、エンコーダにはプッシュボタンが組み込まれていて、これを押すと Fine モードの切替ができます。分解能1/4 に設定していればFineモードではエンコーダの1クリックが360/200/4=0.45°です。200x4=800クリックで一周。つまりエンコーダを40回転させないとフォーカスノブは一周しないと。エンコーダのボタンをもう一度押すと元に戻ります。

マーク

ピントの様子をマークしておくことができます。左端のMarkボタンを押すと円周上にマークを二箇所置くことができます。

ピントの山を自動的に決定する

バーティノフマスクなんて持っていないので、ピントの山に迷った時、先ほどマークした二箇所をピントの山に対して同じ距離離れたところと仮定した場合に、真ん中の Center ボタンを押すと、Fine モードに移行して、マークした真ん中にピントノブが移動します。例えばピントの山の両脇のぼやけかたが似ている箇所をマークするとか、クレーターの小さな点が消えるところを両端にするとか。そんな使い方で。
こんな風に使います。

輝度調整
設定画面にしなくても右端のボタンを押しながらエンコーダを回すと輝度調整ができます。x1, x5, x10 は変わってしまいますが。

ATOM lite の使い方と表示

ノーマル状態

緑のLEDが点灯し、正常に動作していることを示します。モータは励磁状態と言って磁力が加わって位置が固定されています。指でモータの軸を回そうとすると結構力を入れないと回りません。ちなみに小さくシャーと言ったようなノイズが聞こえます。ステッピングモータはこういうもんです。
この状態で矢印のところのボタンを押すと赤色のLEDになり、モータが停止していることを示します。先ほどの励磁状態が解除され、モータの軸がスルスル回るようになります。マニュアルフォーカスをしたい時はこの状態にします。もういちどボタンを押すと励磁状態に戻ります。

LED が赤点滅する

12V 電源が入っていないと赤点滅になります。電源が入ってモータが停止しているだけだと赤色にはなりますが、点滅はしません。ちなみにモータ自身は9V電源でも回ると思うのですが、この簡易電源チェックのために、多分動きません。



モータドライバの異常

LED が白点滅する場合は、DRV8825 が異常状態を示す時です。モータは動きません。ATOM lite を DRV8825 から外すとこれを模擬した LED 状態をになります。

LovyanLauncher 対応

LovyanLauncher に対応していますので、バイナリを M5Stack に挿した SD カードに入れておけば A ボタン(左端のボタン)を押しながら M5Stack の電源を入れるとアプリを切り替えることが出来ます。M5Burner で M5Stack に LovyanLauncher がインストールされていることが前提です。

PC 版コントローラについて

インストール

Windows10、Mac 版があります。インストールは特に入りません。下記フォルダーの下のバイナリー をダブルクリックすれば実行されると思います。ちょっと立ち上がりが遅いのと、実行時に警告が出る場合があるので、Windows の場合は詳細をクリックして、実行、Mac の場合は起動時に右ボタンのメニューから開くを選択すると実行できると思います。

Python script をバイナリにしたもので、オリジナルの Python script も一緒に置いてあるので Python3 環境がある方はこちらでも構いません。

使い方

最初に ATOM lite がつながっている COM ポートを選択して Open ボタンを押す以外はほぼ似たような操作です。ただ回すだけですし。マウスホイールでフォーカスノブが回るように作られているので、ホイール付きのマウスまたは、ホイールの動作が模擬できるトラックパッド及その設定が必要です。ちなみに Mark 機能の実装はサボっています(めんどくさかっただけ。実装が複雑という訳でも無いのですが)。

以上、ソフトウェア編になります。