13: 2017-06-25 (日) 20:34:18 takaboo | 14: 2017-06-25 (日) 22:45:09 takaboo | ||
---|---|---|---|
Line 203: | Line 203: | ||
ここでは予めJP1~JP4にピンヘッダが装着されているものとします。 | ここでは予めJP1~JP4にピンヘッダが装着されているものとします。 | ||
+ArduinoにDXSHIELDをスタックさせる。その際に両基板のピンヘッダ以外が物理的に接触していないこと。他のシールドを同時に使用する際は、DXSHIELDが使用済みの端子に十分配慮しておくこと。 | +ArduinoにDXSHIELDをスタックさせる。その際に両基板のピンヘッダ以外が物理的に接触していないこと。他のシールドを同時に使用する際は、DXSHIELDが使用済みの端子に十分配慮しておくこと。 | ||
- | #ref(E133B_uno.png,80%) | + | #ref(E133B_uno.png,70%) |
+Dynamixelのコネクタと同じDXSHIELD上のコネクタ同士を接続する。DXSHIELDにはTTL・RS-485 I/F共に各々5個のコネクタが装備されているが、I/Fの種類が一致してさえいればどのコネクタを使用しても構わない。 | +Dynamixelのコネクタと同じDXSHIELD上のコネクタ同士を接続する。DXSHIELDにはTTL・RS-485 I/F共に各々5個のコネクタが装備されているが、I/Fの種類が一致してさえいればどのコネクタを使用しても構わない。 | ||
+DXSHIELDのCN1にDynamixelが要求する仕様の電源を供給する。この時絶対に電源の極性を間違えてはならない。 | +DXSHIELDのCN1にDynamixelが要求する仕様の電源を供給する。この時絶対に電源の極性を間違えてはならない。 | ||
Line 244: | Line 244: | ||
SW1を図の位置(THROUGH)に切り替えます。 | SW1を図の位置(THROUGH)に切り替えます。 | ||
#ref(mode3.png) | #ref(mode3.png) | ||
+ | |||
+ | なお、ArduinoのUSBシリアルを担っているAVRに書き込まれているファームウェアの都合で、大きなデータを連続で送受信する事ができません。これはプロトコルV1を装備するDynamixelシリーズであれば概ね問題はありませんが、プロトコルV2を装備するDynamixelシリーズではこの問題が露見しやすくなります。 | ||
***ソフトウェア [#v2bf51a5] | ***ソフトウェア [#v2bf51a5] | ||
Line 252: | Line 254: | ||
Dynamixel Configuratorの詳細は[[こちら>DXCONF]]にて。 | Dynamixel Configuratorの詳細は[[こちら>DXCONF]]にて。 | ||
- | ROBOTIS社提供のRoboPlusは[[こちら>http://support.robotis.com/jp/software/roboplus_main.htm]]。 | + | またROBOTIS社提供の[[RoboPlus 1.0]]と[[RoboPlus 2.0]]が使用できます。 |
+ | #ref(RoboPlus 2.0/r+2_top.png,40%) | ||
なお、ArduinoのUSBシリアル通信機能は過度なトラフィックがかかるとデータがドロップすることが頻繁に発生するようです。 | なお、ArduinoのUSBシリアル通信機能は過度なトラフィックがかかるとデータがドロップすることが頻繁に発生するようです。 | ||
****Dynamixel Library for PC [#x91df052] | ****Dynamixel Library for PC [#x91df052] | ||
- | DXSHIELDを[[USBパススルー>#c1027f1a]]にする事で、[[Dynamixel Library]]を併用してシリアル通信やプロトコルを意識せずにPCから制御する事ができます。 | + | DXSHIELDを[[USBパススルー>#c1027f1a]]にする事で、Dynamixel Libraryを併用してシリアル通信やプロトコルを意識せずにPCから制御する事ができます。 |
- | Dynamixel Libraryの詳細は[[こちら>Dynamixel Library]]にて。 | + | 詳細は[[DYNAMIXEL Protocol 1.0 Library>Dynamixel Library]]と[[DYNAMIXEL Protocol 2.0 Library>Dynamixel Protocol 2 Library]]にて。 |
****Dynamixel Library for Arduino [#t98a44bc] | ****Dynamixel Library for Arduino [#t98a44bc] | ||
DXSHIELDを[[ソフトウェアシリアル>#ee08b548]]もしくは[[ハードウェアシリアル>#ce79cebb]]モードに設定した場合、ArduinoのスケッチでDynamixelを制御するためのライブラリが利用できます。~ | DXSHIELDを[[ソフトウェアシリアル>#ee08b548]]もしくは[[ハードウェアシリアル>#ce79cebb]]モードに設定した場合、ArduinoのスケッチでDynamixelを制御するためのライブラリが利用できます。~ | ||
- | 本家Dynamixel Library同様にスケッチではシリアル通信である事を意識すること無くコントロールテーブルへの読み書きが行えますが、Arduino版はコードを端折り機能を限定したサブセット版となります。 | + | PC版DYNAMIXEL Protocol [[1.0>Dynamixel Library]]/[[2.0>Dynamixel Protocol 2 Library]] Library同様プロトコルやにシリアル通信を意識すること無くコントロールテーブルへの読み書きが行えますが、Arduino版は機能を限定したサブセット版となります。 |
-ライブラリのダウンロード(Arduino UNO/MEGAを想定)~ | -ライブラリのダウンロード(Arduino UNO/MEGAを想定)~ | ||
Line 286: | Line 289: | ||
DXLIB v1.2で使用できるヘッダファイルとAPIは以下の通りです。 | DXLIB v1.2で使用できるヘッダファイルとAPIは以下の通りです。 | ||
-&color(#0099ff){''dxlib.h''};~ | -&color(#0099ff){''dxlib.h''};~ | ||
- | Dynamixel Protocol V.1のデバイスを対象とする場合、'''dxlib.h'''をスケッチにインクルードする事で'''DXLIB'''クラスが利用できるようになります。なお、Arduinoのリソースの都合から、V.2との共存はできません。 | + | [[DYNAMIXEL Communiation Protocol 1.0]]対応デバイスを対象とする場合、'''dxlib.h'''をスケッチにインクルードする事で'''DXLIB'''クラスが利用できるようになります。なお、Arduinoのリソースの都合から、'''dx2lib.h'''との共存はできません。 |
#include <dxlib.h> | #include <dxlib.h> | ||
DXLIB dxif (true); // select software serial | DXLIB dxif (true); // select software serial | ||
Line 293: | Line 296: | ||
} | } | ||
-&color(#0099ff){''dx2lib.h''};~ | -&color(#0099ff){''dx2lib.h''};~ | ||
- | Dynamixel Protocol V.2のデバイスを対象とする場合、'''dx2lib.h'''をスケッチにインクルードする事で'''DX2LIB'''クラスが利用できるようになります。なお、Arduinoのリソースの都合から、V.1との共存はできません。 | + | [[DYNAMIXEL Communiation Protocol 2.0]]対応デバイスを対象とする場合、'''dx2lib.h'''をスケッチにインクルードする事で'''DX2LIB'''クラスが利用できるようになります。なお、Arduinoのリソースの都合から、'''dxlib.h'''との共存はできません。 |
#include <dx2lib.h> | #include <dx2lib.h> | ||
DX2LIB dxif (true); // select software serial | DX2LIB dxif (true); // select software serial | ||
Line 378: | Line 381: | ||
-TTL・RS-485のいずれのI/Fにかかわらず同じIDを持ったDynamixelが存在してはならない。 | -TTL・RS-485のいずれのI/Fにかかわらず同じIDを持ったDynamixelが存在してはならない。 | ||
-TTLとRS-485のI/F間をまたいだ送受信はできないため、TTL・RS-485の両I/FにDynamixelが接続された環境において一部のインストラクションが正常動作しない。 | -TTLとRS-485のI/F間をまたいだ送受信はできないため、TTL・RS-485の両I/FにDynamixelが接続された環境において一部のインストラクションが正常動作しない。 | ||
+ | -RS-485 I/FのD+/D-ライン間に挿入されているターミネータ(R1)により正常な通信が行えないデバイスが存在する。ターミネータを除去しても正常な通信が行えない場合は、バイアス抵抗等を挿入してみる事。 | ||
+ | |||
***Arduino MEGAでの使用 [#z23d4b7d] | ***Arduino MEGAでの使用 [#z23d4b7d] | ||
少しの改造でDXSHIELDをArduino MEGAで使用する事ができます。DXSHIELDは次の図の位置に装着します。 | 少しの改造でDXSHIELDをArduino MEGAで使用する事ができます。DXSHIELDは次の図の位置に装着します。 | ||
Line 386: | Line 391: | ||
-ハードウェアシリアルモードではあるが、SW1を常時SOFTの位置にしておく。 | -ハードウェアシリアルモードではあるが、SW1を常時SOFTの位置にしておく。 | ||
#ref(mode1.png,60%) | #ref(mode1.png,60%) | ||
- | -Serial3を利用する際は、DXSHIELDのIO8とIO9をMEGAのIO15とIO14にジャンパ線でつなぐ。Seral1ならIO17とIO16、Serial2の場合はIO19とIO18に読み替える。 | + | -Serial3を利用する際は、DXSHIELDのIO8とIO9をMEGAのIO15とIO14にジャンパ線でつなぐ。Seral1ならIO17とIO16、Serial2の場合はIO19とIO18にジャンパする。 |
#ref(E133B_mega_hard.png,80%) | #ref(E133B_mega_hard.png,80%) | ||
- | -ジャンパ先のSerial3に合わせてクラスの初期化を変更(DXLIB v1.2以降でサポート)。 | + | -ジャンパ先のSerial??に合わせてクラスの初期化を変更(DXLIB v1.2以降でサポート)。 |
DXLIB dxif (false, &Serial3); | DXLIB dxif (false, &Serial3); | ||
+ | |||
DX2LIB dxif (false, &Serial3); | DX2LIB dxif (false, &Serial3); | ||
-IO8・IO9は使用不可 | -IO8・IO9は使用不可 | ||
Line 401: | Line 407: | ||
-入れ替えた端子に合わせてクラスの初期化を変更。~ | -入れ替えた端子に合わせてクラスの初期化を変更。~ | ||
DXLIB dxif (true, NULL, 10, 9); // rxpin IO8->IO10, txpin IO9 | DXLIB dxif (true, NULL, 10, 9); // rxpin IO8->IO10, txpin IO9 | ||
+ | |||
DX2LIB dxif (true, NULL, 10, 9); // rxpin IO8->IO10, txpin IO9 | DX2LIB dxif (true, NULL, 10, 9); // rxpin IO8->IO10, txpin IO9 | ||
-IO8・IO9・IO10は使用不可 | -IO8・IO9・IO10は使用不可 | ||
+ | |||
+ | ****USBパススルーモード [#f2ca6d5c] | ||
+ | [[UNOのUSBパススルーモード>#c1027f1a]]と同様です。他のモードで強いられるジャンパ等の措置は必要ありません。 | ||
***注意事項 [#o2f97e11] | ***注意事項 [#o2f97e11] | ||
Line 412: | Line 422: | ||
--JST製XHコネクタの装備に対応 | --JST製XHコネクタの装備に対応 | ||
--PCBのレジスト色を青から緑に | --PCBのレジスト色を青から緑に | ||
- | -RS-485 I/FのD+/D-ライン間に挿入されているターミネータ(R1)により正常な通信が行えないデバイスが存在する。ターミネータを除去しても正常な通信が行えない場合は、バイアス抵抗等を挿入してみる事。 | ||
-FUTABA社製コマンド式サーボのうち、JST社B4B-EHコネクタを装備してるものはDynamixelのそれとはピンアサインが異なるため、絶対に接続しない事。 | -FUTABA社製コマンド式サーボのうち、JST社B4B-EHコネクタを装備してるものはDynamixelのそれとはピンアサインが異なるため、絶対に接続しない事。 |