Arduinoその他工作

Arduino互換機(M5Stack)とセンサで作るミニリモコンカー!

第2回:M5Stackでモータドライバを使う

こんにちは、ヨシケンです!

小型Arduino互換機のM5Stackを使ってリモコンカーを作る本連載。第2回は、M5Stackとモータドライバをつないで、DCモータを動かせるようにします。Groveという標準的な端子を使っているので、複雑そうなモータドライバ設定もかなり簡単にできますよ。

arduino-m5stack-remote-control-car-02-01

M5Stackシリーズを使ってリモコンカー作り

 

今回の記事の流れ

  1. モータドライバの設定
  2. M5Stackとモータの接続
  3. M5Stackを動かすプログラム
  4. まとめ

 

今回の記事で必要な物一覧

M5Stack Core

ESP32を搭載し、ディスプレイ、センサなども入ったArduino互換機

arduino-m5stack-remote-control-car-02

 

Grove I2C モータドライバ

I2Cという通信方式で、Grove端子で接続して使えるモータドライバ

arduino-m5stack-remote-control-car-07_01

 

9V電池電池ボックス

arduino-m5stack-remote-control-car-02-02

 

小型モーター、車輪など

arduino-m5stack-remote-control-car-08

 

1. モータドライバの設定

ミニリモコンカーを作るにあたり、DCモータの駆動、回転速度の制御などをするためにモータードライバというIC機器が必要です。モータドライバとArduinoの接続、プログラミングは少し複雑ですが、M5StackにはGrove端子というものが付いていて、Grove接続できるモータドライバを使うと簡単にモータを制御することができます。

今回は、Grove端子が付いたI2C制御方式のこのモータドライバを使用します。

arduino-m5stack-remote-control-car-07_01

 

このモータドライバを開発しているSEEED社のプロダクトページに行って、ライブラリを取得します。以下、ページ中でGrove I2C Motor Driverというところをクリックして、パソコン上にダウンロードしてください。

https://wiki.seeedstudio.com/Grove-I2C_Motor_Driver_V1.3/

arduino-m5stack-remote-control-car-02-03

 

そのライブラリを、メニュー上の スケッチ > ライブラリのインクルード > .ZIP形式のライブラリをインストール から、先程のファイルを選んで適用します。

arduino-m5stack-remote-control-car-02-04

 

これでライブラリとサンプル・スケッチがインストールできました。スケッチ例メニューの所にdcmotor_test というサンプルがありますので、それを選んでM5Stackに書き込みをしてみましょう。

arduino-m5stack-remote-control-car-02-05

 

パソコンとM5Stack、モータドライバをつないで書き込みをおこないます。画面のようなメッセージが出たら、モータドライバのスケッチが書き込みできました。

arduino-m5stack-remote-control-car-02-06

 

2. M5Stackとモータの接続

M5Stack、モータドライバに、DCモータをつないでいきます。
駆動部分には、とても小さいモータに車輪がそのまま付くギヤモータを使っています。このギヤモーターを電池ボックスにネジ留めすると、一体化できてミニリモコンカーにしやすいです。

arduino-m5stack-remote-control-car-02-07

モータと車輪を設置

arduino-m5stack-remote-control-car-02-08

モータと電池ボックスをネジ留めする

 

モータから2対、電池ボックスから1対のケーブルが出ているので、それぞれモータドライバに接続します。

arduino-m5stack-remote-control-car-02-09

モータをつなぐ側の端子

arduino-m5stack-remote-control-car-02-10

電源をつなぐ側の端子

 

モータドライバと車輪、電池ボックスはこのようになりました。

arduino-m5stack-remote-control-car-02-11

 

M5Stack側にも小さな車輪を付けます。Groveケーブルを使って、モータドライバとM5Stackをつなぎます。

arduino-m5stack-remote-control-car-02-12

 

全体はこのようになりました。

arduino-m5stack-remote-control-car-02-13

 

3. M5Stackを動かすプログラム

最後にM5Stackを動かすプログラムを作ります。M5Stackには画面があるので、画面に表示しながら動くものにします。サンプルプログラムM5_Motor.inoはこのようになっています。

#include "Grove_I2C_Motor_Driver.h"
#include <M5Stack.h>
#define I2C_ADDRESS 0x0f

void setup() {
    Serial.begin(9600);
    Motor.begin(I2C_ADDRESS);

    M5.begin();
    M5.Lcd.setTextSize(4);
    M5.lcd.print("GO M5!");
}

void loop() {
    // Set speed of MOTOR1, Clockwise, speed: -100~100
    Motor.speed(MOTOR1, 100);
    // Set speed of MOTOR2, Anticlockwise
    Motor.speed(MOTOR2, -100);
    M5.lcd.clear();
    M5.Lcd.setCursor(10,0);
    M5.lcd.print("GO M5!");
    M5.Lcd.setCursor(10,60);
    M5.lcd.print("Forward!");
    delay(2000);
    // Change speed and direction of MOTOR1
    Motor.speed(MOTOR1, -100);
    // Change speed and direction of MOTOR2
    Motor.speed(MOTOR2, 100);
    M5.Lcd.setCursor(10,60);
    M5.lcd.print("Backward!");
    delay(2000);
    // Stop MOTOR1 and MOTOR2
    Motor.stop(MOTOR1);
    Motor.stop(MOTOR2);
    M5.lcd.clear();
    M5.Lcd.setCursor(10,60);
    M5.lcd.print("Stop!");
    delay(2000);
}

 

プログラムができたらこれをM5Stackに流し込みます。電源を入れると車輪が回り始めると思います。

arduino-m5stack-remote-control-car-02-14

 

前転して前に進む時はForward、後転する時はBackwordと表示されます。

arduino-m5stack-remote-control-car-02-15

arduino-m5stack-remote-control-car-02-16

 

4. まとめ

今回は、小さなギヤモータを二つ使って、前後左右に動かせるようになりました。ArduinoとDCモータの制御には、モータドライバが必要ですが、Grove端子でつなぐだけで簡単に使い始められるようになることが分かったと思います。

M5StackのGrove端子には、様々なドライバやセンサなどを接続することができるので、他のセンサを試してみるのもいいでしょう。

次回は距離センサなどを付けて、壁を回避したり、机から落ちないようにします。これにより自動運転ができるようになりますので、お楽しみに!

電子工作マニュアル Vol.3
ヨシケン(吉田 顕一)

普通の会社に勤めるサラリーマンですが、モノ作りが好きな週末メイカーで、電子書籍MESHBOOKを出したり、ブログを書いたりしています!

http://blog.ktrips.net