はじめに
2023年11月頃に購入したおもちゃ。おもちゃはロボマ◯ターのインスパイアっぽい感じです。
このおもちゃをベースにArduRoverのメカナムホイール式ラジコンに改造しました。
製作メモとして残しておきます。
写真
改造後
オリジナル
不要なパーツを取り除いた状態
スペック
- CubePilot Cube Black (ArduRover 4.7.1)
- Power Brick Mini
- HENGE UBEC 6A 5V
- LDO 5V→3.3V
- GNSS モジュール
- モータードライバ 秋月電子 DRV8835
- BETAFPV ELRS Nano レシーバー V4.1.0
- DroneBridge for ESP32 V2.4.0
モーターは130サイズのブラシ付きDCモーターです。1Sリポ(Max 4.2V)で駆動していましたので、たぶん6V設計と予想して5Vで駆動させます。
130サイズは1.5V、3V、6V、12Vを見たことあるのであくまでも予想です。分解したときにあまったモーターで試して問題なさそうでした。たとえ燃えても替えはいくらでもあるので気にしませんw
接続図
電源まわりは手元にあったものを再利用して構成しています。もっと最適化もできたでしょうね。
モータードライバ
一点ものなのでユニバーサル基板に組み込んでいます。
モーターのPHコネクターのピッチが2mmなので、合わせるために両面ノンスルーホール2.54mm×2mmピッチ基板を使っています。
ユニバーサル基板のサイズが、ピッタリおもちゃの電池ボックスに収まってグッドです。
テスト中の写真
テレメトリー
DroneBridge for ESP32 を自作しました。これを使ってテレメトリーを取得しています。
こっちの基板はJLCPCBで製造しました。オリジナルと同じ配線ですがピンヘッダに変えています。別売りのロッドアンテナにしているので感度も向上しているはずです(たぶん)。
Cube Blackに接続するモジュールです。
GCS (Ground Control Station)に接続するモジュールです。
GCS側のモジュールをAndroid端末に接続しています。ちゃんと認識しました。PCにつないでも使用可能です。GCSはQGroundControlを使用しています。
(写真ではV2.2.1となってますが、撮影のあとV2.4.0に更新しました。)
QGroundControl 5.1 による設定
ArduRover 4.7.1は執筆時点で最新バージョンです。QGroundControlも最新バージョンを使用してください。古いQGCですとParameterを適切に設定できません。警告が出るので書くまでも有りませんね。
フレームの設定
フレーム(FRAME_CLASS)はローバーを選択します。
FRAME_TYPEはメカナムホイールを選択しますが、ここでは設定できないのでParametersで設定します。(後述)
ESC の設定
ブラシ付きモーターで、ドライバにDRV8835を使います。
DRV8835はPHASE/ENABLEモードにしてください。
設定はBrushedWithRelay を選択します。
飛行モードの設定
飛行モードチャンネルは6以降にしてください。
ExpressLRSのチャンネル5は1ビットで、Betaflightで使用する場合は通常はARM/DISARMとして使用します。
飛行モードはお好みに合わせてOKです。
Servo Output の設定
DRV8835はPHASE/ENABLEモードに設定してください。DRV8835が1つで2個のモーターを駆動できます。よって、Motor1とMotor2は同じDRV8835で駆動され、Motor3とMotor4も同じDRV8835で駆動されます。AIN1とBIN1がフェーズ、AIN2とBIN2がイネーブルです。
- イネーブルをCube Blackの MAIN OUT 1-4 に接続します。
- フェーズをCube Blackの AUX OUT 1-4 に接続します。
こちらの図 を参照してください。
フェーズをON/OFFすることで正転・逆転を切り替えることができます。
FunctionのMotor1-4をそれぞれのモーターに割り当てます。上から見て右上から時計回りに割り当てます。
- Min PWM値を1000に設定します。
- Max PWM値を2000に設定します。
- Trim PWM値を1000に設定します。 注意!1500ではありません。
Reverseは必要に応じて設定してください。変な動きをしたらここを確認してください。私の場合、Reverseを設定しなかったら前に進もうとすると右に進みました。モーターの接続を入れ替えてもいいですがちょっと面倒くさいかも。
AUX OUT 1-4 はこの画面の9-12に対応しています。FunctionをGPIOに設定してください。ほかはデフォルトのままで問題ありません。
電源の設定
余っていたLiPoバッテリーを使用しました。バッテリーのスペックに合わせて適当に設定してください。Voltage Multiplierは電圧計で実測しながらCalculateボタンを押して設定できます。
今回使用したPower Brick Miniでは電流が少なすぎて正確に測定できないみたいです。よって適当です。電流をドバドバ使うブラシレスモーター用ですから仕方ないですね。
もっとも電圧だけ分かれば十分。過放電しないように注意しましょう。
送信機の設定
キャリブレーションして終わり。
デッドゾーンはParametersでいい感じに設定しましょう。
設定リスト
主なパラメータを抜き出しています。
| パラメータ | 値 | 種別 |
|---|---|---|
| ARMING_SKIPCHK | 2076 | Arm Checks to Skip (bitmask) |
| BRD_SAFETY_DEFLT | 0 | Disabled |
| FRAME_CLASS | 1 | Rover |
| FRAME_TYPE | 2 | OmniX |
| GPS2_TYPE | 1 | AUTO |
| GPS_PRIMARY | 1 | SecondGPS |
| MOT_PWM_TYPE | 3 | BrushedWithRelay |
| MOT_SAFE_DISARM | 1 | PWM Disabled when disarmed |
| MODE1 | 4 | HOLD |
| MODE2 | 4 | HOLD |
| MODE3 | 0 | Manual |
| MODE4 | 0 | Manual |
| MODE5 | 10 | AUTO |
| MODE6 | 10 | AUTO |
| MODE_CH | 6 | Mode Channel |
| RC5_OPTION | 153 | ArmDisarm |
| RELAY1_DEFAULT | 0 | Off |
| RELAY1_FUNCTION | 5 | Brushed motor relay |
| RELAY1_INVERTED | 0 | Normal |
| RELAY1_PIN | 50 | AUXOUT1 |
| RELAY2_DEFAULT | 0 | Off |
| RELAY2_FUNCTION | 6 | Brushed motor relay |
| RELAY2_INVERTED | 0 | Normal |
| RELAY2_PIN | 51 | AUXOUT2 |
| RELAY3_DEFAULT | 0 | Off |
| RELAY3_FUNCTION | 7 | Brushed motor relay |
| RELAY3_INVERTED | 0 | Normal |
| RELAY3_PIN | 52 | AUXOUT3 |
| RELAY4_DEFAULT | 0 | Off |
| RELAY4_FUNCTION | 8 | Brushed motor relay |
| RELAY4_INVERTED | 0 | Normal |
| RELAY4_PIN | 53 | AUXOUT4 |
| SERVO1_FUNCTION | 33 | Motor1 |
| SERVO1_MAX | 2000 | |
| SERVO1_MIN | 1000 | |
| SERVO1_REVERSED | Reversed | |
| SERVO1_TRIM | 1000 | |
| SERVO2_FUNCTION | 34 | Motor2 |
| SERVO2_MAX | 2000 | |
| SERVO2_MIN | 1000 | |
| SERVO2_REVERSED | Reversed | |
| SERVO2_TRIM | 1000 | |
| SERVO3_FUNCTION | 35 | Motor3 |
| SERVO3_MAX | 2000 | |
| SERVO3_MIN | 1000 | |
| SERVO3_REVERSED | Normal | |
| SERVO3_TRIM | 1000 | |
| SERVO4_FUNCTION | 36 | Motor4 |
| SERVO4_MAX | 2000 | |
| SERVO4_MIN | 1000 | |
| SERVO4_REVERSED | Normal | |
| SERVO4_TRIM | 1000 | |
| SERVO9_FUNCTION | -1 | GPIO |
| SERVO10_FUNCTION | -1 | GPIO |
| SERVO11_FUNCTION | -1 | GPIO |
| SERVO12_FUNCTION | -1 | GPIO |
| SERIAL0_BAUD | 115 | Serial0 Baud rate |
| SERIAL0_PROTOCOL | 2 | Mavlink2 |
| SERIAL1_BAUD | 115 | Telem1 Baud rate |
| SERIAL1_PROTOCOL | 2 | Mavlink2 |
| SERIAL2_BAUD | 57 | Telem2 Baud rate |
| SERIAL2_PROTOCOL | 23 | RCIN |
| SERIAL3_BAUD | 230 | Serial3(GPS) Baud rate |
| SERIAL3_PROTOCOL | -1 | None |
| SERIAL4_BAUD | 230 | Serial4 Baud rate |
| SERIAL4_PROTOCOL | 5 | GPS |
| SERIAL5_BAUD | 57 | Serial5 Baud rate |
| SERIAL5_PROTOCOL | -1 | None |
動作確認
CH5のスイッチ操作でアームしました。CH6の3ポジション・スイッチでマニュアルにしました。
メカナムホイールなので狭い部屋でも八の字走行が余裕でできます。楽しいw
改造前のコントローラではモーターON/OFFだけでしたが、今回はスロットル操作で速度を制御できるようになりました。コントロールしやすいですね。
まとめ
GNSSモジュールをつけていて、自宅の窓際では問題なく衛星を捕捉できました。コンパスもだいたい大丈夫そうです。
しかしちょうど雨続きのため、まだ屋外でオートパイロットが試せていません。晴れた日に試すのが楽しみです。
特別新しいネタでもないですけど、ArduPilotを使った4WDローバーの設定方法がまとまっているサイトはそう多くはなかったので、将来の自分のためにもまとめてみました。














