8: 2017-05-28 (日) 00:10:03 takaboo | 現: 2018-12-02 (日) 21:33:36 takaboo | ||
---|---|---|---|
Line 4: | Line 4: | ||
[[ショップページへ>http://www.besttechnology.co.jp/modules/onlineshop/index.php?fct=photo&p=175]] | [[ショップページへ>http://www.besttechnology.co.jp/modules/onlineshop/index.php?fct=photo&p=175]] | ||
**概要 [#i9b1c92f] | **概要 [#i9b1c92f] | ||
- | DXSHIELDはDynamixelシリーズと通信するためのI/F(RS485・TTL)をArduinoに増設するシールドで、各I/F用のコネクタに電源を分配する機能も合わせ持ちます。~ | + | DXSHIELDはDynamixelシリーズと通信するためのI/F(RS-485・TTL)をArduinoに増設するシールドで、各I/F用のコネクタに電源を分配する機能も合わせ持ちます。~ |
また、DXSHIELDのI/Fで通信できるデバイスであればいずれも適用可能です。 | また、DXSHIELDのI/Fで通信できるデバイスであればいずれも適用可能です。 | ||
Line 18: | Line 18: | ||
***基本仕様 [#k2975a33] | ***基本仕様 [#k2975a33] | ||
|品番 |BTE074 |<| | |品番 |BTE074 |<| | ||
- | |PCBリビジョン |E133 (2層) |<| | + | |PCBリビジョン |E133B (2層) |<| |
|動作温度範囲 |0~60℃ 結露なきこと|<| | |動作温度範囲 |0~60℃ 結露なきこと|<| | ||
|外形寸法 |約52x53x14.5mm (ピンヘッダ除く) |<| | |外形寸法 |約52x53x14.5mm (ピンヘッダ除く) |<| | ||
|重量 | |<| | |重量 | |<| | ||
|電源 |CN1:DC6~24V (Dynamixelが要求する電源)&br;内部ロジック:DC5V±5% (Arduinoより供給) |<| | |電源 |CN1:DC6~24V (Dynamixelが要求する電源)&br;内部ロジック:DC5V±5% (Arduinoより供給) |<| | ||
- | |コネクタ等|JST B2PS-VH x1&br;JST B4B-EH x6 &br;JST B3B-EH x6 |<| | + | |コネクタ等|E133B版&br; JST B2PS-VH x1&br; JST B4B-EH x5&br; JST B3B-EH x5&br;E133版&br; JST B2PS-VH x1&br; molex 22-03-5045 x5&br; molex 22-03-5035 x5 |<| |
- | |各I/F仕様 |RS485|複信 半二重&br;最大通信速度 2Mbps&br;最大ノード数 256台&br;ESD保護 ±15kV&br;ターミネータ装備済 | | + | |各I/F仕様 |RS-485|複信 半二重&br;最大通信速度 2Mbps&br;最大ノード数 256台&br;ESD保護 ±15kV&br;ターミネータ装備済 | |
- | |^|TTL|複信 半二重&br;最大通信速度 2Mbps&br;ESD保護 ±2kV&br;信号ラインは4.7kΩにてプルアップ済 | | + | |^|TTL|複信 半二重&br;最大通信速度 2Mbps&br;ESD保護 ±2kV&br;信号ラインは47kΩにてプルアップ済 | |
***内部簡略ブロック [#gbb4d2b7] | ***内部簡略ブロック [#gbb4d2b7] | ||
Line 31: | Line 31: | ||
***外観・レイアウト [#k37b8ee0] | ***外観・レイアウト [#k37b8ee0] | ||
| top | side |h | | top | side |h | ||
- | | #ref(E133_TOP.png,27%) | #ref(E133_SIDEp.png,27%) | | + | | #ref(E133B_TOP.png,27%) | #ref(E133B_SIDEp.png,27%) | |
+ | | [[E133B 3D pdf>http://www.besttechnology.co.jp/download/3D/E133B_3D.pdf]]&br;[[E133 3D pdf>http://www.besttechnology.co.jp/download/3D/E133_3D.pdf]] |<| | ||
※出荷時にピンヘッダは未装着 | ※出荷時にピンヘッダは未装着 | ||
- | | 3D |h | + | #ref(E133B_LAYOUT.pdf,100%) |
- | | [[3D pdf>http://www.besttechnology.co.jp/download/3D/E133_3D.pdf]] | | + | |
#ref(E133_LAYOUT.pdf,100%) | #ref(E133_LAYOUT.pdf,100%) | ||
+ | |||
***回路図 [#k1a3e31b] | ***回路図 [#k1a3e31b] | ||
#ref(E133B_SCH.pdf) | #ref(E133B_SCH.pdf) | ||
Line 136: | Line 136: | ||
--[[JST B3B-EH>http://www.jst-mfg.com/product/detail.php?series=58]] | --[[JST B3B-EH>http://www.jst-mfg.com/product/detail.php?series=58]] | ||
--TTL I/Fを搭載したDynamixelシリーズ用のコネクタ | --TTL I/Fを搭載したDynamixelシリーズ用のコネクタ | ||
- | --SIGNAL端子は4.7kΩの抵抗を介して内部の5V電源へプルアップ済 | + | --SIGNAL端子は47kΩの抵抗を介して内部の5V電源へプルアップ済 |
--5つのコネクタはいずれも内部で並列に接続 | --5つのコネクタはいずれも内部で並列に接続 | ||
--TTL I/Fと電源は以下の端子に接続 | --TTL I/Fと電源は以下の端子に接続 | ||
Line 148: | Line 148: | ||
--ピンヘッダ | --ピンヘッダ | ||
--KONDO KRSシリーズ用のコネクタ | --KONDO KRSシリーズ用のコネクタ | ||
- | --SIGNAL端子は4.7kΩの抵抗を介して内部の5V電源へプルアップ済 | + | --SIGNAL端子は47kΩの抵抗を介して内部の5V電源へプルアップ済 |
--5つのコネクタはいずれも内部で並列に接続 | --5つのコネクタはいずれも内部で並列に接続 | ||
--TTL I/Fと電源は以下の端子に接続 | --TTL I/Fと電源は以下の端子に接続 | ||
#ref(TTL_connector_KO.png) | #ref(TTL_connector_KO.png) | ||
+ | |端子番号 |信号名 | | ||
+ | |1 |SIGNAL(BIDIRECTION) | | ||
+ | |2 |VDD | | ||
+ | |3 |GND | | ||
****CN7~CN11 [#q21ef0ec] | ****CN7~CN11 [#q21ef0ec] | ||
Line 157: | Line 161: | ||
#ref(CN7-11_b.png) | #ref(CN7-11_b.png) | ||
--[[JST B4B-EH>http://www.jst-mfg.com/product/detail.php?series=58]] | --[[JST B4B-EH>http://www.jst-mfg.com/product/detail.php?series=58]] | ||
- | --RS485 I/Fを搭載したDynamixelシリーズ用のコネクタ | + | --RS-485 I/Fを搭載したDynamixelシリーズ用のコネクタ |
--D+/D-間にターミネータ装備 | --D+/D-間にターミネータ装備 | ||
--5つのコネクタはいずれも内部で並列に接続 | --5つのコネクタはいずれも内部で並列に接続 | ||
- | --RS485 I/Fと電源は以下の端子に接続 | + | --RS-485 I/Fと電源は以下の端子に接続 |
#ref(B4B-EH.png,100%) | #ref(B4B-EH.png,100%) | ||
|端子番号 |信号名 | | |端子番号 |信号名 | | ||
Line 170: | Line 174: | ||
#ref(CN7-11_KO.png) | #ref(CN7-11_KO.png) | ||
--[[JST B4B-XH>http://www.jst-mfg.com/product/detail.php?series=277]] | --[[JST B4B-XH>http://www.jst-mfg.com/product/detail.php?series=277]] | ||
- | --RS485 I/Fを搭載したKONDO B3Mシリーズ用のコネクタ | + | --RS-485 I/Fを搭載したKONDO B3Mシリーズ用のコネクタ |
--D+/D-間にターミネータ装備 | --D+/D-間にターミネータ装備 | ||
--4つのコネクタはいずれも内部で並列に接続 | --4つのコネクタはいずれも内部で並列に接続 | ||
- | --RS485 I/Fと電源は以下の端子に接続 | + | --RS-485 I/Fと電源は以下の端子に接続 |
#ref(RS485_connector_KO.png) | #ref(RS485_connector_KO.png) | ||
+ | |端子番号 |信号名 | | ||
+ | |1 |GND | | ||
+ | |2 |VDD | | ||
+ | |3 |RS-485 D+ | | ||
+ | |4 |RS-485 D- | | ||
****ユーザランド [#jfa751e7] | ****ユーザランド [#jfa751e7] | ||
- | #ref(URAND.png) | + | #ref(E133C_URAND.png) |
-2.54mmピッチランド | -2.54mmピッチランド | ||
-工作用 | -工作用 | ||
Line 187: | Line 196: | ||
***対応するデバイス [#r3b9fa50] | ***対応するデバイス [#r3b9fa50] | ||
| I/F | Device Name |h | | I/F | Device Name |h | ||
- | |TTL|Dynamixel AX・XL・MX(TTL版)シリーズ全般| | + | |TTL|Dynamixel AX・MX(TTL版)・XLシリーズ全般, DXMIO(TTL), ToFセンサ(TTL) | |
- | |RS485|Dynamixel DX・RX・EX・MX(RS485版)・XL・XM・XH・PROシリーズ全般, UD3, UD3.5, USS3, DXMIO| | + | |RS-485|Dynamixel DX・RX・EX・MX(RS-485版)・XM・XH・PROシリーズ全般, UD3, UD3.5, USS3, DXMIO(RS485), ToFセンサ(RS485) | |
要求される電源電圧が同じであれば、I/Fを問わず同時に使用することが可能です。 | 要求される電源電圧が同じであれば、I/Fを問わず同時に使用することが可能です。 | ||
Line 194: | Line 203: | ||
ここでは予めJP1~JP4にピンヘッダが装着されているものとします。 | ここでは予めJP1~JP4にピンヘッダが装着されているものとします。 | ||
+ArduinoにDXSHIELDをスタックさせる。その際に両基板のピンヘッダ以外が物理的に接触していないこと。他のシールドを同時に使用する際は、DXSHIELDが使用済みの端子に十分配慮しておくこと。 | +ArduinoにDXSHIELDをスタックさせる。その際に両基板のピンヘッダ以外が物理的に接触していないこと。他のシールドを同時に使用する際は、DXSHIELDが使用済みの端子に十分配慮しておくこと。 | ||
- | +Dynamixelのコネクタと同じDXSHIELD上のコネクタ同士を接続する。DXSHIELDにはTTL・RS485 I/F共に各々5個のコネクタが装備されているが、I/Fの種類が一致してさえいればどのコネクタを使用しても構わない。 | + | #ref(E133B_uno.png,70%) |
+ | +Dynamixelのコネクタと同じDXSHIELD上のコネクタ同士を接続する。DXSHIELDにはTTL・RS-485 I/F共に各々5個のコネクタが装備されているが、I/Fの種類が一致してさえいればどのコネクタを使用しても構わない。 | ||
+DXSHIELDのCN1にDynamixelが要求する仕様の電源を供給する。この時絶対に電源の極性を間違えてはならない。 | +DXSHIELDのCN1にDynamixelが要求する仕様の電源を供給する。この時絶対に電源の極性を間違えてはならない。 | ||
+DXSHIELDのJP1がオープンの場合はArduino本体への電源供給が必要なため、別途USBケーブルやACアダプタをArduinoへ接続して電源供給する。~ | +DXSHIELDのJP1がオープンの場合はArduino本体への電源供給が必要なため、別途USBケーブルやACアダプタをArduinoへ接続して電源供給する。~ | ||
Line 227: | Line 237: | ||
// put your setup code here, to run once: | // put your setup code here, to run once: | ||
} | } | ||
+ | |||
void loop() { | void loop() { | ||
// put your main code here, to run repeatedly: | // put your main code here, to run repeatedly: | ||
Line 234: | Line 244: | ||
SW1を図の位置(THROUGH)に切り替えます。 | SW1を図の位置(THROUGH)に切り替えます。 | ||
#ref(mode3.png) | #ref(mode3.png) | ||
+ | |||
+ | なお、ArduinoのUSBシリアルを担っているAVRに書き込まれているファームウェアの都合で、大きなデータを連続で送受信する事ができません。これはプロトコルV1を装備するDynamixelシリーズであれば概ね問題はありませんが、プロトコルV2を装備するDynamixelシリーズではこの問題が露見しやすくなります。~ | ||
+ | また、ArduinoのUSBシリアルとRoboPlus等との相性もよろしくないので、本モードを積極的に使用する事は推奨しません。 | ||
***ソフトウェア [#v2bf51a5] | ***ソフトウェア [#v2bf51a5] | ||
Line 242: | Line 255: | ||
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シリアル通信機能は過度なトラフィックがかかるとデータがドロップすることが頻繁に発生するようです。 | ||
****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を制御するためのライブラリが利用できます。~ | + | #include(DXLIB_Arduino,notitle) |
- | 本家Dynamixel Library同様にスケッチではシリアル通信である事を意識すること無くコントロールテーブルへの読み書きが行えますが、Arduino版はコードを端折り機能を限定したサブセット版となります。 | + | |
- | -ライブラリのダウンロード(Arduino UNOを想定)~ | + | **その他 [#w7e62a68] |
- | -- | + | ***DXSHIELDのTTL・RS-485 I/Fについて [#k759b64e] |
- | #ref(dxlib1.1_for_arduino.zip) | + | -送信はTTL・RS-485の両I/Fに対して同時に行われ、受信はTTL・RS-485の両I/FがOR接続されているため同時に受信できない。 |
- | Dynamixel Protocol V.2に対応~ | + | -TTL・RS-485の両I/Fはいずれも半二重で、無通信時(回路内のTX信号がHigh)は受信回路を活性化し受信待ち状態になり、送信時(回路内のTX信号がLow)は送信回路を活性化し送信状態になる。なお半二重の方向制御として送信信号に10usのオフディレイを設けた信号を用いており、Arduino自信はスケッチ及び回路共に半二重を意識することは無い。 |
- | 低位の送受信関数追加~ | + | -半二重の方向制御を行うオフディレイ回路よりも高速に応答するデバイスを使用するとバスの切り替えタイミングが間に合わず、デバイスからの応答を正常に受信する事ができない。 |
- | 32bitデータの送受信関数追加~ | + | -TTL・RS-485のいずれのI/Fにかかわらず同じIDを持ったDynamixelが存在してはならない。 |
- | アドレスとサイズに関する引数は全て16bitに統一 | + | -TTLとRS-485のI/F間をまたいだ送受信はできないため、TTL・RS-485の両I/FにDynamixelが接続された環境において一部のインストラクションが正常動作しない。 |
+ | -RS-485 I/FのD+/D-ライン間に挿入されているターミネータ(R1)により正常な通信が行えないデバイスが存在する。ターミネータを除去しても正常な通信が行えない場合は、バイアス抵抗等を挿入してみる事。 | ||
- | -- | + | ***Arduino MEGAでの使用 [#z23d4b7d] |
- | #ref(dxlib1.0_for_arduino.zip) | + | 少しの改造でDXSHIELDをArduino MEGAで使用する事ができます。DXSHIELDは次の図の位置に装着します。 |
- | 初期リリース | + | #ref(E133B_mega.png,80%) |
- | DXLIBのインストールは、ArduinoのIDEの「スケッチ→ライブラリのインクルード→.ZIP形式のライブラリをインストール...」メニューを使用してダウンロードしたZIPファイルを選択するだけです。~ | + | ****ハードウェアシリアルモード [#aaf5bd9a] |
- | インストールが完了すると、ユーザーフォルダ配下に「Arduino/libraries/dxlib」が作られ、ライブラリのソースといくつかのサンプルプログラムがその中に展開されます。詳しくはサンプルプログラムとライブラリのソースを参照して下さい。~ | + | デフォルトのSerialを利用する限りUNOと同様の運用で利用できます。しかし、MEGAには追加でSerial1~Serial3のハードウェアシリアルポートが備わっていますので、それらのポートを利用する事で最大のパフォーマンスを発揮できます。 |
+ | -ハードウェアシリアルモードではあるが、SW1を常時SOFTの位置にしておく。 | ||
+ | #ref(mode1.png,60%) | ||
+ | -Serial3を利用する際は、DXSHIELDのIO8とIO9をMEGAのIO15とIO14にジャンパ線でつなぐ。Seral1ならIO17とIO16、Serial2の場合はIO19とIO18にジャンパする。 | ||
+ | #ref(E133B_mega_hard.png,80%) | ||
+ | -ジャンパ先のSerial??に合わせてクラスの初期化を変更(DXLIB v1.2以降でサポート)。 | ||
+ | DXLIB dxif (false, &Serial3); | ||
+ | |||
+ | DX2LIB dxif (false, &Serial3); | ||
+ | -IO8・IO9は使用不可 | ||
- | DXLIB v1.1で使用できるヘッダファイルとAPIは以下の通りです。 | + | ****ソフトウェアシリアルモード [#b9557fa4] |
- | -&color(#0099ff){''dxlib.h''};~ | + | 次の作業が必要です。~ |
- | Dynamixel Protocol V.1のデバイスを対象とする場合、'''dxlib.h'''をスケッチにインクルードする事で'''DXLIB'''クラスが利用できるようになります。なお、Arduinoのリソースの都合から、V.2との共存はできません。 | + | -SW1を常時SOFTの位置にしておく。 |
- | #include <dxlib.h> | + | #ref(mode1.png,60%) |
- | DXLIB dxif (true); // select software serial | + | -Arduino MEGAではIO8は[[ソフトウェアシリアルの受信端子>https://www.arduino.cc/en/Reference/SoftwareSerial]]として使用できないため、ジャンパ線でIO8とIO10を短絡。 |
- | void setup() { | + | #ref(E133_mega_jumper.png) |
- | dxif.begin (57600); | + | -入れ替えた端子に合わせてクラスの初期化を変更。~ |
- | } | + | DXLIB dxif (true, NULL, 10, 9); // rxpin IO8->IO10, txpin IO9 |
- | -&color(#0099ff){''dx2lib.h''};~ | + | |
- | Dynamixel Protocol V.2のデバイスを対象とする場合、'''dx2lib.h'''をスケッチにインクルードする事で'''DX2LIB'''クラスが利用できるようになります。なお、Arduinoのリソースの都合から、V.1との共存はできません。 | + | DX2LIB dxif (true, NULL, 10, 9); // rxpin IO8->IO10, txpin IO9 |
- | #include <dx2lib.h> | + | -IO8・IO9・IO10は使用不可 |
- | DX2LIB dxif (true); // select software serial | + | |
- | void setup() { | + | |
- | dxif.begin (57600); | + | |
- | } | + | |
- | -&color(#0099ff){''DXLIB/DX2LIB'' (bool ss, uint8_t txpin, uint8_t rxpin)};~ | + | |
- | ヘッダファイルに応じて'''DXLIB'''ないし'''DX2LIB'''いずれかのクラスが使用できます。同時にソフトウェアシリアルの使用('''ss''')・送信端子('''txpin''')・受信端子('''rxpin''')を指定した上でオブジェクトを生成できます。~ | + | |
- | なお、'''ss'''にtrueを指定したら[[ソフトウェアシリアルモード>#ee08b548]]、falseを指定したら[[ハードウェアシリアルモード>#ce79cebb]]にDXSHIELDを設定しなくてはなりません。~ | + | |
- | また、'''txpin'''と'''rxpin'''はDXSHIELDを使用する限り指定してはなりません。 | + | |
- | #include <dx2lib.h> | + | |
- | // dxifの名前でDynamixel Protocol V.2 Libraryをインスタンス化 | + | |
- | // ソフトウェアシリアルモードで使用 | + | |
- | DX2LIB dxif(true); | + | |
- | -&color(#0099ff){void DXLIB/DX2LIB::''begin'' (long baud)};~ | + | |
- | ライブラリを使用可能にします。引数('''baud''')にはDynamixelに設定されたボーレートを指定します。~ | + | |
- | なお、選択したモードにより使用できるボーレートに制限があります。 | + | |
- | // 生成されたdxifを57143bpsで初期化 | + | |
- | void setup() { | + | |
- | dxif.begin (57143); | + | |
- | } | + | |
- | -&color(#0099ff){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); | + | |
- | -&color(#0099ff){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) | + | |
- | -&color(#0099ff){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); | + | |
- | -&color(#0099ff){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); | + | |
- | -&color(#0099ff){bool DXLIB/DX2LIB::''ReadLongData'' (uint8_t id, uint16_t addr, uint32_t *data, uint8_t *err)};~ | + | |
- | 指定されたID('''id''')・アドレス('''addr''')から32ビットのデータを'''data'''へ読み出します。'''err'''にはDynamixelのエラーが返ります。 | + | |
- | -&color(#0099ff){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); | + | |
- | -&color(#0099ff){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); | + | |
- | -&color(#0099ff){bool DXLIB/DX2LIB::''WriteLongData'' (uint8_t id, uint16_t addr, uint32_t data, uint8_t *err)};~ | + | |
- | 指定されたID('''id''')・アドレス('''addr''')・32ビットのデータ('''data''')をDynamixelに書き込みます。'''err'''にはDynamixelのエラーが返ります。 | + | |
- | -&color(#0099ff){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); | + | |
- | -&color(#0099ff){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); | + | |
- | -&color(#0099ff){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に書き込みます。 | + | |
- | -&color(#0099ff){bool DXLIB/DX2LIB::''Ping'' (uint8_t id, uint16_t *err)};~ | + | |
- | 指定されたID('''id''')のDynamixelを検索します。'''err'''にはDynamixelのエラーが返ります。 | + | |
- | -&color(#0099ff){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行を挿入してコンパイルします。 | + | ****USBパススルーモード [#f2ca6d5c] |
- | #include <SoftwareSerial.h> | + | [[UNOのUSBパススルーモード>#c1027f1a]]と同様です。他のモードで強いられるジャンパ等の措置は必要ありません。 |
- | + | ||
- | **その他 [#w7e62a68] | + | |
- | ***DXSHIELDのTTL・RS485 I/Fについて [#k759b64e] | + | |
- | -送信はTTL・RS485の両I/Fに対して同時に行われ、受信はTTL・RS485の両I/FがOR接続されているため同時に受信できない。 | + | |
- | -TTL・RS485の両I/Fはいずれも半二重で、無通信時(回路内のTX信号がHigh)は受信回路を活性化し受信待ち状態になり、送信時(回路内のTX信号がLow)は送信回路を活性化し送信状態になる。なお半二重の方向制御として送信信号に10usのオフディレイを設けた信号を用いており、Arduino自信はスケッチ及び回路共に半二重を意識することは無い。 | + | |
- | -半二重の方向制御を行うオフディレイ回路よりも高速に応答するデバイスを使用するとバスの切り替えタイミングが間に合わず、デバイスからの応答を正常に受信する事ができない。 | + | |
- | -TTL・RS485のいずれのI/Fにかかわらず同じIDを持ったDynamixelが存在してはならない。 | + | |
- | -TTLとRS485のI/F間をまたいだ送受信はできないため、TTL・RS485の両I/FにDynamixelが接続された環境において一部のインストラクションが正常動作しない。 | + | |
***注意事項 [#o2f97e11] | ***注意事項 [#o2f97e11] | ||
-いずれの端子も絶縁されていない。そのためArduinoとPCをUSBケーブルで活線接続した際に、突入電流などでPCがArduinoを認識しない問題が生じる事がある。そういった場合は、[[USBISO]]でPCのUSBポートを絶縁する事で解消する。 | -いずれの端子も絶縁されていない。そのためArduinoとPCをUSBケーブルで活線接続した際に、突入電流などでPCがArduinoを認識しない問題が生じる事がある。そういった場合は、[[USBISO]]でPCのUSBポートを絶縁する事で解消する。 | ||
-Dynamixelシリーズがサポートする2M[bps]を超えるボーレートは、Arduino UNOの機能に依存するため使用できない。必ず2M[bps]以下で運用する事。 | -Dynamixelシリーズがサポートする2M[bps]を超えるボーレートは、Arduino UNOの機能に依存するため使用できない。必ず2M[bps]以下で運用する事。 | ||
+ | -E133(初期リリース版)とE133B(Rev.B)の相違点~ | ||
+ | --一部抵抗の定数修正~ | ||
+ | --Dynamixel用コネクタをmolexからJST製EHに~ | ||
+ | --JST製XHコネクタの装備に対応 | ||
+ | --PCBのレジスト色を青から緑に | ||
+ | -FUTABA社製コマンド式サーボのうち、JST社B4B-EHコネクタを装備してるものはDynamixelのそれとはピンアサインが異なるため、絶対に接続しない事。 |