こんにちは、押切です。
タミヤさんから、「四輪クローラー工作セット」という魅力的なキットが発売され、かつ、ボディはワイルドミニ四駆のものが使用できるということで早速入手して見ました。
格好いいので早速、スマホで操作できる改造ミニ四駆キット「MKZ4」の基板をつかって、スマホでリモコン操作可能に改造してみました。
目次
四輪クローラー工作セットの改造
機構(メカ)の改造後
改造といっても、MZK4のモーター接続を 四輪クローラー工作セット のモーターに接続するだけのシンプルな構造です。
まずは、モーターの線をMKZ4基板と繋ぎます。
次に、電池ボックスの上に両面テープを載せてMKZ4の基板を貼り付けます。
電池ボックスは下側にちょうど収まりました。
但し、メカの構造上、前進後進のみで、左右に曲がることはできません。
操作アプリの改造後
ちょっと寂しいので、今回はモータードライバの速度制御と荷台の稼働にチャレンジし、同じフリックUIで違和感なく操作できるようアプリも変更してみました。実際の動きは動画のようになります。
ソースコードはGithubに上げています。
フリック入力は活かして、左でspeeddwon、右でLift制御、斜めで速度がnormalに戻るよう制御するようにしています。
改造手順の紹介
モータードライバ速度変更方法
それでは、MKZ4のモータドライバの速度変更の方法を簡単に説明します。
MKZ4のモータードライバはTI社のDRV8830を使用し、I2Cで制御しています。
データーシート見ると、 CONTROLレジスタは1addressだけで、下記のようになっています。
MKZ4では、0x28h:3.21Vにセットしています。電圧が高い程モーターは速く回転しますが、マイコンの電源電圧3.3Vを上回らないよう設定しています。
モーターの制御はモーターそのものの特性等様々要因により、電圧を上げるとリニアに速度変化するものではありません。微妙に電圧を変えても体感的に変化ないので、今回は、遅くする方向にして、0x15h:1.69Vに落とします。
コードは以下のようにしました。モーターは徐々に電圧を上げるために、どの電圧を上げるかをmaxspeedで決定、分かりやすいように、VSET[5:0]とブリッジレジスタを分離して、VSETを設定後に2bit左にシフトしてブリッジ制御(forword or reverse)と結合してI2C通信しています。
void start_motor(){
unsigned char i, volt, reg;
for(i=0x08;i<=maxspeed ;i++){
volt = i;
volt = volt <<2;
reg = volt | forward; //後進はreverse
motor_func(ADDR1 , reg);
delay(1);
}
}
UIは、左スワイプでspeeddwon、上下で前進更新、斜めで通常speed、右で後述のLiftに割り当てました。
コード変更は、単語の変更のみで
HTMLは、86行目:
"url = \'/speeddown\';"
左スワイプ用の147行目:
server_8080.on("/speeddown", handle_left);
225行目からのhandle_leftでスワイプ後に速度設定をしています。
void handle_left(){
Serial.print("speeddown\r\n");
maxspeed = 0x15 ; // VSET:1.69V
server_8080.send(200, "text/html", "");
}
斜めなども上記と同様に参考に修正しています。
車体・荷台部分の稼働改造
実際のダンプと同じようにするにシリンダーを入れるには内部に隙間もないので、なるべく簡単、MKZ4ベース、どうしても足りないパーツはタミヤさんのキットという視点で改造しました。輪ゴムで荷台が常時倒れる状態にし、サーボーモータを楽しい工作シリーズ(パーツ) No.183ユニバーサルアームセット を荷台の抑えに使うことで簡易的に稼働を実現しています。
▼用意するもの
まず、荷台のロック部分を切り詰めてロックしないようにします。
輪ゴムを2本連結してください。
荷台の穴に輪ゴムを通します。
筐体を取り付けてから、輪ゴムを左右のキャタピラにそれぞれ引っかけます。
こんな状態。手を離すと荷台が倒れたままになります。
次に、荷台をロックするアームをL型アーム2個とサーボコーンで作ります。
基板の裏にアームを両面テープ、アームとサーボを、3本目の輪ゴムできつく巻いて固定します。
最後に、サーボコーンを荷台にひかっかるように固定します。
ここでアプリのコードは、右に割りあて、右フリックの度に、荷台を倒す->戻すを交互に繰り返します。
void handle_right(){
Serial.print("lift\r\n");
maxspeed = 0x28;
Serial.print("maxspeed:");
Serial.println(maxspeed,BIN);
if(lift){
servo_control(servo_left);
lift = !lift;} else {
servo_control(servo_right);
lift = !lift;
}
server_8080.send(200, "text/html", "");
}
サーボの動きの調整は、MKZ4のキャリブレーションの方法で、実物を見ながら調整します(この写真だと荷台を倒す方がleft、荷台を戻す方がrightになります)。是非皆さんも試してみて下さい。
おわりに
現在実機を愛三電機さんで展示中です。実際にスマホで操作できるので、実機を見られる機会は貴重なので是非来店してみて下さい。
また、半田付けのハードルが高い(道具の準備を含めて)という声もいただくので「半田付け済み・ソフト書き込み済みキット」を用意しました。ご購入いただくと機構(メカ)加工のみをしていただくだけになっています。
個数限定で準備中です。こちらは、Cerevoオフィシャルストアと愛三電機さんと両方で販売予定ですので、ご期待下さい。
Cerevoオフィシャルストア
エンジニア積極採用中
現在Cerevoでは各種エンジニアの採用、またハードウェア共同開発・受託開発を絶賛募集しております。それぞれご関心お持ちいただける方は、以下の専用お問い合わせフォームよりご連絡お待ちしております。
- 現在募集している職種
https://cerevo.com/recruit/
- ハードウェア共同開発および受託開発のご相談
https://cerevo.com/contact/
著者プロフィール
- 2015年にCerevoへジョイン。電気エンジニアを経て、現在は執行役員