配線不要・すぐに使える / 小型四輪駆動メカナムホイール台車・カーシャーシ


セット: 基本セット
価格:
¥16,300

税込み / 送料440円
(2,000円以上のお買い上げで送料無料)

在庫:
残り2個
※ 現在、新型コロナウィルスによる物流会社の混乱により、一部商品においてお届けまでに数日〜1週間程度さらにお時間をいただく可能性がございます。
※ お支払い方法は、請求書払い、クレジットカード、AmazonPay、GooglePay、銀行振込に対応しています。
請求書払いの際は見積もり依頼フォームからまず見積もり依頼をご送付ください。(その他はお支払い画面で選択)
※ 全ての配送物に領収書が同封されます。

概要

全方向に移動が可能な、YFROBOT社の四輪駆動のメカナムホイール台車です。Arduino Unoと同等の配置でピンが設置されており、マイコンをそのまま差し込むことで制御することができます。

駆動に必要なセットアップが完了しているので、電池を入れればすぐに動作させることができます。

サイズが137mm x 108mmと小型で、研究開発やプロトタイピングに最適です。

同梱内容

基本セット 基本セット+Arduino Uno互換マイコン
メカナムホイール台車 O O
予備ピン O O
六角レンチ O O
リモコン O O
Arduino Uno互換ボード O

 

組み立て方法・動作方法 

下図のように、1層目に3.7Vの電池を2つ設置することができます。

※電池は付属していません。単3形の3.7Vリチウム充電池が対応しており、通常の乾電池では動きません。

質の低い電池だと発火の恐れがあるので、次のような保護回路付きのリチウム充電池を別途購入ください。

 

2層目を取り付けます。1層目のピンに2層目のピン接続端子が全て合うように取り付けます。1層目と2層目の矢印の向き(正面方向)が合うように取り付けます。

3層目にArduino Uno 互換のマイコンボードを取り付けます。ボードを裏返しにしてピンの位置が合うように取り付けます。

 

サイズ

メカナムホイールの直径 48mm
サイズ 137mm x 108mm x 54mm

 

サイズ

ピン配置

ホイールM1 位置:左前 方向:4番PIN
PWM:3番PIN
ホイールM2 位置:右前 方向:7番PIN
PWM:5番PIN
ホイールM3 位置:左後ろ 方向:8番PIN
PWM:6番PIN
ホイールM4 位置:右後ろ 方向:12番PIN
PWM:11番PIN
赤外線受信 2番PIN
ブザー 9番PIN
LED 13番PIN


  • パワースイッチ:充電池をセットして、このスイッチを押すと電源が入ってマイコンとモータが動作可能状態になります。
  • リセットボタン:マイコンをリセットします。マイコンのリセットボタンを押した時と同様の挙動をします。

 

メカナムホイールでの全方向移動について

メカナムホイールの駆動

4つのそれぞれのホイールの回転方向を制御することにより、全方向移動・回転運動を行うことが可能になります。

台車の制御例

下記は前進・後退を繰り返すサンプルコードです。

#define M1dir 4
#define M1speed 3
#define M2dir 7
#define M2speed 5
#define M3dir 8
#define M3speed 6
#define M4dir 12
#define M4speed 11

void setup() { Serial.begin(9600); pinMode(M1dir, OUTPUT); pinMode(M1speed, OUTPUT); pinMode(M2dir, OUTPUT); pinMode(M2speed, OUTPUT); pinMode(M3dir, OUTPUT); pinMode(M3speed, OUTPUT); pinMode(M4dir, OUTPUT); pinMode(M4speed, OUTPUT); setMotor(255, 255, 255, 255); } void loop() { setMotor(100, 100, 100, 100); //前進 delay(1000); setMotor(-100, -100, -100, -100); //後退 delay(1000); setMotor(0, 0, 0, 0); //停止 delay(2000); } /* 数値範囲 -255 ~ 255 */ void setMotor(int m1, int m2, int m3, int m4) { if (m1 > 0) digitalWrite(M1dir, LOW); else if (m1 < 0) digitalWrite(M1dir, HIGH); analogWrite(M1speed, abs(m1)); if (m2 > 0) digitalWrite(M2dir, HIGH); else if (m2 < 0) digitalWrite(M2dir, LOW); analogWrite(M2speed, abs(m2)); if (m3 > 0) digitalWrite(M3dir, LOW); else if (m3 < 0) digitalWrite(M3dir, HIGH); analogWrite(M3speed, abs(m3)); if (m4 > 0) digitalWrite(M4dir, HIGH); else if (m4 < 0) digitalWrite(M4dir, LOW); analogWrite(M4speed, abs(m4)); }

 


ブザーについて

9番PINがブザーになっており、ON/OFFを繰り返す周波数の音を流すことができます。

下記はArduinoで3,000Hzの音を1秒間流す例です。(333マイクロ秒で1 ON/OFF = 3,000Hz)

 

void setup() {
  pinMode(9, OUTPUT);
  for (int i = 0; i < 3000; i++){
    digitalWrite(9, LOW);
    delayMicroseconds(166);
    digitalWrite(9, HIGH);
    delayMicroseconds(166);
  }
}

void loop() {
}

LEDについて

台車の後部にはLED6つついており、それぞれにRGB値を指定することで任意の色で光らせることが可能です。

Arduinoで制御する際は、Adafruit_NeoPixelというライブラリを使用します。下記レポジトリからzipファイルをダウンロードしてArduino IDEでインクルードしましょう。

 

#include <Adafruit_NeoPixel.h>

#define RGBPIN 13
#define NUMPIXELS 6

Adafruit_NeoPixel strip(NUMPIXELS, RGBPIN, NEO_GRB + NEO_KHZ800);

void setup() {
strip.begin();
strip.setBrightness(50);

strip.setPixelColor(0, strip.Color(150, 0, 0));
strip.setPixelColor(1, strip.Color(150, 150, 0));
strip.setPixelColor(2, strip.Color(0, 150, 0));
strip.setPixelColor(3, strip.Color(0, 150, 150));
strip.setPixelColor(4, strip.Color(0, 0, 150));
strip.setPixelColor(5, strip.Color(150, 0, 150));
strip.show();
}

void loop(){

}

  

LEDは左上から0〜2、右上から3〜5という順番で並んでいるので、該当の番号のColorをセットすることで任意の色で光らせることが可能です。

超音波センサの受信

上図の4つの位置に超音波センサを取り付けることが可能です。5本のピンの接続端子がついており、対応している超音波センサはSR09です。

I2C アドレスの確認

超音波センサの読み取りにはI2C を用います。超音波センサーを接続した状態で、I2C のアドレスを確認します。

#include <Wire.h>
void setup() {
  Wire.begin();
  Serial.begin(9600);
  Serial.println("I2C Scanner");
}
void loop() {
  uint8_t error, address, line = 1;
  int nDevices = 0;
  Serial.println(" 0 1 2 3 4 5 6 7 8 9 A B C D E F");
  Serial.print ("00: ");
  for (address = 0x03; address < 0x78; address++ ) {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0) {
      printHex(address);
      nDevices++;
    }
    else if (error == 4)
      Serial.print(" ER");
    else
      Serial.print(" --");

    if ((address + 1) % 16 == 0) {
      Serial.println();
      Serial.print(line);
      Serial.print("0:");
      line++;
    }
  }

  if (nDevices == 0)
    Serial.println("¥nNo I2C devices found¥n");
  else {
    Serial.print("¥nFound ");
    Serial.print(nDevices);
    Serial.println(" devices¥n");
  }
  delay(5000); // wait 5 seconds for next scan
}

void printHex(uint8_t address) {
  Serial.print(" ");
  if (address < 16)
    Serial.print("0");
  Serial.print(address, HEX);
}

シリアルモニタで確認をすると、次のように割り当てられたアドレスを確認することができます。この場合は74 が割り当てられているI2C のアドレスになります。

超音波センサの値の取得例

ADDRESS の箇所を、先ほど取得したI2C アドレスに置き換えます。(下の例では74)

#include <Wire.h>
#define ADDRESS 0x74 // default address of SR09 is 0xE8
#define CMDREG 0x02 //the command register is 0x02
#define CMDRD 0xBC //read the distance of SR09,less 600cm.

void setup() { Serial.begin(9600); Wire.begin(); SR09_send_command(ADDRESS,CMDREG,0X71); delay(2000); Serial.println("Start..."); }
void loop() { word xx = SR09_read_data(ADDRESS,CMDREG,CMDRD); Serial.print(xx); Serial.println("mm"); delay(200); }
void SR09_send_command(byte address,byte reg,byte command) { Wire.beginTransmission(address); Wire.write(reg); Wire.write(command); Wire.endTransmission(); }
word SR09_read_data(byte address,byte reg,byte command) { word temp_reading; SR09_send_command(address,reg,command); delay(88); // wait at least 87 milliseconds Wire.beginTransmission(address); Wire.write(0x02); Wire.endTransmission(); Wire.requestFrom(uint8_t(address), uint8_t(2)); while ( Wire.available() < 2) {} temp_reading = (Wire.read()) << 8; temp_reading |= Wire.read(); return temp_reading; }

取得ができると、シリアルモニタにて距離を確認することが可能になります。

返品・不良品・キャンセルについて

お支払いについて

Amazon American Express Apple Pay Google Pay Mastercard Shop Pay Visa

お支払い情報は安全に処理されます。 クレジットカードの詳細を保存したり、クレジットカード情報にアクセスすることはありません

合わせて買いたい

Recently viewed