11
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

obnized M5StickC 回転Servoで2WD Car

Last updated at Posted at 2020-02-11

#はじめに
#obnizedされたM5StickCに2台の回転サーボを接続して2WD Carをつくります。M5StickCは端子の構成がネイティブのobniz Boardとは異なるので、参考として記事にしました。LEGOのOrange Servoを使いましたが、SG90-HVやFS90R等の他の回転Servoでも大丈夫です。
image.png

#■こんな感じでゆるく走ります
image.png

##■接続図 下記の部品を使います ・5cm程度のGROVEケーブル。(片方の端子を切り落として使いました) ・ピンヘッダ3ピン×2。(2段のやつでもよい)

GROVEケーブルで線を引き出し、ピンヘッダを経由してServoを接続します。多少半田付けが必要ですが頑張りましょう。簡易的には半田レスで、ブレボ&ジャンパーワイヤー等で繋いでもよいでしょう。
image.png

#■車体(参考)
LEGOパーツなどを活用して、お好みで適当にゆるく車体を組み上げます。
image.png

##■サンプルコード
ボタンを押している間、その動作をするようにしてあります。尚、回転Servoは基本90°で停止ですが、個体差があるのでconst部分を微調整して使って下さい。

<html>
<head>
  <meta charset="utf-8">
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
  <script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
  <script src="https://unpkg.com/obniz@3.2.0/obniz.js"  crossorigin="anonymous"></script>
  <script src="https://unpkg.com/m5stickcjs/m5stickc.js"></script>
</head>
<body>
  <font size="7">
    M5StickC 回転Servo 2WD Car<br><br>
  </font>
  <button id="FORWARD_LEFT"  class="btn btn-warning" style="width:30%;height:80px;font-size:60px;"></button>  
  <button id="FORWARD"       class="btn btn-warning" style="width:30%;height:80px;font-size:60px;"></button>
  <button id="FORWARD_RIGHT" class="btn btn-warning" style="width:30%;height:80px;font-size:60px;"></button><br><br>
  
  <button id="TURN_LEFT"     class="btn btn-warning" style="width:30%;height:80px;font-size:60px;"></button> 
  <button id="STOP"          class="btn btn-warning" style="width:30%;height:80px;font-size:60px;">STOP</button>
  <button id="TURN_RIGHT"    class="btn btn-warning" style="width:30%;height:80px;font-size:60px;"></button><br><br>
  
  <button id="BACK_LEFT"     class="btn btn-warning" style="width:30%;height:80px;font-size:60px;"></button>
  <button id="BACK"          class="btn btn-warning" style="width:30%;height:80px;font-size:60px;"></button>
  <button id="BACK_RIGHT"    class="btn btn-warning" style="width:30%;height:80px;font-size:60px;"></button><br><br>

<script>
const Lhome =  92; //左停止
const Rhome =  92; //右停止
const LF    = +85; //左前進
const LB    = -85; //左後進
const RF    = -85; //右前進
const RB    = +85; //右後進

var obniz = new M5StickC('XXX-XXXX');
obniz.onconnect = async function () {
  var Servo_L = obniz.wired("ServoMotor" , {signal:33} );
  var Servo_R = obniz.wired("ServoMotor" , {signal:32} ); 
  obniz.led.on();
  $("#FORWARD_LEFT").on('touchstart mousedown'    ,async ()=> { await FORWARD_LEFT();  })
  $("#FORWARD_LEFT").on('touchend mouseup'        ,async ()=> { await STOP();          })
  $("#FORWARD").on('touchstart mousedown'         ,async ()=> { await FORWARD();       })
  $("#FORWARD").on('touchend mouseup'             ,async ()=> { await STOP();          })  
  $("#FORWARD_RIGHT").on('touchstart mousedown'   ,async ()=> { await FORWARD_RIGHT(); })
  $("#FORWARD_RIGHT").on('touchend mouseup'       ,async ()=> { await STOP();          })

  $("#TURN_LEFT").on('touchstart mousedown'       ,async ()=> { await TURN_LEFT();     })
  $("#TURN_LEFT").on('touchend mouseup'           ,async ()=> { await STOP();          })
  $("#STOP").on('touchend mouseup'                ,async ()=> { await STOP();          })  
  $("#TURN_RIGHT").on('touchstart mousedown'      ,async ()=> { await TURN_RIGHT();    })
  $("#TURN_RIGHT").on('touchend mouseup'          ,async ()=> { await STOP();          })  

  $("#BACK_LEFT").on('touchstart mousedown'       ,async ()=> { await BACK_LEFT();     })
  $("#BACK_LEFT").on('touchend mouseup'           ,async ()=> { await STOP();          })
  $("#BACK").on('touchstart mousedown'            ,async ()=> { await BACK();          })
  $("#BACK").on('touchend mouseup'                ,async ()=> { await STOP();          })
  $("#BACK_RIGHT").on('touchstart mousedown'      ,async ()=> { await BACK_RIGHT();    })
  $("#BACK_RIGHT").on('touchend mouseup'          ,async ()=> { await STOP();          }) 

  async function FORWARD(){
     Servo_L.angle(Lhome+LF);
     Servo_R.angle(Rhome+RF);
  }
  async function BACK(){
     Servo_L.angle(Lhome+LB);
     Servo_R.angle(Rhome+RB);
  }  
  async function FORWARD_LEFT(){
     Servo_L.angle(Lhome);
     Servo_R.angle(Rhome+RF);
  }
  async function TURN_LEFT(){
     Servo_L.angle(Lhome+LB);
     Servo_R.angle(Rhome+RF);
  }  
  async function FORWARD_RIGHT(){
     Servo_L.angle(Lhome+LF);
     Servo_R.angle(Rhome);
  }
  async function TURN_RIGHT(){
     Servo_L.angle(Lhome+LF);
     Servo_R.angle(Rhome+RB);
  }  
  async function BACK_LEFT(){
     Servo_L.angle(Lhome);
     Servo_R.angle(Rhome+RB);
  }
  async function BACK_RIGHT(){
     Servo_L.angle(Lhome+LB);
     Servo_R.angle(Rhome);
  }  
  async function STOP(){
     Servo_L.angle(Lhome);
     Servo_R.angle(Rhome);
  }
}
</script>
</body>
</html>

#■おまけ情報
M5StickCで1台のServoだけ動作させたい場合は、上部のHAT端子のGND/5V/G26の3ピンにちょうどServoの3ピン(オスオス変換は必要)を直刺ししてつかえます。動作確認などに重宝します。

#■最後に
前後左右できる2WD Carを作る場合、M5StickCのOUTPUT端子が少ないのでDC MotorではMotor Driverを繋いだとしても簡単にはできませ。今回紹介した回転Servo 2WD Carがベストと思います。もう少し研究を重ねて、半田レスにもできたらいいなと思っています。

11
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?