0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LEGOブロックとM5Goを使った車のラジコンの試作(忘備録)

Last updated at Posted at 2024-11-15

はじめに

以前の記事

のM5Goとサーボモータを使って、車のラジコンを試作しました。ラジコン本体はLEGOブロック(テクニック系のパーツを使用)で作成し、送信機はPS4コントローラを使用しました。WiFi環境がない場所でも動作するように、M5GoとPS4コントローラはBluetoothで接続しています。

ラジコンについて

試作したラジコンです。
20241113_080423.jpg

蓋になっているブロックを外した状態です。
20241113_080503.jpg

機構の様子です(前輪)。
20241113_080530.jpg

機構の様子です(後輪)。かじ取りの際にスムーズに旋回できるよう、ディファレンシャルギヤを介して後輪を駆動しています。
20241113_080518.jpg

M5GoとPS4コントローラのBluetooth接続は以下の記事を参考にしました。

プログラムは以下のとおりArduinoで作成しました。

#include <M5Stack.h>
#include <PS4Controller.h>
#include "M5_UNIT_8SERVO.h"

M5_UNIT_8SERVO unit_8servo;

void setup() {
  Serial.begin(115200);
  PS4.begin("**:**:**:**:**:**"); //ここにmacアドレスを入れる
  Serial.println("Ready.");
  
  M5.begin();
  while (!unit_8servo.begin(&Wire, 21, 22, M5_UNIT_8SERVO_DEFAULT_ADDR)) {
    Serial.println("extio Connect Error");
    delay(100);
  }
  unit_8servo.setAllPinMode(SERVO_CTL_MODE);
}

void loop() {
  if (PS4.isConnected()) {
    //コントローラの右のジョイスティックで左右のかじ取り
    int angle = (PS4.RStickX() + 128) * 180/256;
    unit_8servo.setServoAngle(0, angle);
    Serial.printf("Angle at %d\n", angle);
    //コントローラの左のジョイスティックで前後移動
    int rotate = 3000 - (PS4.LStickY() + 128) * 3000/256;
    unit_8servo.setServoPulse(1, rotate);
    Serial.printf("rotate at %d\n", rotate);
  }
}

終わりに

車両の試作は、ディファレンシャルギヤの機構とかじ取り機構を設けつつ、短い全長にするように心がけました。360'ステップモータに取り付けた歯車とその相手の歯車のかみ合わせが少し緩いため、バックするときにギヤ鳴りすることが改良点です。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?