ページへ戻る

− Links

 印刷 

BTE083 FDIII-HC のバックアップソース(No.22) :: Besttechnology

knowledge:BTE083 FDIII-HC のバックアップソース(No.22)

« Prev[4]  Next »[5]
TITLE:BTE083 FDIII-HCマニュアル
#norelated
#contents
**概要 [#tb847e68]
本製品はSAM7S I/Oボードの後継としてデザインされ、従来オプションとなっていた無線やマンマシンI/FさらにmicroSDカードスロット、RS485とTTL I/Fによるラインナップの分離といった煩わしさを解消し、更に加速度センサを装備する事で移動検出といったアプリケーションに適用しやすくしたハイパフォーマンスコントローラです。

FREEDOMシリーズにも使用されるDynamixel AX-12+やRX-28を制御するためのAPIが提供され、複雑な多軸ロボットを構成する事が簡便に行う事ができます。

また、単体でDynamixelシリーズとPC間のI/F変換としても機能しますので、PCからUSBないしBluetooth経由でIDの変更やその他パラメータの調整等にも使用できます。

**基本仕様 [#e5a81ed1]
|商品番号 |BTE083 |
|リビジョン |E092 (4層) |
|動作温度 |0~+50℃ |
|外部電源 |電源電圧範囲:DC7.2V~DC26V&br;絶対最大定格電圧:DC30V&br;最大スイッチング電流:30A |
|搭載主要機能 |AT91SAM7S512(48MHz), 3軸加速度センサ, Bluetooth(ZEAL-C01), ブザー, プッシュスイッチ, DIPスイッチ, microSDスロット, Dynamixel RS485 I/F x4, Dynamixel TTL I/F x5, モニタLED x3, JTAGコネクタ, 電源スイッチ, 電源コネクタ, USB miniBコネクタ |
|寸法 |W74×D40mm (±0.5mm)|
|環境配慮 |RoHS準拠, 鉛フリー半田 |
|付属品 |USBケーブル&br;電源コネクタセット&br; ・ハウジング JST VHR-2N (1:+, 2:-)&br; ・コンタクト JST SVH-21T-P1.1 x2 |

**外観 [#ubb4a347]
| TOP | BOTTOM |
| #ref(E092_TOP.png,40%) | #ref(E092_BOTTOM.png,40%) |
#ref(E092_LAYOUT.pdf)

**回路図 [#wcfc29ee]
#ref(E092.pdf)
-D1, D5はノーマウント
-CN17(microSDスロット)はボード裏面に装備
-CN15にはZEAL-C01が装着済
-CN2, CN3はCN1と排他のため未装着
-基板に黄色い丸シールが貼られたものは、R7を120Ωから10kΩに換装済み(R7はRS485のターミネータだが、抵抗値が低いと若干通信の不具合を生じるため) [2010/9/15]

**I/Oボード各機能の詳細 [#m4f08258]

***CN1 [#vfa02328]
電源供給用コネクタで、電源スイッチ回路を介してCN4~CN12と5V DCDCコンバータに供給されます。SW1にてそれらデバイスへの電源供給をON/OFFできます。~
なお、CN1に何も接続せずUSBコネクタにPCを接続した場合、CN4~CN12へは電源が供給されません。

***CN4~CN8 [#d0c3107d]
TTL I/Fを搭載したDynamixelシリーズ用のコネクタです。CN1から供給される電源がスイッチ回路を介して接続されます。

***CN9~CN12 [#ld45ce7b]
RS485 I/Fを搭載したDynamixelシリーズ用のコネクタです。CN1から供給される電源がスイッチ回路を介して接続されます。

***CN13 [#i4635430]
USB Mini-Bコネクタです。USBバスパワーによりマイコンとその周辺回路への電源が供給できますが、CN4~CN12への電源供給は行えません。

***CN14 [#u3de666f]
DBGU コネクタ。

***CN15 [#bf0897cc]
ZEAL-C01が装着されます。

***CN16 [#me2d411a]
[[BTE067B TINY JTAG-ICE2>BTE067B]]をBTE066 JTAG ICE変換ケーブルを介して接続します。~
マイコンに予め搭載されたブートローダを使用せず、ユーザ自身により全ての制御プログラムを作成したり、ICE等によりデバッグを行う場合に使用します。

***CN17 [#ge06e918]
裏面に配置されたmicroSDスロットです。

***PB1 [#w1c49da8]
押下しながら電源をONにすると、ブートローダが必ず設定モードになります。~
アプリケーションプログラムにおいてはON/OFF状態を取得できます。

***DIP1 [#w57f2b45]
4ビットのDIPスイッチです。~
ブートローダでは使用されず、アプリケーションプログラムにて入力状態を取得できます。

***DIP2 [#f954a543]
2ビットのDIPスイッチで、ZEAL-C01のモードを設定します。なお、本製品においてはZEAL-C01のモードをマイコンから直接制御するため、本ディップスイッチは両ビット共にOFFにしておく必要があります。

***LED1 [#nf2bb473]
電源がONになると赤色に点灯します。

***LED2 [#b5d2a4f4]
ブートローダでのコンソール操作、及びアプリケーションプログラムにより橙色に点灯します。

***LED3 [#xe5dc591]
Bluetooth(ZEAL)の無線接続が完了すると緑色に点灯します。

**各機能の詳細 [#j58996d5]
***電源 [#me4efb0e]
電源の入力方法は3つあり、各々目的が異なります。
-CN1(外部電源装置)~
外部の電源装置からDC7.2~26Vの電源を接続し、本ボード上の機能全てと、CN4~CN12に接続されるDynamixel等への電源供給が行えます。SW1と連動してボード上及びCN4~CN12へ接続される電源がON/OFFできます。
-CN13(PCからのUSBバスパワー)~
電源が入ったPCとUSBケーブルで接続すると同時に本ボード上のマイコン・無線機・CN4~CN12に接続されたシリアルI/Fに電源が供給されます。SW1とは連動せず、電源供給が常時行われます。
-CN1とCN13両方~
電源電圧が高い方が優先される回路となっています。両社を接続したとしても大抵の場合はCN1からの電源が優先されることになります。~
なお、CN1からの電源供給が先に行われている状態でUSBケーブルを接続すると、場合によってはブートローダが機能しない事があります。これは既にユーザプログラムが書き込まれている場合はブートローダのコマンドモードを起動するよりもユーザプログラムの起動を優先するためです。

***USB [#jb39f86d]
PCのUSBバスパワーでボード内の電源供給を行う他に、PCとマイコンとの有線による唯一の通信手段を提供します。~
PCとUSBケーブルで接続し、予め書き込まれたブートローダのコマンドモードが起動すると、PCからは増設シリアルポートとして見えます。

***プッシュスイッチ(PB1) [#vbd825b5]
ブートローダのコマンドモードを使用する場合は、PB1を押しながら電源をONないしUSBケーブルを接続します。ブートローダのコマンドモードが起動するとピロッ♪とブザーが短く鳴り、LED2が一瞬点灯し正常にコマンドモードになった事を知らせます。
***ブートローダ [#g271227d]
USBないしBluetooth経由で本装置を操作するための専用プログラムが予め搭載されており、ユーザプログラムの転送やDynamixel用ハブ、Bluetoothの設定等をシリアルターミナル経由で行う事が出来ます。~
SIMPLE TERMで該当のポートを開き、ブートローダのコマンドモードに入ると以下のメッセージ及びプロンプトが表示されます。
 --< FDIII Ver1.8 by BestTechnology >--
 >
この状態で使用できるコマンドは'?'を入力すると表示されます。
 >?
 --< FDIII Ver1.8 by BestTechnology >--
  [w]:UPLOAD [g]:BOOT [i]:FLASH INFO [e]:ERASE [b]:BLUETOOTH
 >
-w (UPLOAD)~
FDIII-HC用にコンパイルされたユーザプログラムをフラッシュROMに転送するモードです。ダウンロードして実行出来るファイルは、GCC Developer LiteにてFDIII-HC向けにコンパイルされたバイナリファイルのみです。
-g (BOOT)~
フラッシュROMに転送されたユーザプログラムへ実行を遷移します。ユーザプログラムエリアが消去されていれば実行されません。
-i (FLASH INFO)~
ユーザプログラム用フラッシュROMの状態を表示します。
-e (ERASE)~
ブートローダ本体を除くユーザプログラムエリアに書き込まれたデータを完全消去します。消去したデータは復活させる事が出来ません。
-b (BLUETOOTH)~
Bluetoothの設定モードに遷移します。Bluetooth経由でブートローダのコンソールにアクセスしている場合は設定出来ません。USBケーブルでPCと接続された状態でのみBluetoothの設定変更が出来ます。

その他にDynamixelコンフィギュレータとして動作するパケットスルーモードを持っています。SIMPLE TERMではなくDynamixel ConfiguratorやUSS3 Configurator、自作のPC上のアプリケーションでポートを開きパケット通信を開始すると自動的にパケットスルーモードへ遷移します。詳細は[[こちら>#z3cf2ad1]]。

***Bluetooth [#d60dee0f]
Bluetoothによるコンソールやコントローラの無線化に対応しています。搭載されるBluetoothモジュールであるZEAL-C01の出荷時の設定は以下の通りです。~
-サポートプロファイル:SPPのみ
-DTE速度:460.8kbps (FDIII-HC搭載のマイコンとZEAL間のUSARTの速度)
-PINコード:0000 (文字列の'0000')
-認証:あり (V1.8以降からSIXAXISモード以外時に適用)
-暗号化:なし
-デバイス検出への応答:あり
-フロー制御:ハード的に無効
-機器名称:FDIIIHC-xxxxxxx (xxxはシリアル番号)
-パフォーマンスレベル:9 (可能な限り高速動作,省電力に貢献しない)
-接続モード:自動待ち受け

このうち、ユーザ自ら変更できるのは接続モードとPINコードで、ブートローダから選択及び変更ができます。ブートローダからBluetoothの設定を行う場合は、コマンドモードのプロンプトが'>'の状態で'b'を入力します。Bluetoothの設定モードに入ると、プロンプトは'BT'に変わります。この状態で使用できるコマンドは'?'を入力すると表示されます。

 --< FDIII Ver1.8 by BestTechnology >--
 >b
  CONNECTING TO BLUETOOTH MODULE .......
 BT>?
 -- BLUETOOTH CONFIGURATION --
   [o]:SLEEP [w]:MASTER [c]:SLAVE [s]:SIXAXIS [p] PIN [i]:info [ESC]:exit
 BT>

-i (INFO)~
ZEAL-C01のMACアドレスと、現在のBluetoothの接続モードを表示します。自動待ち受けの場合は'WAITING MODE'、自動接続の場合は接続先のMACアドレスが表示されます。
-ESC (EXIT)~
Bluetoothの設定モードを抜けます。
-o (SLEEP MODE)~
Bluetoothモジュールを待機状態設定します。他のBluetooth機器からの検索や接続が出来なくなります。
-w (MASTER MODE)~
自動待ち受けに設定します。他のBluetooth機器から本装置を検索させ、接続させる場合に選択します。~
-c (SLAVE MODE)~
自動接続に設定します。本装置から他のBluetooth機器を検索及び選択、もしくは直接MACアドレスを入力して自動的に接続させる場合に選択します。
 BT>c
  SEARCHING...
  0: INPUT MAC
  1: 001122334455 (RC100B)
  2: 5566778899AA (HOGEHOGE)
  3: BBCCDDEEFF00 ()
  OTHER: exit
  NO =
接続先がSPPに対応している必要があります。なお、接続先がPINコードを要求する場合はPINコードを合わせておく必要があります。~
また、[[FREEDOM Jr.III Wireless Controller>BTH052]]からFDIII-HCへ接続させる場合は本モードを使用し、PINコードは'0000'に設定してください。
-s (SIXAXIS MODE)~
PlayStation®3用のワイヤレスコントローラであるSIXAXISないしDUALSHOCK®3からの接続を待ち受けます。FDIII-HCのBluetoothモジュールが最新版のファームウェアを搭載している場合に限り使用できます。~
使用するSIXAXIS側に予めFDIII-HCに搭載されたBluetoothモジュールのデバイスアドレスを設定しておく必要があります。
-p (PINコード設定)~
PINコードを設定します。現在設定されているPINコードが表示されるので、最大16文字までの0から9の任意の数字を入力します。未設定は許容しません。

**開発環境 [#ae46f693]
***GCC Developer Lite [#m2c7408b]
GCC Developer Liteの詳細については[[こちら>GCC Developer Lite]]。~
フルインストールないしFreedom IIIで使用を選択する事で必要なコンポーネントが自動的にインストールされます。~
主要なコンポーネントを簡単に紹介します。
-''[[GCC Developer Lite>GCC Developer Lite#GCCDevL]]''
~ソースプログラムを編集するためのテキストエディタとその他のツールを起動するためのランチャ機能を有する。
-''[[FLASH WRITER>GCC Developer Lite#FW]]''
~ターゲットのフラッシュROM等へコンパイルされたプログラムをSAM-BAないしCOMポート経由で書き込む。~
USB等で提供されるCOMポートの動的な検出と、COMポートを使用する弊社ツールとの排他制御機能を持つ。
-''[[SIMPLE TERM>GCC Developer Lite#STERM]]''
~汎用シリアルターミナル。簡易的なTLENETクライアントとしても機能する。~
USB等で提供されるCOMポートの動的な検出と、COMポートを使用する弊社ツールとの排他制御機能を持つ。
-''ARMGCC''
~ARMコア向けC/C++言語向けのコンパイラ。出来る限り最新のパッチを適用しているため、時に互換性を失う。
-''デバイスドライバ''
~Atmel社提供のSAM-BA用USBドライバと、弊社提供のUSB CDCエミュレーションドライバ。
-''[[OpenOCD]]''
~TINY JTAG-ICE2の制御を行うデーモン。JTAGを使用する場合は全て本デーモンを仲介する。
-''ターゲットファイル''
~マイコンの内蔵ペリフェラルを定義したヘッダファイルやUARTを簡便に使うためのAPI、USBをシリアルポートとして使用するためのAPI、GDBにてデバッグする際に使用する初期化ファイル、シリーズ毎に異なるメモリマップを定義したリンカスクリプトファイル、スタートアップルーチンを含む。基本的にコンパイル済みライブラリとしてソースとリンクして使用する。

****ターゲットファイル [#l9fe78a0]
[[GCC Developer Lite>GCC Developer Lite]]ではFDIII-HC用の設定を2種類備えています。~
#ref(GDL_CompileOption_TargetList.png)
以下にFDIII-HCに対応した設定リストの一覧とその設定における機能を紹介します。
-''DYNAMIXEL library for FDIII-HC (Flash)''~
''DYNAMIXEL library for FDIII-HC (Bootloader)''
~Dynamixelとの通信を行う一番低位なAPI・サウンドAPI・microSD用fatファイルシステム(efsl)といった機能がライブラリとして提供される。~
~ビルドするとブートローダにてマイコンのフラッシュROMへ転送するための.bin(バイナリ)ファイルが作られる。~
ビルドが成功すると、STERM.exe(SIMPLE TERM)の起動を促される。~
-''FREEDOM III library for FDIII-HC (Flash)''~
''FREEDOM III library for FDIII-HC (Bootloader)''
~FREEDOMとして複数のアクチュエータを取りまとめるモーションAPI・非同期にDynamixelとの通信を行うインストラクションAPI・簡易タスク管理API・モーションデータ管理API等がライブラリとして提供される。~
~ビルドするとブートローダにてマイコンのフラッシュROMへ転送するための.bin(バイナリ)ファイルが作られる。~
ビルドが成功すると、STERM.exe(SIMPLE TERM)の起動を促される。

****SIMPLE TERMとブートローダ [#FDIII_BL]
ブートローダはJTAGやその他の特殊なI/Fを使用せずとも、USBないしBluetoothを使用してマイコンのプログラム書き換えや操作を行う事が出来ます。~
ブートローダを使用して動作するプログラムが構成できる設定リストは以下の通りで、これ以外の設定リストで構成されたプログラムをブートローダで転送しても動作しません。
-DYNAMIXEL library for FDIII-HC
-FREEDOM III library for FDIII-HC (Bootloader)

マイコンボードは出荷時にUSBをコンソールとして構成されたブートローダが書き込まれており、PCとマイコンボードをUSBケーブルで接続する事で使用可能となります。~
USBを仮想シリアルポートとして認識させるためのPC用デバイスドライバは、[[GCC Developer Lite>GCC Developer Lite]]をインストールした際にWindowsのシステムフォルダにコピーされます。USBケーブルでFDIII-HCとPCを接続するとデバイスドライバを要求されますが、自動検索させる事で自動的にインストールが行われます。~
インストール後、新しいCOMポートがWindowsのデバイスとして追加され、SIMPLE TERMから該当するCOMポートを選択(COMポート番号はPCの環境によって変わるが、デバイス名に「AT91 USB to Serial Converter」が表示されたポートを選択)しオープンするとブートローダの各種コマンドが使用可能となります。その他の設定は以下の通りです。~
 Baudrate:ここでは意味を持たないので何でも構わない
 Databits:8
 Stopbits:1
 Parity:Non
 Flow Control:Non
 Protocol:Xmodem
#ref(AT91SAM7_BL_COM.png,100%)

Bluetoothで接続する場合は、予めPCとFDIII-HCをペアリングしておく必要があります。PCのBluetoothに関してはWindowsのバージョンやアプリケーションに大きく依存する部分がありますので詳細は割愛しますが、PCとFDIII-HCをペアリングする事でPC上に仮想COMポートが増設されますので、そのポートをSIMPLE TERMで開く事でブートローダのコンソールへ同様にアクセスする事が可能です。

先の設定リストでソースプログラムをコンパイルし成功するとSTERM.exe(SIMPLE TERM)の起動を促されます。「OK」を押してSIMPLE TERMを起動すると、特殊な設定が追加されてSIMPLE TERMが起動します。
-既にSIMPLE TERMが実行中であれば2重に起動しない。
-コンパイル済み.binファイルの情報が渡る(ステータスバーにて確認可)。
-ユーザプログラムを転送する際の手順を記述したスクリプトファイルが使用できる様になる。

#ref(AT91SAM7_STERM_SCRIPT1.png,100%)

FDIII-HCがブートローダのコマンドモードであれば、「スクリプト実行[STERM FDIII]」をクリックするだけで転送するファイルを手動で選択する事無く転送にかかる処理が全て自動的に行われます。
#ref(AT91SAM7_STERM_SCRIPT2.png,100%)
本機能により、手動で間違ったファイルを選択して転送してしまったり、転送不可能な状態で転送をしてしまうといったミスを軽減する事ができます。

|CENTER:BGCOLOR(red):||c
|&nbsp; :idea:|既にユーザープログラムが書き込まれているFDIII-HCを、デバイスドライバがインストールされていないPCのUSBポートに接続してもCOMポートが活性化しない事があります。&br;ブートローダを確実にコマンドモードにさせCOMポートとして認識させるには、SW1をOFFにした状態でPB1を押しながらUSBケーブルを接続します。|

**FDIII-HC向けターゲットファイル及びライブラリ [#ude1312e]
[[GCC Developer Lite>GCC Developer Lite]]では1つのソースプログラムのみを対象とするため、機能別にソースを分割して編集やコンパイルするといった使い方は出来ません(完全にできないという訳でもありません)。だからと言って全ての機能を一つのソースに記述する事は、プログラムの見通しが悪くなりバグの温床になりかねません。~
そこで、複数のソースに分割する事無くある程度のソースプログラムサイズでコーディングするために、頻繁に使用されるであろう一部の機能が専用のライブラリとして提供されます。~
GCC Developer Liteを標準的な環境のPCへインストールすると、「C:\Program Files\BestTech\GCC Developer Lite\TARGET」フォルダに必要なファイルがコピーされます。必要に応じて本フォルダを参照できますし、ユーザがソースを修正しライブラリを再構築する事も可能です。~
~
FDIII-HCは複数のライブラリを組み合わせて使用するため、実体はかなり複雑になっています。
-''SAM7S用ライブラリ''~
AT91SAM7Sシリーズ共通の内蔵ペリフェラルを簡便に扱う為のライブラリ。シリアル通信に関する物が主体。
-''DYNAMIXEL用ライブラリ''~
SAM7S I/O時代から引き継がれているDynamixelとの通信を行うライブラリ。簡単な引数だけでDynamixelの通信プロトコルを自動生成したり、ブザーによるメロディ演奏機能を提供。
-''FREEDOM IIIライブラリ''~
Dynamixelを複数使用したアプリケーションを扱うライブラリ。Dynamixelのプロトコルだけでは解決しないモーションの管理・自動実行、各Dynamixelのステータスの読み込み、RC-100のボタンの取り込み等といった機能を提供。

**サンプルプログラム [#m24a02e6]
***Dynamixelライブラリを使用したサンプル [#af8fedcd]
純粋にDynamixelとパケット通信を行う事ができれば後は自前で何とか出来るという場合はDynamixelライブラリを使用します。ある程度レガシーレベルなコーディングを要するため、ハードウェアに精通していないと一部危険を伴う場合があります。

[[こちら>Dynamixel Library Sample Code]]にて公開中。

***FREEDOM IIIライブラリを使用したサンプル [#j998040f]
あまりパケット通信を意識せず複数軸を同期させて動かしたいといった場合は、FREEDOM IIIライブラリを使用する事を推奨します。なお、FREEDOM IIIライブラリは内部的にDynamixelライブラリを使用しているため、ユーザプログラムにおいてはDynamixelライブラリのAPIを直接使用する事はできません。必ずFREEDOM IIIライブラリのAPIのみで構成しなくてはなりません。

[[こちら>FREEDOM III Library Sample Code]]にて公開中。

***FREEDOM jr.IIIのサンプル [#y0206e70]
ヒューマノイド型を前提にしたサンプルプログラムです。

[[こちら>FREEDOM jr.III Sample Code]]にて公開中。


**その他 [#md0d0106]
***パケットスルーモード [#z3cf2ad1]
PCから直接DynamixelやUSS3へインストラクションパケットを送信して制御する場合は、[[Dynamixelコンフィギュレータ>BTE068]]ないし[[USS3コンフィギュレータ>BTE082]]を使用する事を推奨しています。これらのコンフィギュレータはPCのUSBポートを介してRS485ないしTTLのDynamixel用のシリアルI/Fへ変換する製品ですが、FDIII-HCも同様の目的で使用する事が可能です。~
本モードは、ブートローダがコマンドモードで起動している際にPCからインストラクションパケットを受信すると自動的に遷移するものです。本モードに遷移した後にブートローダのコマンドモードに戻るには、FDIII-HCを電源リセットするか、USB接続している場合はポートを閉じるか、PB1を押す必要があります。

PCとの接続形態はFDIII-HCのUSBないしBluetoothいずれかを選択できますが、接続形態によって使用できる機能に制限があります。

+USB接続~
PCとFDIII-HCをUSBケーブルで接続した場合は、従来のコンフィギュレータと使い方が全く同様となります。対象のパラメータの変更等はコンフィギュレータソフトウェアを介して該当のCOMポートをオープンすればあたかもコンフィギュレータとして振る舞います。ボーレートに関してもPCから設定したCOMポートのボーレートに合わせてI/Fのボーレートが追従します(Dynamixelのサポートするボーレートのみ)。
+Bluetooth接続~
PCとFDIII-HCをBluetoothで接続した場合は、PCとDynamixel間を完全に無線化しつつ、従来PCからUSBを介して制御していたプログラムをほぼ改造することなく置き換える事が可能です。Bluetooth経由で接続した場合の制限は、COMポートのボーレートを任意に設定してもI/F側のボーレートは常時1Mbpsに固定される点です。~
また、FDIII-HC上のZEALとマイコンは最大で460.8kbpsの速度でしか通信を行わないため、物理的に1Mbpsのスループットは得られません。そのため、ある程度の遅延やパケットのドロップが生じる可能性があります。~

|CENTER:BGCOLOR(red):||c
|&nbsp; :idea:|本機能はブートローダに予め備わっている機能ですので、ユーザプログラムが実行されている状態では機能しません。必ずブートローダがコマンドモードで起動する状態で使用する事としています。&br;一部のPCにおいてUSBを介したパケットスルーモードが正常に動作しない場合があります。コンフィギュレータ替わりに常用するといった場合は、ユーザプログラムとして[[through.c>http://www.besttechnology.co.jp/modules/knowledge/?Dynamixel%20Library%20Sample%20Code#ec558d0c]]を使用ください。|

« Prev[4]  Next »[5]