Roller485 Lite おすすめ秋冬着回しコーデ
M5Stack社よりマイコンSTM32内蔵のブラシレスモータユニットが発売されました。
最近はSimpleFOCを活用したブラシレスモータ工作にハマっており、こりゃグッドタイミングと思い購入させていただきました。
食事の時間だ pic.twitter.com/RidUjKO1Ke
— HomeMadeGarbage (@H0meMadeGarbage) October 17, 2024
ここではRoller485 Lite で試した作例 (着回しコーデ)コレクションを紹介させていただきます。
目次
Roller485 Lite
基本操作は以下を参考にしました。
ユニット背面にディスプレイがついており、通信モードやアドレスなど各種設定が可能です。
Arduino用ライブラリ・サンプルコードは以下
https://github.com/m5stack/M5Unit-Roller
早速 ATOMS3をI2C通信でつないで回転速度を指定して動作確認しました (Speed Mode)。簡単!
うまうま pic.twitter.com/1htS6gYMCg
— HomeMadeGarbage (@H0meMadeGarbage) October 17, 2024
1軸姿勢制御モジュール
Roller485 Lite を動かすことができましたので早速 作例1としまして1軸の姿勢制御モジュールを製作してみます。
簡単に筐体を3Dプリントして早速動作させてみました。
こちらはATOMS3の姿勢に応じてRoller485 Lite をCurrent Mode で動かしています。
通信はI2C
なんか変だ pic.twitter.com/3OxE1Mso7S
— HomeMadeGarbage (@H0meMadeGarbage) October 17, 2024
しかしうまく倒立動作を実現できませんでした。
Arduino I2Cライブラリのバグ
よくよく調べてみるとRoller485 へのI2C命令を実行するたびに80msecほどかかっていることがわかりました。。。
これでは制御が間に合うはずがありません。
同様の問題が出ていることを教えていただきどうやら Arduino I2Cライブラリのバグとのことでした。
Roller485の公式サンプルプログラムのI2Cが異常に遅い問題は、@M5Stack さんからのコメントでArduinoのライブラリの問題(?)のようだと判明したのでESP-IDFのI2CのAPIで書き直したものを作って試しました。
公式サンプルでは70msほどかかった4バイトの書き込みが0.2ms程に改善。これなら良いかな。…
— こうへい(Kouhei Ito) (@kouhei_kanazawa) September 28, 2024
たまたまこれまでESP32のI2C通信での遅延が動作に大きく影響することがなく このバグに全く気づきませんでした。。。
ESP32向けにI2C通信をカスタマイズすれば改善するとのことですが、私にその技量はありません。。
(オデ プログラミング キライ ニンゲン クウ)
RS485通信
しょうがないので Roller485 Lite とのもう一つの通信手段であるRS485を試します。
RS485変換デバイスはシリアルサーボ通信の際に使用しており専用基板も製作しておりましたので活用します。
早速、RS485通信でモータを回してみましたが。。。
はじめてのRS485通信
なんとか回せたけど見るからに応答遅くてイヤな予感しかしない pic.twitter.com/Bh97q6WVfc— HomeMadeGarbage (@H0meMadeGarbage) October 17, 2024
明らかに遅い。。。一応指定速度には応答しているし、回転速度等のデータも受信はできています。。
調べてみると命令通信に500msec以上かかっていました。。
I2Cより遅い。。。
RS485通信を試す
お。。遅い。。。1命令 500msec以上かかってるんだけど。。
俺が何か間違ってるかも。
でも遅いなりに回転命令送信できてるし回転速度等のデータも受信できてる。I2Cだとだいたい1命令80msec pic.twitter.com/YrC1Ze7uoF
— HomeMadeGarbage (@H0meMadeGarbage) October 17, 2024
Roller485のRS485通信ライブラリのタイムアウト時間を短くすれば若干改善するのですがタイムアウトするということは何か通信がうまくいっていない可能性があります。
ちょっとこれもギブアップかな。。
ATOM Matrix
通信がうまくいかないので Roller485 Lite の使用をバージョンアップまで保留しようと思ったのですが、試しにATOMS3からATOM MatrixにしてI2C通信でモータを回してみたところ…
お!ATOM Matrixだと遅延小さいぞ
S3の問題かな??
ワンチャンあるかも pic.twitter.com/TnW7TsFuc7— HomeMadeGarbage (@H0meMadeGarbage) October 18, 2024
I2C通信 1命令 約2.4msecほどで大きく遅延が改善されました。これでも正常にI2C通信出来ているとは言えませんが物理倒立動作においてはギリギリイケそうな数値でもあります。
リベンジ
コントローラをATOMS3からATOM Matrixに変更して1軸姿勢制御モジュールにリベンジしました。
ブラシレスモータかと思ったら
リアクションホイールでした#まいにちチクショー pic.twitter.com/hjT0RZFSzQ— HomeMadeGarbage (@H0meMadeGarbage) October 18, 2024
I2C通信の遅延が改善したため無事に倒立動作を実現できました!
筐体底面を過保護に傾きを緩めたので起き上がりも余裕♪
倒立振子
ATOM Matrixの採用によって1軸姿勢制御モジュールが実現できましたので、次にRoller485 Lite を2個使って倒立振子を試します。
付属のLEGOテクニック風の接続治具や両面テープで工作
ちょっとタイヤが小さいな。。
Roller485で倒立振子
ひとまずできたけどタミヤタイヤだと小さいな
タイヤは作り直して再度調整する pic.twitter.com/xUj6aERJxl— HomeMadeGarbage (@H0meMadeGarbage) October 18, 2024
タミヤのタイヤを付属のステージにかぶせて固定してみましたが、ちょっとタイヤ径が足りなかったです。
バッテリは2セルLiPoを使用
タイヤを3Dプリントしました。径=65mm。まだ小さかったかな??
しかし無事に安定動作を確認することができました。
3軸姿勢制御モジュール
本コレクション最後はRoller485 Lite を3個使った3軸姿勢制御モジュールを紹介させていただきます。
さぁ次はなんだ
俺はもっとうまいもんが喰いたいんだ pic.twitter.com/psveXT1sJe— HomeMadeGarbage (@H0meMadeGarbage) October 18, 2024
筐体製作
筐体を3Dプリント
ブーン pic.twitter.com/no0tZJRPW8
— HomeMadeGarbage (@H0meMadeGarbage) October 19, 2024
帰ったら炊けてた pic.twitter.com/1ig9vQO1E7
— HomeMadeGarbage (@H0meMadeGarbage) October 19, 2024
辺倒立
まずはモータ1個で辺倒立動作の確認
進捗 33% pic.twitter.com/Y6hbElPyvv
— HomeMadeGarbage (@H0meMadeGarbage) October 19, 2024
問題なく動作しました。
バッテリは倒立振子同様2セルのLiPo
点倒立
いよいよRoller485 Lite を3個実装して点倒立に挑戦です。
I2Cラインを加工しました。本モジュール唯一の電子工作加工です。
コレでATOM Matrixとモータ3つをつなぎます。
電源もオレンジ色のRS485コネクタで配線して準備完了。
Roller485 Lite内部でモータ電源から5VをDCDCしてくれてI2C 4ピンコネクタから供給してくれるので電源設計の必要もなくLiPoバッテリ接続のみなのでシステムは非常にスッキリで簡単です。
ほれ。点倒立できましたよ。
上にSHISEGYO-3 DC も載せてみた
ガンダムMk-II pic.twitter.com/C1bxcpeF6p
— HomeMadeGarbage (@H0meMadeGarbage) October 19, 2024
おわりに
Roller485 Liteを用いた作例を3種 紹介させていただきました。
ESP32のArduino I2Cライブラリのバグで一時はどうなるかと思いましたが何とか色々試せてよかったです。
本バグは今後も悪影響を及ぼすと思いますので別途対策を考えたいです。
今後もRoller485 Liteをその時のシーンに合わせて上手に着こなしたいと考えております。
それでは次のコレクションでお会いいたしましょう。
ごきげんよう