2020年5月17日日曜日

M5Stackを載せてI2C制御で動かす台車を作ってみた


背景

M5Stackとは、LCDやボタンなどが付いていて、ESP32というBluetoothやWiFi通信できるマイコンを利用している、プログラムを書き込める装置です。

M5Stackで動く台車としては、バランスカーLidarを積んでいる台車が公式から売られているのですが、もっと簡素な作りの台車が欲しかったので作ってみました。

I2C Motors For M5Stack 台車仕様

商品紹介として組立方法と使い方を共有します。

使ったもの


内容物

足回りの部品


0.1uf250vのコンデンサとワイヤを実装済みの6V200RPM ギアードモーター 2個
タイヤ 2個
モーター固定具 2個
M2ネジ 4本
M2ナット 4個
キャスター 1個
M3ネジ 2本
M3ナット 2個

利用しているギアードモーターは秋月電子で売られている1:50のモーターとほぼ同じ性能なので、ギア比を変えたい場合はこの形の他のモーターを利用できます。

シャーシ関係の部品


プレート 1枚(保護用の紙を剥がしてご利用ください。)
M2 5mm支柱 8本
M2 15mm支柱 4本
M2ナット 8本
M2ネジ 8本

プレートの設計情報はこちらです。

https://github.com/asukiaaa/I2cMotorsForM5Stack/tree/master/plate


FreeCADで作成し、dxfファイルを出力してelecrowのアクリル板切断サービスを利用して作成しました。

基板関係の部品


I2cMotorsForM5Stack 1枚
I2cMotorsForM5Stack top_pcb1枚
フレーム 1個
6cm 30p 0.5mmピッチ FFC 1本

基板の設計情報はこちらです。

main: 設計データ回路図(PDF)

KiCadで作成しました。

組み立て

基板はこちらです。
TB6612FNGをatmega328pかatmega328pbで制御します。


M5Stackと接続する側です。


このstackを複数台接続しても使えるように、デバイスアドレスをパッドで変えられるようにしています。
標準は0b01010010 = 0x52 = 82 です。


基板は0.5mmピッチ30ピンのFFCで接続します。


topとbottom間の電力供給FFCではなくワイヤーで行いたい場合は、基板に出ている端子をワイヤーなどで接続詞てください。


モーターとキャスターと支柱をアクリル板に取り付けたシャーシです。
タイヤ側を15mmの支柱、キャスター側を5mmの支柱にしています。
(この構成だと5mmの支柱4本が余ります。両方低くしたい時や、キャスター側を更に高くしたい時などにご利用ください。)


裏側はこうなっています。


シャーシに基板とM5Stackの下用のフレームを取り付けます。


取り付けました。


シャーシ裏側のモーターの電力線を端子台に接続します。


M5Stackを載せれば準備OKです。


プログラムでの呼び出し方

ライブラリを通してI2C通信を行い、モーターの速度を制御できます。

ライブラリの準備

ArduinoIDEの場合はライブラリマネージャからI2cMotors_asukiaaaをインストールしてください。


PlatformIOの場合は、platformio.iniのlib_depsにI2cMotors_asukiaaaを追加してください。

platformio.ini
lib_deps = I2cMotors_asukiaaa


呼び出し

アドレスを渡して初期化し、setupでbeginし、writeSpeedなどでモーターの出力を変えられます。

#include <I2cMotors_asukiaaa.h>

#define MOTORS_ADDRESS 0b01010010
I2cMotors_asukiaaa motors(MOTORS_ADDRESS);

void setup() {
  Serial.begin(115200);
  motors.begin();
}

void loop() {
  motors.writeSpeed(0xff, 0xff); // max speed forwarding
delay(1000); motors.writeSpeed(0, 0); // stop
delay(1000); motors.writeSpeed(-0xff, -0xff); // max speed backing delay(1000); motors.writeSpeed(0, 0); // stop
delay(1000); }

他の機能は、readmeヘッダファイルサンプルプログラムを見てみてください。

動作の様子

サンプルプログラムを書き込んで動かした様子はこちらです。
出力50%で左を前後 -> 出力50%で右を前後 -> 出力100%で前後 を行います。


まとめ

M5Stack用の台車を作って、動かせました。
ロボットの足回りにできそうです。

更新履歴

2020.07.14
スイッチサイエンスの商品リンク I2C Motors For M5Stack 台車仕様 を背景と使ったものに追加しました。
2023.10.21
前進更新プログラムにdelayが入っていなかったのと止まる動作が無かったので、delayと止まるを追加しました。

0 件のコメント :