はじめに
3Dプリンタが復活したので、なにか作ろうと思って、最近遊んでるM5StickCとGeekServoとをつなぐマウントを作ってみた。いい感じにできて満足。やったことを整理しておく。
準備するもの
道具
3Dプリンタ
Creality Ender 3 V2ってのを使ってる。
参考:3Dプリンタを選んで買って組み立てて印刷した。 - Qiita
ノギス
部品
合計4,000円くらい。あきたら他の用途に流用できるし、コスパ最強説。
フィラメント 少々
PLA使ってる
M5StickC Plus
M5StickCでもOK
M5StickC Plus - SWITCH-SCIENCE
GeekServo x2
このサーボが、LEGOコンパチブルで、360度回転するので、使いやすい。
GeekServo 9G 360° Motor-Orange - SWITCH-SCIENCE
参考:LEGOとM5StickCで動く車作った。 - Qiita
ジャンパーケーブル
ケーブル必要。電源とグランドを分岐する必要あったので、ピンにはんだ付けしてる。
LEGOのタイヤ x2
レゴパーツのバラ売りはここが良さげ。
レゴパーツからミニフィグまで揃う通販専門のレゴショップ ブリッカーズ
LEGOの接続するやつ x4
LEGO TECHNICのLEGO買うとだいたい入ってる(たぶん)
LEGOのデコるやつ 好きなだけ
GeekServoに接続できるからデコれる。
3Dプリント作業
まず、3DプリンタでM5StickCとGeekServoをつなぐマウントを作成した。
スケッチ
シンプルかつ丈夫になるように考えてスケッチした。
測定
結構めんどい。
GeekServoとM5StickCのサイズをノギスで測った。
モデリング
Tinkercadってブラウザからできるやつを使った。シンプル。
Dashboard | Tinkercad
データはここにおいた。
M5StickC Mounter for LEGO Compatible Motor by optimisuke - Thingiverse
3Dプリント
Curaってソフトを使ってもろもろ設定して3Dプリント用のデータに変換する。
できあがり
こんな感じ。それっぽい。
アセンブル
プログラム
M5StickC Plus
M5StickC Plus側はこのときとまったく一緒。
LEGOとM5StickCとBlynkでラジコン作った。 - Qiita
#define BLYNK_PRINT Serial
#define BLYNK_USE_DIRECT_CONNECT
#include <BlynkSimpleEsp32_BLE.h>
#include <BLEDevice.h>
#include <BLEServer.h>
#include "esp32-hal-ledc.h"
#include <M5StickCPlus.h>
char auth[] = "YourAuthToken";
const int WIDTH_BIT = 10;
const int FREQ = 50;
const int SPEED_PIN = 26;
const int SPEED_CH = 2;
const int STEERING_PIN = 25;
const int STEERING_CH = 3;
void setup()
{
Serial.begin(115200);
Serial.println("Waiting for connections...");
Blynk.setDeviceName("Blynk");
Blynk.begin(auth);
ledcSetup(SPEED_CH, FREQ, WIDTH_BIT);
ledcAttachPin(SPEED_PIN, SPEED_CH);
ledcSetup(STEERING_CH, FREQ, WIDTH_BIT);
ledcAttachPin(STEERING_PIN, STEERING_CH);
M5.begin();
M5.Lcd.fillScreen(TFT_BLACK);
M5.Lcd.setTextColor(TFT_WHITE);
M5.Lcd.setCursor(20, 40, 2);
M5.Lcd.print("SERVO");
}
void loop()
{
Blynk.run();
}
BLYNK_WRITE(V1) {
int16_t steering = param[0].asInt();
int16_t speed = param[1].asInt();
ledcWrite(SPEED_CH, speed);
ledcWrite(STEERING_CH, steering);
M5.Lcd.fillScreen(TFT_BLACK);
M5.Lcd.setCursor(20, 80, 2);
M5.Lcd.print(speed);
M5.Lcd.setCursor(20, 120, 2);
M5.Lcd.print(steering);
Serial.println(speed);
Serial.println(steering);
}
スマホ
Blynk使った。
このときとほぼほぼ一緒で、設定を少しかえた。
LEGOとM5StickCとBlynkでラジコン作った。 - Qiita
動作確認
いい感じに動いた。
改善
接続部分が微妙やったので、すこし調整してプリントしなおした。M5StickCの横のスリットにあうように、ボコっとなるようにしてる。いい感じ。
おわりに
いい感じに、3Dプリンタを活用できた。
息子くんもよろこんでくれて満足。