LoginSignup
0
1

More than 3 years have passed since last update.

M5StickC Plus (ESP32)と3DプリンタとBlynkとLEGOでラジコン作った。

Last updated at Posted at 2021-03-30

はじめに

3Dプリンタが復活したので、なにか作ろうと思って、最近遊んでるM5StickCとGeekServoとをつなぐマウントを作ってみた。いい感じにできて満足。やったことを整理しておく。

準備するもの

道具

3Dプリンタ

Creality Ender 3 V2ってのを使ってる。

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3138343232312f39653664313335342d333837382d313362352d643262642d3333326261653233333436302e706e67.png

参考:3Dプリンタを選んで買って組み立てて印刷した。 - Qiita

ノギス

デジタルすばらしい。
IMG_20210330_225920.jpeg

部品

合計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

ジャンパーケーブル

ケーブル必要。電源とグランドを分岐する必要あったので、ピンにはんだ付けしてる。
image.png

LEGOのタイヤ x2

十字の穴があいてるやつ
IMG_20210330_230242.jpeg

レゴパーツのバラ売りはここが良さげ。
レゴパーツからミニフィグまで揃う通販専門のレゴショップ ブリッカーズ

LEGOの接続するやつ x4

LEGO TECHNICのLEGO買うとだいたい入ってる(たぶん)
IMG_20210330_231106.jpeg

LEGOのデコるやつ 好きなだけ

GeekServoに接続できるからデコれる。

3Dプリント作業

まず、3DプリンタでM5StickCとGeekServoをつなぐマウントを作成した。

スケッチ

シンプルかつ丈夫になるように考えてスケッチした。

IMG_20210330_232032.jpeg

測定

結構めんどい。
GeekServoとM5StickCのサイズをノギスで測った。

モデリング

Tinkercadってブラウザからできるやつを使った。シンプル。
Dashboard | Tinkercad

こんな感じになった。
3D-design-M5StickC-Tinkercad(1).png

データはここにおいた。
M5StickC Mounter for LEGO Compatible Motor by optimisuke - Thingiverse

3Dプリント

Curaってソフトを使ってもろもろ設定して3Dプリント用のデータに変換する。
Screen Shot 2021-03-29 at 18.53.29.png

できあがり

こんな感じ。それっぽい。

34633.jpg

アセンブル

タイヤは直接サーボにつける。
34632.jpg

サーボと3Dプリンタで作ったマウントをつなぐ。
34631.jpg

M5StickCも接続してデコる。
34604.jpg

プログラム

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

image.png

image.png

動作確認

いい感じに動いた。

改善

接続部分が微妙やったので、すこし調整してプリントしなおした。M5StickCの横のスリットにあうように、ボコっとなるようにしてる。いい感じ。
34656.jpg

おわりに

いい感じに、3Dプリンタを活用できた。
息子くんもよろこんでくれて満足。

0
1
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
0
1