ショップページへ
概要 
DXSHIELDはDynamixelシリーズと通信するためのI/F(RS-485・TTL)をArduinoに増設するシールドです。両I/Fのコネクタに電源を分配する機能も合わせ持ちます。
また、DXSHIELDのI/Fで通信できるデバイスであれば、Dynamixel以外のサーボモータにも適用できます。
※本製品は半田付け作業を要求します。
※旧バージョンのBTE074に対してジャンパの追加やI/F部分のモジュール化などの仕様変更がなされています。
仕様 
同梱内容 
基本仕様 
品番 | BTE074B |
PCBリビジョン | E133C (2層) |
動作温度範囲 | 0~60℃ 結露なきこと |
外形寸法 | 約52x53mm |
重量 | |
電源 | CN1/CN12:DC6~24V (Dynamixelが要求する電源) 内部ロジック:DC5V±5% (Arduinoより供給) |
コネクタ等 | JST B4B-EH x5 JST B3B-EH x5 |
各I/F仕様 | TTL2DXIFに準拠 |
内部簡略ブロック 
外観・レイアウト 
※出荷時にピンソケット・電源用コネクタ・TTL2DXIFは未装着
回路図 
※D1・D2・U1・J1~8・CN1・CN12・CN13~16・C2は未装着
各機能詳細 
J1,J5 
- 2.54mmピッチ 10ピンシングルラインヘッダ用ランド
- J1とJ5の各端子は相互に接続
- Arduinoと接続する際はJ1に任意のピンソケット等を装着
Pin No. | Name | Used in DXSHIELD |
1 | IO8 | yes |
2 | IO9 | yes |
3 | IO10/SS | no |
4 | IO11/MOSI | no |
5 | IO12/MISO | no |
6 | IO13/SCK | no |
7 | GND | yes |
8 | AREF | no |
9 | AD4/SDA | no |
10 | AD5/SCL | no |
J2,J6 
- 2.54mmピッチ 8ピンシングルラインヘッダ用ランド
- J2とJ6の各端子は相互に接続
- Arduinoと接続する際はJ2に任意のピンソケット等を装着
Pin No. | Name | Used in DXSHIELD |
1 | IO0/RX | yes |
2 | IO1/TX | yes |
3 | IO2 | no |
4 | IO3 | no |
5 | IO4 | no |
6 | IO5 | no |
7 | IO6 | no |
8 | IO7 | no |
J3,J7 
- 2.54mmピッチ 8ピンシングルラインヘッダ用ランド
- J3とJ7の各端子は相互に接続
- Arduinoと接続する際はJ3に任意のピンソケット等を装着
Pin No. | Name | Used in DXSHIELD |
1 | - | no |
2 | IOREF | no |
3 | RESET | no |
4 | 3V3 | no |
5 | 5V | yes |
6 | GND | yes |
7 | GND | yes |
8 | Vin | yes |
J4,J8 
- 2.54mmピッチ 6ピンシングルラインヘッダ用ランド
- J4とJ8の各端子は相互に接続
- Arduinoと接続する際はJ4に任意のピンソケット等を装着
Pin No. | Name | Used in DXSHIELD |
1 | AD0 | no |
2 | AD1 | no |
3 | AD2 | no |
4 | AD3 | no |
5 | AD4/SDA | no |
6 | AD5/SCL | no |
JP1 
- DXSHIELDの電源をArduinoの外部電源として供給する場合に使用
- ショート:CN1もしくはCN12から供給された電源をArduinoのVinに分配
CN1もしくはCN12に供給する電圧はArduinoのVinが許容する電圧範囲を守る事
- オープン:CN1もしくはCN12から供給された電源とArduinoのVinを切断
CN1もしくはCN12とArduinoのVin各々に電源を供給するか、USBバスパワーで動作するArduinoであればPCとArduinoをUSBケーブルで常時接続する事
 | JP1をショートした状態でArduinoのVinから電源を供給してはならない。 CN2~CN11の電源がJP1を介してArduinoより供給されるため、使用デバイスの負荷条件によってはJP1等の許容電流を超え基板が損傷する。 |
 | JP1をショートした状態でCN1もしくはCN12とArduinoの外部電源に各々個別の電源を供給してはならない。 両電源が短絡するため、電源や負荷の条件によってはJP1や基板のみならず電源までが損傷する。 |
JP2 
- SW1で選択された送信端子とTTL2DXIFのRXDを接続
- ショート:I/FボードのRXD端子にDXSHIELD上の信号を接続
SW1の機能が利用可能
- オープン:I/FボードのRXD端子をDXSHIELD上の信号から切断
SW1は一切機能しない
- 2ピン側にTTL2DXIFのRXD端子が接続
JP3 
- SW1で選択された受信端子とTTL2DXIFのTXDを接続
- ショート:I/FボードのTXD端子にDXSHIELD上の信号を接続
SW1の機能が利用可能
- オープン:I/FボードのTXD端子をDXSHIELD上の信号から切断
SW1は一切機能しない
- 2ピン側にTTL2DXIFのTXD端子が接続
SW1 
- 3Tスライドスイッチ
- シリアル通信に使用するArduinoの送受信端子を3パターンから選択
詳細はこちら
- SW1の機能を使用する場合はJP2及びJP3はいずれもショート状態である事
CN1 
B2P-VH-Bを実装して使用。CN12を同時に実装する事はできない。
 | 電源の逆接続は電源回路の即時破壊・全損扱いとなる。 |
CN12 
PJ-047AHを実装して使用。CN1を同時に実装する事はできない。
- CUI PJ-047AH
- 対応プラグ外形5.5mm, 内径2.1mm
- 極性 センタープラス
- JP1をショートするとArduinoのVin端子へ本電源が接続
その場合はArduinoのVinが許容する電圧範囲である事
- CN2~6,CN7~11のVDD/GND端子へ接続
CN2~CN6 
- JST B3B-EH
- TTL I/Fを搭載したDynamixelシリーズ用のコネクタ
- 5つのコネクタの各端子はいずれも内部で並列に接続
- TTL I/Fと電源は以下の端子に接続
端子番号 | 信号名 |
1 | GND |
2 | VDD |
3 | SIGNAL(BIDIRECTION) |
CN7~CN11 
- JST B4B-EH
- RS-485 I/Fを搭載したDynamixelシリーズ用のコネクタ
- 5つのコネクタの各端子はいずれも内部で並列に接続
- RS-485 I/Fと電源は以下の端子に接続
端子番号 | 信号名 |
1 | GND |
2 | VDD |
3 | RS-485 D+ |
4 | RS-485 D- |
ユーザランド 
- 2.54mmピッチランド
- 工作用
- 5V0のシルクの囲みはArdunioから供給される5V、GNDのシルクの囲みはGNDに接続済
それ以外のランドはフリー
C2 
- 必要に応じてデカップリングコンデンサを装備
100uF以上の容量を推奨
使用方法 
対応するデバイス 
I/F | Device Name |
TTL | Dynamixel AX・MX・Xシリーズ全般, DXMIO, ToFセンサ |
RS-485 | Dynamixel DX・RX・EX・MX・X・PROシリーズ全般, UD3, UD3.5, UD4, USS3, DXMIO(RS-485版), ToFセンサ(RS-485版) |
要求される電源電圧と対応するプロトコルが同じであれば、I/Fを問わず同時に使用できます。
接続方法 
ここでは予めJP1~JP4に同梱のピンソケットが実装され、CN1ないしCN12には電源供給用のコネクタないしジャックが実装され、U1にTTL2DXIFが装着されているものとします。
- JP1~JP4の実装
ピンソケットはリードが長くて弱いた。他のArduino用シールドをスタックして使用しないのであれば、場合によっては市販の2.54mmピッチの1列ピンヘッダを使用しても構わない。
- CN1もしくはCN12の実装
熱容量の大きいベタパターンに対して行う必要があるため、高い容量の半田ごてを使用すると良い。その際に予めフラックスを塗布したり基板側を半田ごてで温めながら半田を流すと濡れが良くなる。
- TTL2DXIFへピンヘッダの実装
TTL2DXIFに同梱のピンヘッダを2分割して半田付けし、DXSHIELDのU1(J1,J2)に装着する。ランド近傍に小さい部品があるので、半田の盛り過ぎや半田くずに注意が必要。
- C2の実装
必要に応じてデカップリングコンデンサを実装するが、こちらも熱容量が大きい事と極性に注意が必要。
半田付けを終えたらDXSHIELDをArduinoに装着します。
- ArduinoにDXSHIELDをスタックさせる。その際に両基板のピンソケット以外が物理的に接触していない事。他のシールドを同時に使用する際は、DXSHIELDが使用している端子に十分配慮する事。
- Dynamixelのコネクタと同じDXSHIELD上のコネクタ同士を接続する。DXSHIELDにはTTL・RS-485 I/F共に各々5個のコネクタが装備されているが、I/Fの種類が一致してさえいればどのコネクタを使用しても構わない。
- DXSHIELDのCN1ないしCN12からDynamixelが要求する仕様の電源を供給する。この時絶対に電源の極性を間違えてはならない。
- DXSHIELDのJP1がオープンの場合はArduino本体への電源供給が必要なため、別途USBケーブルやACアダプタをArduinoへ接続して電源供給する。
DXSHIELDのJP1がショートの場合はCN1からの電源がArduinoへも分配される。この状態でDXSHIELDとArduinoの両方からACアダプタ等を使って給電すると、電源が衝突して故障の原因となる。
モード選択 
Arduinoの種類に依存する部分が多々ありますが、ここではDXSHIELDをArduino UNOに装着して使用する前提として3つのモードを説明します。
ソフトウェアシリアルモード 
ArduinoのIO8・IO9ピンをソフトウェアシリアルで構成しDynamixelと通信するモードです。ArduinoのUSBシリアル通信機能(ハードウェアシリアル)はDynamixelの制御以外の目的に使用できます。
Arduinoには任意の端子をシリアル通信の送受信端子として使用するSoftwareSerialライブラリが用意されています。最大57600bps程度であれば概ね実用レベルです。
JP2とJP3はいずれもショートさせ、SW1を図の位置(SOFT)に切り替えます。
本設定によりArduinoのデジタル入出力端子のうちIO8とIO9をソフトウェアシリアル用の端子として使用するため、この2つの端子は他の目的で使用してはなりません。
また、Arduinoにユーザのスケッチを転送する際は、無条件に本モードに変更しておかないと転送に失敗します。
ハードウェアシリアルモード 
ArduinoのIO0・IO1ピンをハードウェアシリアル(Serial0)で構成しDynamixelと通信するモードです。ArduinoのIO0・IO1に接続されたUSBシリアル通信機能を犠牲にしても高速かつ安定した通信を要求する場合にの設定です。
予めソフトウェアシリアルモードにおいてライブラリによる制御の理解が得られ、スケッチの書き込み時以外にUSBシリアルによる通信を必要としない場合に本設定を選択します。
JP2とJP3はいずれもショートさせ、SW1を図の位置(HARD)に切り替えます。
本設定を行った場合は、自身のスケッチでSerialライブラリを使用してはなりません。また、IO0・IO1ピンとUSBシリアル通信機能は他の目的で使用する事ができません。
なお、スケッチをコンパイルして描き込む際は、本設定が電気的にUSBシリアル通信機能に影響を及ぼすため、その都度ソフトウェアシリアルモードに切り替える必要があります。
USBパススルーモード 
Arduinoに搭載されたUSBシリアル通信機能を用いてPCなどからDXSHIELDをDXHUBライクに直接使用するモードです。Dynamixelの内部パラメータの変更や制御をPCから行う場合は本設定を行います。
まずArduino IDEにてデフォルトで生成されるコード(コードとしては意味を持たない無限ループするだけのスケッチ)をコンパイルし、予めArduinoに書き込んでおきます。このほぼ空のスケッチはDigital I/Oやシリアル通信を使用しないため、PCとDynamixel間の通信を阻害しません。なお、これに該当する独自スケッチであればこの限りではありません。
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
DXSHIELDをソフトウェアシリアルモードに設定してこの何もしないスケッチを書き込んだ後、USBパススルーモードにします。
JP2とJP3はいずれもショートさせ、SW1を図の位置(THROUGH)に切り替えます。
なお、ArduinoのUSBシリアルを担うマイコンに書き込まれているファームウェアの都合で、大きなデータを連続で送受信する事ができません。プロトコルV1を装備するDynamixelシリーズであれば概ね問題はありませんが、プロトコルV2を装備するDynamixelシリーズではコントロールテーブルの拡大に伴いこの問題が露見します。
また、ArduinoのUSBシリアルとRoboPlusやDYNAMIXEL Wizard 2.0との相性もよろしくないので、本モードを積極的に使用する事は推奨しません。
ソフトウェア 
DYNAMIXEL Wizard 2.0 
DXSHIELDをUSBパススルーに設定にする事で、Dynamixelのコントロールテーブルの状態をモニタしたりパラメータの変更や動作確認を簡便に行うソフトウェアであるDYNAMIXEL Wizard 2.0が一部利用できます。
一部というのは、ArduinoのUSBシリアル通信機能は過度なトラフィックがかかるとデータがドロップするのと、RoboPlusにおいて検索を行わせている最中にボーレートの切り替えが発生するとArduinoが再起動する場合がある事がわかっているためです。注意事項に記載したNerOを使用する事で回避できます。
Dynamixel Library for Arduino 
DXSHIELDをソフトウェアシリアルもしくはハードウェアシリアルモードに設定した場合、ArduinoのスケッチからDynamixelを制御するためのライブラリが利用できます。
PC版DYNAMIXEL Protocol 1.0/2.0 Libraryと同様にプロトコルやシリアル通信を意識せずともコントロールテーブルへの読み書きが行えますが、Arduino版はメモリの都合から一部機能を制限したサブセット版となります。
- ライブラリのダウンロード(Arduino UNO/MEGAを想定)
-
- チェックサムの検証を厳密化
- 新たにReadBlockDataとWriteBlockData関数を追加し、コントロールテーブルの読み出し及び書き込みはこの関数を介するように変更
- プロトコルV2の例外時(0xFF 0xFF 0xFDの並びでデータが現れた場合に末尾に0xFDを付与)の処理を全ての関数へ適用(一部制約あり)
- コンパイル時のwarningを抑止
- 多少サンプルプログラムの構成を変更
- Win版dxlibからアイテムのアドレスをマクロ定義したヘッダをコピー
-
- dxlib.cppのハードウェアシリアルポートの初期化不足修正
-
- Dynamixel Protocol V.2に対応
- 低位の送受信関数追加
- 32bitデータの送受信関数追加
- アドレスとサイズに関する引数は全て16bitに統一
DXLIBのインストールは、ArduinoのIDEの「スケッチ→ライブラリのインクルード→.ZIP形式のライブラリをインストール...」メニューを使用してダウンロードしたZIPファイルを選択するだけです。
インストールが完了すると、ユーザーフォルダ配下に「Arduino/libraries/dxlib」が作られ、ライブラリのソースといくつかのサンプルプログラムがその中に展開されます。詳しくはサンプルプログラムとライブラリのソースを参照して下さい。
DXLIB v1.4以降で使用できるヘッダファイルとAPIは以下の通りです。
- dxlib.h
DYNAMIXEL Communiation Protocol 1.0対応デバイスを対象とする場合、dxlib.hをスケッチにインクルードする事でDXLIBクラスが利用できるようになります。なお、Arduinoのリソースの都合から、dx2lib.hとの共存はできません。
#include <dxlib.h>
DXLIB dxif (true); // select software serial
void setup() {
dxif.begin (57600);
}
- dx2lib.h
DYNAMIXEL Communiation Protocol 2.0対応デバイスを対象とする場合、dx2lib.hをスケッチにインクルードする事でDX2LIBクラスが利用できるようになります。なお、Arduinoのリソースの都合から、dxlib.hとの共存はできません。
#include <dxlib.h>
DX2LIB dxif (true); // select software serial
void setup() {
dxif.begin (57600);
}
- DXLIB/DX2LIB (bool ss, HardwareSerial *hws, uint8_t rxpin, uint8_t txpin)
ヘッダファイルに応じてDXLIBないしDX2LIBいずれかのクラスが使用できます。同時にソフトウェアシリアルの使用(ss)・ハードウェアシリアルオブジェクト(hws)・受信端子(rxpin)・送信端子(txpin)を指定した上でオブジェクトを生成できます。
なお、ssにtrueを指定したらソフトウェアシリアルモード、falseを指定したらハードウェアシリアルモードにDXSHIELDを設定しなくてはなりません。
また、hwsやrxpin、txpinは通常指定する必要はありませんが、他のSHIELDやArduinoの機能の都合で使用できない場合に限り指定します。
#include <dxlib.h>
// dxifの名前でDynamixel Protocol V.2 Libraryをインスタンス化
// ソフトウェアシリアルモードで使用
DX2LIB dxif(true);
- void DXLIB/DX2LIB::begin (long baud)
ライブラリを使用可能にします。引数(baud)にはDynamixelに設定されたボーレートを指定します。
なお、選択したモードにより使用できるボーレートに制限があります。
// 生成されたdxifを57143bpsで初期化
void setup() {
dxif.begin (57143);
}
- bool DXLIB/DX2LIB::TxPacket (uint8_t id, uint8_t inst, uint8_t *param, uint16_t len)
指定されたID(id)・インストラクション(inst)・パラメータ(param)・パラメータ長(len)のインストラクションパケットを送信します。
// ID=1へPingインストラクションパケットを送信
dxif.TxPacket (1, 0x01, NULL, 0);
- bool DXLIB/DX2LIB::RxPacket (uint8_t *rdata, uint16_t rdatasize, uint8_t *rid, uint16_t *rlen, uint8_t *err)
ステータスパケットを受信します。成功するとパケット内のパラメータがrdataへコピーされ、そのパラメータのサイズがrlenに返されます。なお、ステータスパケットを受信するのに十分なサイズを確保し、そのポインタをrdataへ、サイズをrdatasizeに指定します。ridにはID、errにはDynamixelのエラーが返ります。
uint8_t buf[10], id, err;
uint16_t len;
// ID=1へPingインストラクションパケットを送信
dxif.TxPacket (1, 0x01, NULL, 0);
// ステータスパケットを受信
dxif.RxPacket (buf, sizeof (buf), &id, &len, &err)
- bool DXLIB/DX2LIB::ReadBlockData (uint8_t id, uint16_t addr, uint8_t *data, uint16_t len, uint8_t *err)
指定されたID(id)・アドレス(addr)から8ビットのデータをdataへlenの長さ分読み出します。errにはDynamixelのエラーが返ります。
なおDX2LIBで4バイト以上を読み出す場合、まずサフィックスが付与された状態でdataへ読み出し、その後に必要に応じてサフィックス削除が行われます。そのため実際に必要なサイズよりも大きめにdataを確保しておく必要があります(最大で1.34倍)。
// ID=1のAX-12のComplianceを取得
uint8_t compliance[4];
dxif.ReadBlockData (1, 26, &compliance, 4, NULL);
- bool DXLIB/DX2LIB::ReadByteData (uint8_t id, uint16_t addr, uint8_t *data, uint8_t *err)
指定されたID(id)・アドレス(addr)から8ビットのデータをdataへ読み出します。errにはDynamixelのエラーが返ります。
// ID=1のAX-12のLEDを取得
uint8_t led;
dxif.ReadByteData (1, 25, &led, NULL);
- bool DXLIB/DX2LIB::ReadWordData (uint8_t id, uint16_t addr, uint16_t *data, uint8_t *err)
指定されたID(id)・アドレス(addr)から16ビットのデータをdataへ読み出します。errにはDynamixelのエラーが返ります。
// ID=1のAX-12からPresentPositionを取得
uint16_t ppos;
dxif.ReadWordData (id, 36, &ppos, NULL);
- bool DXLIB/DX2LIB::ReadLongData (uint8_t id, uint16_t addr, uint32_t *data, uint8_t *err)
指定されたID(id)・アドレス(addr)から32ビットのデータをdataへ読み出します。errにはDynamixelのエラーが返ります。
- bool DXLIB/DX2LIB::WriteBlockData (uint8_t id, uint16_t addr, const uint8_t *data, uint16_t len, uint8_t *err)
指定されたID(id)・アドレス(addr)・8ビットのデータ(data)・指定バイト数(len)をDynamixelに書き込みます。errにはDynamixelのエラーが返ります。
// ID=1のAX-12のComplianceを設定
uint8_t err;
uint8_t compliance[4] = {1,1,32,32};
dxif.WriteBlockData (1, 26, &compliance, 4, &err);
- bool DXLIB/DX2LIB::WriteByteData (uint8_t id, uint16_t addr, uint8_t data, uint8_t *err)
指定されたID(id)・アドレス(addr)・8ビットのデータ(data)をDynamixelに書き込みます。errにはDynamixelのエラーが返ります。
// ID=1のAX-12のLEDを点灯
uint8_t err;
dxif.WriteByteData (id, 25, 1, &err);
- bool DXLIB/DX2LIB::WriteWordData (uint8_t id, uint16_t addr, uint16_t data, uint8_t *err)
指定されたID(id)・アドレス(addr)・16ビットのデータ(data)をDynamixelに書き込みます。errにはDynamixelのエラーが返ります。
// ID=1のAX-12のGoalPositionを511に変更
dxif.WriteWordData (id, 30, 511, NULL);
- bool DXLIB/DX2LIB::WriteLongData (uint8_t id, uint16_t addr, uint32_t data, uint8_t *err)
指定されたID(id)・アドレス(addr)・32ビットのデータ(data)をDynamixelに書き込みます。errにはDynamixelのエラーが返ります。
- bool DXLIB/DX2LIB::WriteSyncByteData (const uint8_t *pid, uint16_t addr, const uint8_t *pdata, int num)
指定されたid数(num)分のIDの配列(pid)・アドレス(addr)・8ビットのデータ配列(pdata)をDynamixelに書き込みます。
// ID=1~5の5個のAX-12のLEDへ点滅を指令
uint8_t ids={1,2,3,4,5};
uint16_t leds={1,1,1,1,1};
dxif.WriteSyncByteData (ids, 30, leds, 5);
- bool DXLIB/DX2LIB::WriteSyncWordData (const uint8_t *pid, uint16_t addr, const uint16_t *pdata, int num)
指定されたid数(num)分のIDの配列(pid)・アドレス(addr)・16ビットのデータ配列(pdata)をDynamixelに書き込みます。
// ID=1~5の5個のAX-12に個別のGoalPositionを指令
uint8_t ids={1,2,3,4,5};
uint16_t poss={100,200,300,400,500};
dxif.WriteSyncWordData (ids, 30, ppos, 5);
- bool DXLIB/DX2LIB::WriteSyncLongData (const uint8_t *pid, uint16_t addr, const uint32_t *pdata, int num)
指定されたid数(num)分のIDの配列(pid)・アドレス(addr)・32ビットのデータ配列(pdata)をDynamixelに書き込みます。
- bool DXLIB/DX2LIB::Ping (uint8_t id, uint16_t *err)
指定されたID(id)のDynamixelを検索します。errにはDynamixelのエラーが返ります。
- bool DXLIB/DX2LIB::Reset (uint8_t id, uint16_t *err)
指定されたID(id)のDynamixelを出荷時状態に戻します。errにはDynamixelのエラーが返ります。
また、Arduino IDEのバージョンによっては「SoftwareSerial.h: No such file or directory」のコンパイルエラーが発生しますので、その場合は自身のスケッチの先頭に以下の1行を挿入してコンパイルします。
#include <SoftwareSerial.h>
その他 
DXSHIELDのTTL・RS-485 I/Fについて 
- 送信はTTL・RS-485の両I/Fに対して同時に行われ、受信はTTL・RS-485の両I/FがOR接続されているため同時に受信できない。
- Arduino側では送受信の切り替えタイミングを意識する必要はないが、半二重通信である事は十二分に意識する必要がある。
- TTL・RS-485のいずれのI/Fにかかわらず同じIDを持ったDynamixelが存在してはならない。
- TTLとRS-485のI/F間をまたいだ送受信はできないため、TTL・RS-485の両I/FにDynamixelが接続された環境において一部のインストラクションが正常動作しない。
Arduino MEGAでの使用 
少しの改造でDXSHIELDをArduino MEGAで使用する事ができます。DXSHIELDは次の図の位置に装着します。
ハードウェアシリアルモード(Serial0以外) 
Serial0を利用する限りUNOと同様の運用になります。MEGAに備わっているSerial1~Serial3のハードウェアシリアルポートを利用する際は以下に従います。
ソフトウェアシリアルモード 
MEGAの仕様上IO8がソフトウェアシリアルとして使用する事ができないため、UNOで想定するソフトウェアシリアルモードで運用する事ができません。それでもソフトウェアシリアルで使用する場合は、MEGAのハードウェアシリアルモードと同様にJP2-2とJP3-2を直接MEGAのソフトウェアシリアルとして利用できる任意の端子に直結します。
- JP2とJP3はオープンにする。
- SW1はどの位置にあっても構わない。
- 接続した端子に合わせてクラスの初期化を変更。
DXLIB dxif (true, NULL, 10, 9); // rxpin IO10, txpin IO9
DX2LIB dxif (true, NULL, 10, 9); // rxpin IO10, txpin IO9
注意事項 
- いずれの端子も絶縁されていない。そのためArduinoとPCをUSBケーブルで活線接続した際に、突入電流などでPCがArduinoを認識しない問題が生じる事がある。そういった場合は、USBISOでPCのUSBポートを絶縁する事で解消する。
- Dynamixelシリーズがサポートする2M[bps]を超えるボーレートは、Arduino UNOの機能に依存するため使用できない。必ず2M[bps]以下で運用する事。
- USBパススルーを積極的に使用したいのであれば、Arduino UNO互換のNerOモジュールをお勧めする。
USBシリアル変換チップにATmega16U2ではなくFT231Xが搭載されているので、バッファフローの問題解消や最大通信速度の向上が期待できる。