[M5StickC] RoverC ProとJoyCでメカナムホイールラジコン事始め

【この記事の所要時間: 750秒】

今更かもだけど、ふと面白いホイールを知った。
通常のホイールの接地面に当たる部分に、小さな樽型の回転コマがやや斜めになって円周に沿って多数並んだ「メカナムホイール」という物。
通常のホイールが車軸の垂直方向(前後)へ動くだけなのに対して、真横や斜め方向にも動くことが出来る。
四輪配置された各車輪の回転方向や回転速度を変えることで自由自在に動かせて、その挙動はまるで陸上版ドローンといった趣き。
Amazonなどでも、このメカナムホイールを使ったラジコンが幾つも見掛け、マニピュレーター(グリッパー/ハンド、クレーン、フォークリフト)やカメラを搭載した物、中には柔らかいウォータージェルを発射する物まで多種多様。
また、Raspberry PiやArduinoなどのプロセッサーモジュールを搭載して制御出来る物も有る。

公開されている様々な動画を観ているうちに、この摩訶不思議な挙動に惹かれて、自分でも動かして(走らせて)みたくなった。
手軽なのは最初から完成しているラジコン…比較的安価で直ぐに遊べるけれどちょっと物足りない。
Raspberry PiやArduinoを使うタイプはやや高価な上に本体以外にも結構費用が掛かり(特にRaspberry Piは現在暴騰しているし…)、セットアップの敷居も高い。

その中で見つけたのが、M5StackRoverC Pro
M5StickC(現行はM5StickC Plus)という比較的安価で、大人の親指程度という非常にコンパクトながら多機能なプロセッサーモジュールを使用するメカナムホイールカー(ロボット)。
動作にはM5StickCを使ってプログラムを作成・実行する必要があるが、JoyCというコントローラーと組み合わせてラジコン操作が出来るサンプルプログラムが公開されているので、開発環境を整えれば先ずはラジコンとして遊ぶことが出来る。
尚、国内でも数社で取り扱いがあるものの、タイミングが悪く現時点では全て品切れで入荷未定。
幸いにM5Stackの公式オンラインショップに在庫があり、送料を含めても国内価格と大差無かったため注文し、つい先日届いた。
他に、コントローラー JoyC、RoverC ProとJoyCに使用するM5StickC Plus、いずれ画像認識もしたいというわけでAIカメラモジュール UnitVを、こちらは在庫が有る国内ショップで購入した。

RoverC Pro w/M5StickC Plus & JoyC w/M5StickC Plus

購入品

RoverC Pro、JoyC、UnitV、M5StickC Plus(二個)
M5StickC Plus用液晶保護シート(二枚入り)とRoverC Pro購入時に付属していたカード

M5StickC Plus

RoverC ProとJoyCには付属していないため、それぞれ用に購入する必要がある。
付属品は一切無く、本体にジャストフィットな箱に収められている。
M5StickC Plusの多彩な機能については、未だ使い始めたばかりでとても紹介しきれないので割愛。

RoverC Pro (w/o M5StickC)

RoverC Pro 本体と付属品一式

RoverC Proはほぼ組み立て済みで、必要に応じてグリッパー(手前にある角状の物)を取り付ける。
グリッパーはサーボ制御により開閉し小物を挟むことが出来る。
尚、各部に開いている丸い穴はレゴブロックのコネクタピンと互換があり、様々なブロックの装着が可能。

グリッパーユニットとM5StickC Plusを装着

M5StickC PlusはRoverC Proのピンヘッダに差し込むのみで特に固定する機構は無いが、容易に外れる恐れは無し。

JoyC (w/o M5StickC)

JoyC 付属品は無し

左右にジョイスティックが有り周囲にLEDが並んでいる。
それぞれ全方位に傾けることが出来て、電源が入っている状態では傾けた方向のLEDにが点灯する。
押しボタンは無いが、両スティックとも押し込み操作に対応。

M5StickC Plusを装着

こちらもM5StickC PlusはJoyCのピンヘッダに差し込むだけど、こちらは容易に抜けることはないが多少ガタつく感じ。
粘着力が弱めの両面テープで固定しようかな。

UnitV

UnitV 本体と付属品

画像の色や輪郭、動きなどを認識出来るAIカメラ…もちろんプログラミングが必要だけど、RoverC Proと組み合わせれば、ライントレースや障害物回避、物体追尾など、応用範囲はかなり広そうだ。

充電

RoverC ProとJoyCのバッテリー

RoverC ProとJoyCには共に汎用(16340)のリチウムイオンバッテリーが使用されており、着脱可なので手持ちの充電器でも充電出来るが、M5StickC Plus本体と合わせて充電する。

RoverC Pro側(スライドスイッチはRoverC Pro本体の電源スイッチ)
JoyC側(スライドスイッチはJoyC本体の電源スイッチ)

RoverC ProとJoyCともに、搭載したM5StickC PlusのUSB-Cポートを介して給電⇒充電する。
この際に各M5StickC PlusとRoverC Pro/JoyCの電源はONにしておくとのこと。
但し、全てOFFでも問題無く充電されるとの報告もあるので、余り厳密に考えなくても良さそう。
尚、充電中(充電完了)表示は無いので、気になる場合はUSBチェッカーなどで電流量を監視するのも良いだろう。(電流量が著しく下がったら充電完了。)

試運転

MacBookPro/13に入れているmacOS12.3はM5StickC関連のツールと相性が悪く、接続しても認識しない・転送出来ない、といった報告を見かけたので、GPD P2 Maxに開発環境を構築した。

様々な関連ツールが用意されているが、先ずはラジコン操作としての試運転が出来る最小限の環境から構築していこう…というわけで、ラジコン操作のサンプルプログラム(スケッチ)が用意されている Arduino IDEをセットアップ。
インストールからセットアップ(必要ライブラリのインストール等)、M5StickC Plusへの書き込みなどの手順については、詳細且つ大変分かりやすく説明されているページが数多くあるので割愛。
私も大変お世話になりました。(多謝)

サンプルプログラム(スケッチ)
Arduino IDEの【ファイル】⇒【スケッチ例】で【M5StickCPlus】⇒【KIT】⇒【JoyC_&_RoverC】を開く。
【Master】…RoverC Pro側のM5StickC Plusへ書き込む。
【Remote】…JoyC側のM5StickC Plusへ書き込む。

それぞれのM5StickC PlusとRoverC Pro/JoyCの電源をONにして、RoverC Pro側とJoyC側の両方のM5STickC Plusに同じアクセスポイント名が表示されたら(上の写真)、JoyC側M5StickC Plusの【M5】ボタンを数秒長押しする。
JoyC側M5StickC Plusの表示が数値の羅列(コントローラーの操作値表示)に変わったら操作可能。

開発環境の構築やプログラム(スケッチ)のコンパイル/転送では先達の方々の情報・解説に大変助けられた。
引っ掛かることもあったものの、今まで触れなかった事に触れて知らなかった事を知るのは実に楽しい。
今はまだ出来合いのプログラムを動かしているのみだけど、部分的なカスタマイズから始めて理解を深め、いずれはUnitVを使った画像認識も組み込んでみたい。

それにしてもメカナムホイールの挙動は実に妙で面白いな。

後日談…UnitV搭載

ひとまずM5StickC Plusを二つ使って手動(ラジコン)操作が出来るようになったので、次は一緒に購入したAIカメラモジュール UnitV による画像認識を用いた自律走行にトライしてみたい。

RoverC ProへのUnitVの搭載について…RoverC Pro(本体とグリッパーユニット)とUnitVにはレゴ(テクニックシリーズ)のコネクタを差し込める穴が用意されているので、レゴブロックを組み合わせてコネクタで接続することで搭載出来そう。
幸いに、レゴの様々なブロックパーツを単品販売しているネットショップが有るので、早速構成を検討し必要なパーツを購入した。

RoverC ProにUnitVを搭載

グリッパー動作に干渉しないようにサーボの上にUnitVを搭載した。
M5StickC Plusとケーブルの固定も考慮した構成にしている。

後部にパネルを装着

グリッパーユニットとUnitVでややフロントヘビーになるため、車体の後部にカウンターウェイト代わりのパネルパーツを装着、見た目的な意味も有り。

[IC-705][M5Stack] IC705MultiMeter導入

【この記事の所要時間: 342秒】

IC-705は様々な情報を組み合わせて表示することが出来るが、自分は放送受信が多いので、冒頭に掲載した写真の通りスペクトラムスコープ表示を常用している。
ただ、FT8運用の際にはALCやSWRの表示が欲しい、モバイル運用(バッテリー運用)を想定するとVd表示も有ると便利だろう。
こういうスタイルを常用しているのは自分だけではないようで、IC-705本体がスペクトラム表示主体の際に、M5Stackを使って追加情報を表示するツール(アプリ)「IC705MultiMeter」を開発・公開している方が居たので、早速導入させていただいた。

購入品

購入品一式

IC705MultiMeterは、M5Stackという小型TFTディスプレイや各種センサー、I/F、通信ポート、Wi-Fi/Bluetooth、microSD(TF)カードスロット、他を搭載したマイコンモジュール上で動作する。
本体とバッテリーモジュール、スタンドベース、液晶保護シートを購入した。
M5Stackには様々な拡張モジュール(センサーやアクチュエーター)があってどれも興味深い。
いずれ、他にも活用を考えてみよう。

M5Stack Basic(V2.6)

M5Stack Basicと付属品一式
裏蓋(ボトムカバー)を開けた様子

拡張モジュールは写真内左端に見えているコネクタを介して接続し、本体とボトムカバーの間に挟み込む構造になる。(モジュールによっては複数を組み合わせて装着出来る。)

バッテリーモジュール

M5Stackにはバッテリーが搭載されていないため、後付のバッテリーモジュールを購入。
容量は750mAh。

M5Stack本体に装着。
本体の黒色とバッテリーモジュールの赤色が良い感じ。

スタンディングベース

M5Stackをやや上向きにして置くために購入。
背面に充電/通信用のUSB-Cポート有り、また、湿度温度センサが搭載されていて本体と合わせて温湿度計を作ることも出来る。

拡張モジュール(今回はバッテリーモジュール)を装着した状態では、付属のネジ(銀色)は短くて締まらないため、手持ちのネジ(黒色)に交換。
実は少し長すぎたので、実際に締める際にはナイロンワッシャーを挟んでいる。

組立完了、起動チェックもOK。
スタンディングベースも黒色だったら良かったかも。

セットアップ開始

開発環境

MacBookPro/13を使いたかったけれど、macOS12.3はM5Stack/M5StickCとの相性が悪いらしく、不安定・接続が認識できない・プロジェクトをアップロード出来ない…などの報告もあるため却下。
ラズパイはそのまま使えるパッケージが無く、ソースファイルからのビルドが必要ということで敷居が高い。
というわけで、GPD P2 Max(Windows10)を使用。
速いしコンパクトで文句無しなんだけど…小さい画面(8.9インチ)で高解像度(2560×1600)は目に余り優しくないかも。
ちなみに、GPD P2 Maxのキーボードは配列の癖が少々強いのとキートップの皮脂付着が目立つため、外付けキーボード(折り畳み、Bluetooth)を使用している。

必要なツールは「VisualStudio Code」と「PlateformIO for VSCode」。
それぞれのインストールとセットアップについては、IC705MultiMeterの公開ページ(GitHub)で詳しく解説されている手順に従って行った。

入手したプロジェクトを必要に応じて修正し、コンパイルとフラッシュ(M5Stackへのアップロード)を行う。
コンパイルでは特に躓くことも無くすんなり完了したが、フラッシュではM5Stackが認識されないというトラブルがあり少々手間取った。
結局、USB-Cコネクタの裏表を逆にすることで解決したが…USB-Cコネクタはこのトラブルが結構多い気がする。

早速試用

AFN受信中
AFN受信中

スペクトラムスコープ表示をメインにした場合に追加で欲しい情報表示を見事に補ってくれる。
変更に対する追従にはややラグが感じられるものの、実用上は問題無い。