ロボット開発(第二回): DYNAMIXELモータをM5Stack Core2で動かす
はじめに
前回はarduino互換ボードとDYNAMIXEL Shieldを使ってDYNAMIXELモータを動かしました。
今回はPC上でDYNAMIXEL Wizardを動かし、M5Stack Core2を経由してDYNAMIXELモータを動かすことを目標とします。これができればPCから任意のプログラムでモータを制御できるようになるはず!!
ハードウェア
PC
一般的なWindowsが入っているPCにUbuntu22.04を入れて使用。
モータ
- DYNAMIXEL XL330-M288-T * 2
- DYNAMIXEL XL330-M077-T * 2
基板、その他
- M5Stack core2
-
DYNAMIXEL XL330 インターフェース基板 for M5Stack
- M5Stack core2から直接モータを動かすことはできないため、こちらのIF基板を購入させて頂きました。神基板です、開発、販売頂きとても感謝しています。
- 安定化電源 HM305
セットアップ
M5Stack core2の開発環境のセットアップについてはネット上に多数記事があるため、そちらを参照ください。
ハードウェア
今回は以下のように配線を行いました。
動かす
前述した通り、今回はPC -> M5Stack core2 -> IF基板 -> モータという構成です。
PCからのコマンドをIF基板に伝えるためにはM5Stack Core2がPCからのコマンドをIF基板にそのまま受け流す(その逆も)ことが必要となります。
M5Stack core2のプログラム
M5Stack core2はハードウェアシリアルが複数使えます。今回はPCとM5Stack間の通信用、M5StackとIF基板の通信用に2つ用いました。また、groveコネクタを使って後者の通信を行うため、32/33番ピンを使うように設定しています。
#include <M5Unified.h>
// M5StackとIF基板間のシリアル通信用
HardwareSerial& serialToDevice = Serial1;
void setup() {
auto cfg = M5.config();
M5.begin(cfg);
// PCとM5Stack間のシリアル通信のボーレートを設定
Serial.begin(57600);
// M5StackとIF基板間のシリアル通信のボーレートやピンを設定
serialToDevice.begin(57600, SERIAL_8N1, 33, 32);
Serial.println("Serial pass-through started.");
}
void loop() {
// PCからM5Stackに入ってきたデータをIF基板に受け流す
while (Serial.available()) {
serialToDevice.write(Serial.read());
}
// IF基板からM5Stackに入ってきたデータをPCに受け流す
while (serialToDevice.available()) {
Serial.write(serialToDevice.read());
}
}
まずはこれをM5Stackに書き込んでおきます。
DYNAMIXEL Wizardを動かす
DYNAMIXEL Wizardのインストール方法、使い方などについては公式ドキュメントを参照ください。
PCでDYNAMIXEL Wizardを起動し、スキャンしてみると、、、
見れました!!!これは嬉しい!
各種ステータスが確認でき、GUIでトルクONしたり、実際にモータを回したりできます!
まとめ&教訓
ついにDYNAMIXEL Wizardを使うことができるようになりました!
これでOpenRB-150と同じことができるようになります(やっと、、、)。
次回はDYNAMIXEL Wizardを使わず、PCからプログラムでモータを制御してみたいと思います。
Discussion