ショップページへ

E133C_3D.png

概要 anchor.png

本製品はDynamixelを扱うにあたり基本的な事項を把握する事を目的としたキットです。別途PCを用意するだけで、Dynamixelを運転する最低限の装置が一通り揃います。
PCをホストとしたプログラムによってDynamixelへの理解が進めば、Arduinoによる組み込みプログラミングにチャレンジしたり、Dynamixelを追加して自身のアプリケーションに組み込むといった事が可能です。

なおArduino UNOのUSBシリアル変換機能(主にATmega16U2を使用してるもの)はDynamixelとの通信に支障が生じる事がわかっているため、本製品ではFTDI社のUSBシリアル変換チップを使用しているNerOを採用しています。

Page Top

Dynamixel Starter Kit Aの特徴 anchor.png

  • DXSHIELDNerO-SP1(Arduino UNO互換)・XL430-W250-T x3・USBケーブル・ACアダプタを同梱
  • PCもしくはNerOのいずれかをホストコントローラとして選択し使用
  • はんだ付け不要
  • Windows PCさえあれば一通り動作検証を行うためのハードウェアの準備が整う
Page Top

仕様 anchor.png

Page Top

同梱内容 anchor.png

型式等数量備考
DXSHIELD1BTE074B
Arduino UNO互換機1NerO-SP1
HOLDER TYPE UNO1X000018
Arduinoリセット回避基板1Arduinoリセット回避基板(E197)
Dynamixel3XL430-W250-T
USBケーブル1type A <-> micro B
ACアダプタ1IN:AC100~240V, OUT:DC12V/3A
  • NerOのC16は取り外した上でE197から延びるリード線をハンダし、E197をNerOのISPコネクタに装着済み(NerOの回路図はこちら)
  • 部品受給逼迫による影響によりDXSHIELDの一部のEHコネクタ(CN5~CN6、CN8~CN11)は未実装
  • DXSHIELDのJ1~J4にはスタッキングコネクタではなく通常のピンヘッダを実装済み、JP1~JP3はジャンパではなくスズメッキ線で短絡済み、CN12にPJ-047AHを装着済み、J1/J2にTTL2DXIFを実装済み
  • 付属のACアダプタの電源容量では3台を同時に運転するには少々不足
Page Top
Arduinoリセット回避基板(E197) anchor.png

NerOに限らずArduinoはUSBシリアルI/Fを装備しており、シリアルデータの送受信信号の他にハードウェアフロー制御信号がArduinoのリセット端子に接続されています。主にArduino IDEからArduinoへプログラムを転送する前にATmega328Pをリセットさせる目的で備わっていますが、このハードウェアフロー制御信号は意図的なコードによる制御で変化する以外にも、USBケーブルの抜き差しや仮想COMポートのオープンだけでも変化するため、Arduinoでは暫し嫌われます。
USBシリアル変換チップとATmega328Pのリセット端子間に挿入されている直列コンデンサを取り外す事でハードウェアフロー制御信号によるリセットを抑止する事ができますが、プログラムを転送する度に再度コンデンサを装着するのは面倒です。

そこでコンデンサを取り外していても再びハードウェアフロー制御信号を用いてリセットできるようにするための基板(E197)を用意しました。回路は以下の通りとても単純です。

E197_SCH.png

本基板をArduinoのISP端子に装着し、コンデンサを取り外した空きパターンにリード線をつないて使用します。結果的にジャンパの挿抜のみでコンデンサが装着された状態と取り外した状態を作り出します。

Page Top

スターターキットを使う anchor.png

基本的にDXSHIELDのマニュアルに記載されている使用方法と同等ですが、改めて要点を紹介します。

Page Top

各装置の接続 anchor.png

各運用条件に共通する装置の接続を以下に示します。

E133C_STARTERKIT_ASM.png
  1. NerOのISP端子(CN3)にE197を装着
  2. NerOの電源スイッチ(SW1)は常時ON
  3. DXSHIELDのJP2は常時ショート
  4. DXSHIELDのJP3は常時ショート
  5. DXSHIELDのJP1は常時ショート
  6. Robot Cable-X3PをDXSHIELDのCN2~CN4のいずれかに接続
  7. Robot Cable-X3PをDynamixelに接続
  8. USBケーブルをNerOとPC間に接続
  9. ACアダプタ(DC12V)をDXSHIELDのCN12に接続

なおNerOに備わっているDCジャック(CN2)は使用しません。またHOLDER TYPE UNOはNerOの端子が不用意に導電性のものに接触する事の無いよう必要に応じて使用します。

Page Top

PCをホストとする場合 anchor.png

PCからNerOに搭載されたUSBシリアル通信機能を中継し、最終的にDXSHIELDのTTL/RS-485 I/Fを介してDynamixelを制御します。

mode_through.png

まずNerOのCPUには何も仕事をさせないための設定を行っておく必要がありますが、 Arduino IDEにて以下のようなデフォルトで生成されるコード(GPIOやUARTを一切初期化や使用をしないスケッチ)を使用します。

void setup() {
  // put your setup code here, to run once:
}

void loop() {
  // put your main code here, to run repeatedly:
}

コンパイルができたらDXSHIELDをソフトウェアシリアルモード(SW1をSOFTの位置)に切り替えてからNerOに書き込みます。

E133C_SW1_SOFT.png

書き込んだらDXSHIELDをパススルーモード(SW1をTHROUGHの位置)に切り替えます。

E133C_SW1_THROUGH.png

最後にNerOのISPコネクタに装着された基板(E197)のジャンパピンを取り外します。これによりUSBポートからNerOをリセットする事ができなくなるため、USBポートのオープンと連動したNerOのリセットを防ぐ事ができます。
特にDYNAMIXEL WizardはScan中のボーレートの切り替わるタイミングでもNerOをリセットさせてしまうため、この措置は必須となります。

NeroISP_JP_REMOVE.png

なおジャンパピンは無くさないようくれぐれも注意してください。

これ以後NerO+DXSHIELDはDynamixel用のTTL/RS-485 I/Fボードかつ電源分配装置としてのみ機能し、操作の主役はPCに委ねられます。

Page Top
PCからDynamixelを制御する anchor.png

概ねDYNAMIXEL basic tutorialに記載された運用ができます。

なお同梱されるDynamixelはいずれも出荷時の状態(ID=1, Baudrate=57600bps)となっています。複数台を同時に運用する場合は、個々のDynamixelのIDを異なる値に設定してから使用してください。

またNerOに装備されたUSBシリアル変換チップの最大通信速度は3Mbpsとなりますので、この値を超えた運用はできません。

Page Top

NerOをホストとする場合 anchor.png

NerOに書き込んだプログラムによってDynamixelを制御します。Dynamixelとの通信に使用するNerOの端子によって2つのモードを用意していますが、いずれも何らかの制約が生じます。UARTを1チャネルのみ内蔵しているATmega328Pであるが故に致し方ないところです。

またNerOのISPコネクタに装着された基板(E197)のジャンパピンが取り外されていると、Arduino IDEからプログラムを書き込む事ができません。書き込む前には必ずジャンパを装着しておきます。

NeroISP_JP_MOUNT.png

なお本ジャンパが挿入されていると、NerOにUSBケーブルを接続したりPCからポートをオープンするタイミングでNerOは必ずリセットされます。NerOにプログラムが書き込まれた状態でそれらの操作によってNerOが再起動してしまう事が運用上問題になるのであれば、最終的にジャンパを外しても構いません。

Page Top
ソフトウェアシリアルモード anchor.png

NerOのIO8・IO9ピンを用いてDynamixelと通信するモードです。NerOのUARTはシリアルモニタ等の任意の目的で自由に使えますが、DynamixelとはGPIOのON/OFFをタイミングを見計らいながら通信の処理を行うため、他の割り込みの影響を受けて正しい送受信が行えなかったり通信速度が上げられない等の弊害が生じます。

mode_soft.png

SW1を図の位置(SOFT)に切り替えます。

E133C_SW1_SOFT.png

本設定によりNerOのデジタル入出力端子のうちIO8とIO9をソフトウェアシリアル用の端子として使用するため、この2つの端子は他の目的で使用してはなりません。
またNerOへプログラムを転送する際は、無条件に本モードに変更しておかないと転送に失敗します。

Page Top
ハードウェアシリアルモード anchor.png

NerOのIO0・IO1ピンを用いてDynamixelと通信するモードです。UART端子はNerOのUSBシリアル通信に接続されていますが、USBシリアル通信を犠牲にしても高速かつ安定したDynamixelとの通信を行いたい場合に選択します。

mode_hard.png

SW1を図の位置(HARD)に切り替えます。

E133C_SW1_HARD.png

本設定を行った後には、Dynamixelとの通信以外にIO0・IO1ピンとUSBシリアル通信機能を使用する事ができなくなります。シリアルモニタが使えないため、Serial.printの類を使用したデバッグができません。
なおスケッチをコンパイルして描き込む際は、本設定が電気的にUSBシリアル通信機能に影響を及ぼすため、その都度ソフトウェアシリアルモードに切り替える必要があります。

Page Top
NerOのプログラミング anchor.png
Page Top
Arduino IDE anchor.png

NerOはArduino UNO互換ですので、Dynamixel Library for Arduinoが利用できます。Arduino IDEにてNerOをホストとしたコーディングを行う場合の詳細はそちらを参照してください。

Page Top
GCC Developer Lite anchor.png

最新のGCC Developer LiteはArduino UNOをターゲットとしてサポートしています。UARTとDynamixel Libraryのみですがライブラリを同梱していますので、これらを用いてDynamixelを制御するプログラミングが可能です。
Arduino IDEで提供されるArduino用のライブラリは一切含まれていませんので、他のAVRマイコンボードシリーズと同様の扱いとなります。
大まかな使用方法は以下の通りです。

  1. GDLBasalPack・GDLAvrPackそして必要に応じてGDLFPCPackを順にインストール
  2. Flash Writerを起動し、システムメニューの「avrdude command line option」をクリックし、コンボボックスから「-c arduino -e -F」を選択して「OK」ボタンを押す
    GSL_FW_0.png
  3. Flash WriterのシステムメニューのPropertyにチェックを入れ諸設定項目が表示された状態にする
    GSL_FW_1.png
  4. 以下の設定を行う
    CPU TYPE:「AVR:atmega328p」
    COM:ArduinoをUSBケーブルで接続した際に追加されるCOMポート
    BaudRate[bps]:「115200」
    GSL_FW_2.png
    最後にFlash Writerを終了する事で設定が保存される
  5. GCC Developer Liteを起動しツールメニュー→コンパイルオプション(O)をクリックし、表示されるダイアログボックスの設定リストから「ArduinoUNO」を選択
    GSL_OPT_1.png
  6. GCC Developer Lite上でのコーディングを終えたら、メニューの「コンパイル(C)」→「ビルド(B)」もしくは「F9」キーを押してコンパイル
  7. コンパイルが成功すると先ほどの設定が反映されたFlash Writeが起動するので、Arduino側の準備を整えて「Execute」ボタンを押す
    書き込みそのものはGDLAvrPackに同梱されるavrdudeが担う

テストがてら次のようなプログラムを作りました。詳細はライブラリのソースを参考にしてください。

  • TIMER2を割り込みなしでwait(ミリ秒待ち)とtickcount(実行時間測定)を作成
  • プロトコルV2のサフィックス処理のいじわるテスト含む
  • GDLに同梱のDX2LIBはクラス化されていないのでC言語でも利用可
  • 初期化方法がDynamixel Library for Arduinoとは異なりDX2_Openを使用
  • DX2_Openの引数であるTDX2Host_ConfParamにはポートの初期化・指定バイト数受信・受信バッファクリア・指定バイト数送信の4つのUART関連の関数を定義
  • ソフトシリアルの場合は1Mbps固定とする(ライブラリのバグの都合)
Page Top

その他 anchor.png

  • JST社製コネクタの市場在庫が少ないため一部未実装状態で提供しているが、運用上不足する場合は別途調達した上で実装の事。
  • Arduino UNOはリソースが少ない傾向なので、過度なワークメモリを要求するアプリケーションは避けざるを得ない。
  • ソフトウェアシリアルで運用する場合の条件は厳しく、通信中に少しでも横やりが入ると正常なデータとして認識されなくなる。特に割り込みはご法度である。

Front page   Diff ReloadPrint View   Page list Search Recent changes   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom)
Last-modified: 2022-07-19 (Tue) 21:02:42 (JST) (816d)