ページへ戻る

− Links

 印刷 

BTE100 DXHAT のバックアップソース(No.1) :: Besttechnology

knowledge:BTE100 DXHAT のバックアップソース(No.1)

  Next »[4]
TITLE:DXHATマニュアル
#norelated
#contents
[[ショップページへ>https://www.besttechnology.co.jp/modules/onlineshop/index.php?fct=photo&p=284]]
#ref(E179_3D.png)

**概要 [#i9b1c92f]
DXHATは[[Raspberry Pi>https://www.raspberrypi.org/products/raspberry-pi-4-model-b/]]用のHATで、装備した主な機能は以下の通りです。
-DC6.5~24Vの入力電源電圧範囲
-USB機器への電力供給も想定した大電流5V DCDCコンバータ(最大6A)
-発熱を抑える冷却ファン
-PCライクな電源スイッチ
-簡易バックアップ電源付RTC
-Dynamixelシリーズ向けRS-485/TTL I/F
-慣性測定ユニット(カスタム)

※本製品は半田付け作業を要求します。~
※Raspberry Piや電源装置が別途必要です。~
※慣性測定ユニット付の場合は12セット単位での見積及び受注とします。

**仕様 [#w1fc9eab]
***同梱内容 [#t8074694]
| 品名 | 数量 | 型番・その他 |h
|DXHAT | 1個|E179 |
|スペーサ・ネジ類 | 1式|スペーサー六角両メネジ M2.6 L8 x4&br;スペーサー 丸型中空 M2.6 L9 x4&br;スペーサー 丸型中空 M2.6 L8 x4&br;なべ小ねじ M2.6 L15 x4&br;低頭小ねじ M2.6 L5 x4|
|ターミナルブロック | 1個|TB111-2-2-U-1-1 |
|電源ボタンモジュール | 1個|E191 (300mmハーネス付) |

***基本仕様 [#k2975a33]
|BGCOLOR(#d0d8e0):CENTER:|LEFT:|LEFT:|c
|商品番号 |BTE100 |<|
|PCBリビジョン |E179 |<|
|動作温度範囲 |0~70℃ 結露なき事|<|
|寸法 |60x56.5x15mm&br;取り付け穴:58x49mm 4-φ3.0mm |<|
|重量 |25g |<|
|外部電源 |DC6.5~24V (絶対最大定格 DC-0.3V/+30V)|<|
|内部電源 |DC5V |外部電源からDCDCコンバータを介して生成&br;最大6A供給可|
|~|DC3.3V |Raspberry Piより供給 |
|RTC |[[DS3231M>https://www.maximintegrated.com/jp/products/analog/real-time-clocks/DS3231M.html]]&br;電気二重層コンデンサによる簡易電源バックアップ |<|
|冷却ファン |電源電圧|DC5V |
|~|最大送風量|2.2CFM|
|各I/F仕様 |RS-485|複信 半二重&br;最大通信速度 20Mbps&br;最大端末数 256台&br;ESD保護 ±15kV&br;絶対最大定格 -60~60V |
|~|TTL|複信 半二重&br;最大通信速度 12Mbps&br;最大端末数 32台&br;ESD保護 ±2kV&br;絶対最大定格 -0.5~6V |
|コネクタ等 |2x20ピン パススルーソケット x1 &br;2ピン5.08mmピッチランド x1&br;JST S4B-EH x4 &br;JST S3B-EH x4&br;JST B3B-ZR x1&br;JST B2B-ZR-SM4 x1&br;4ピン2.5mmピッチランド x4 |<|
|環境配慮 |RoHS準拠, 鉛フリー半田 |<|

***内部簡略ブロック [#z011c661]
#ref(E179_block.png,60%)

***外観・レイアウト [#x91f711e]
| top | bottom |h
| front |<|h
| 3D |<|h
| #ref(E179_top.png,20%) | #ref(E179_btm.png,20%) |
| #ref(E179_front.png,20%) |<|
| [[3D pdf>https://www.besttechnology.co.jp/download/3D/E179_3D.pdf]]&br;※ダウンロードした上でAcrobat Readerで閲覧の事 |<|

#ref(E179_Layout.pdf)

***回路図 [#w04e9c0f]
#ref(E179_SCH.pdf)
-未実装~
CN1,R1,U3,X1,C17,C18,R11,R12,D3
-代替品リスト(半導体逼迫による初回ロット限定を含む)~
R6:1kΩ~
C13:EEE-FT1V331GV‎~
C27:DCK-3R3E224U-E~
Q1:STL42P4LLF6‎~
Q2:NUD3124LT1G‎~
U8:LTC6994IS6-1

***各部詳細 [#r071b4b9]
#ref(E179_Layout.png,70%)

****CN1 [#s26ba183]
#ref(E179_CN1.png)
-φ1.4mm 5.08mmピッチランド
-DC6.5~24Vの外部電源を接続
| 端子番号 | 信号名 |h
| 1(N) |GND |
| 2(P) |VDD |
-ターミナルブロック装着可
#ref(E179_CN1_TB.png,50%)
-外部電源はFETを介した後に内部電源として5V DCDCコンバータ及び[[CN5~8>#fab3ea7c]]/[[CN9~12>#hf182032]](電流制限等の保護措置なし)へ供給
-[[CN2>#z8daeadb]]に接続されるプッシュスイッチの操作によりFETを制御し内部電源の供給をON/OFFする事が可能
-外部電源OFF時の待機電流は1.2uA

****CN2 [#z8daeadb]
#ref(E179_CN2.png)
-プッシュボタン信号接続用
| Pats Name | JST Parts Number |h
|基板用ヘッダー |[[B3B-ZR>https://www.jst-mfg.com/product/detail.php?series=287]] |
|ハウジング |[[ZHR-3>https://www.jst-mfg.com/product/detail.php?series=287]] |
|ターミナル |[[SZH-002x-P0.5>https://www.jst-mfg.com/product/detail.php?series=287]] |
|圧接コネクタ |[[03ZR-8M-P>https://www.jst-mfg.com/product/detail.php?series=290]] |
~
| 端子番号 | 信号名 |h
| 1 |GND |
| 2 |PB |
| 3 | - |

-[[CN1>#s26ba183]]に外部電源が供給された状態でCN2-1とCN2-2間が短絡されるとHAT内の電源スイッチ回路がプッシュボタンが押下されたと認識
--CN1に外部電源が供給された直後の内部電源はOFF
--CN1に外部電源が供給されており、かつ内部電源がOFFの時にプッシュボタンが数十ms程度の間押下されると内部電源がON
--CN1に外部電源が供給されており、かつ内部電源がONの時にプッシュボタンが押下されるとその間INT信号(LOW)をRaspberry PiのGPIO17へ出力
--CN1に外部電源が供給されており、かつ内部電源がONの時にRaspberry PiのGPIO4からKILL信号(LOW)を受け取ると内部電源がOFF
--CN1に電源が供給されており、かつ内部電源がONの時にプッシュボタンを約4秒以上押下し続けると内部電源が強制的にOFF

****CN3 [#gae261cb]
#ref(E179_CN2,png,80%)
-2x20ピン パススルーソケット
-Raspberry Piのヘッダと接続
-以下の表のうち端子名が明記されている端子はHAT内で使用
| No. | 端子名称 | I/O | No. | 端子名称 | I/O |h
| 1 | 3V3 | I |  2 | 5V | O |
| 3 | GPIO2(SDA1) | I/O | 4 | 5V | O |
| 5 | GPIO3(SCL1) | I/O | 6 | GND | O |
| 7 | GPIO4(KILL) | O | 8 | GPIO14(TXD0/1) | I |
| 9 | GND | O | 10 | GPIO15(RXD0/1) | O |
| 11 | GPIO17(INT) | I | 12 | | - |
| 13 | | - | 14 | GND | O |
| 15 | | - | 16 | | - |
| 17 | 3V3 | I | 18 | | - |
| 19 | | - | 20 | GND | O |
| 21 | GPIO9(RXD4) | O | 22 | | - |
| 23 | | - | 24 | GPIO8(TXD4) | I |
| 25 | GND | O | 26 | | - |
| 27 | GPIO0(TXD2) | I | 28 | GPIO1(RXD2) | O |
| 29 | | I/O | 30 | GND | O |
| 31 | | - | 32 | GPIO12 | I/O |
| 33 | GPIO13 | I/O | 34 | GND | O |
| 35 | GPIO19(FAN) | I/O | 36 | GPIO16 | I/O |
| 37 | GPIO26 | I/O | 38 | GPIO20 | I/O |
| 39 | GND | O | 40 | | - |

****CN4 [#ye9bea64]
#ref(E179_CN4.png)
-冷却ファン駆動用電源(配線済)
| Pats Name | JST Parts Number |h
|基板用ヘッダー |[[B2B-ZR-SM4>https://www.jst-mfg.com/product/detail.php?series=287]] |
|ハウジング |[[ZHR-2>https://www.jst-mfg.com/product/detail.php?series=287]] |
|ターミナル |[[SZH-002x-P0.5>https://www.jst-mfg.com/product/detail.php?series=287]] |
|圧接コネクタ |[[02ZR-8M-P>https://www.jst-mfg.com/product/detail.php?series=290]] |
~
| 端子番号 | 信号名 |h
| 1 |5V |
| 2 |オープンドレイン出力 |
-CN4-2端子はFETを介してGNDに接続されており、Raspberry PiのGPIO19によってFETを制御し冷却ファンをON/OFFする事が可能。

****CN5~8 [#fab3ea7c]
#ref(E179_CN5-8,png)
-TTL I/F
#ref(DXLSHARE/TTL_IF.png)
-SIGNAL端子は220kΩの抵抗を介して内部の5V電源へウィークプルアップ
-シグナルGNDと通信用信号ラインが接続
| Pats Name | JST Parts Number |h
|基板用ヘッダー |[[B3B-EH>https://www.jst-mfg.com/product/detail.php?series=58]] |
|ハウジング |[[EHR-3>https://www.jst-mfg.com/product/detail.php?series=58]] |
|ターミナル |[[SEH-00x>https://www.jst-mfg.com/product/detail.php?series=58]] |
#ref(DXLSHARE/jst_B3B-EH.png)
| 端子番号 | 信号名 |h
| 1 |GND |
| 2 |VDD |
| 3 |TTL Signal |
-[[JP1/JP2>#ae3a0082]]にてUARTの選択が必須

****CN9~12 [#hf182032]
-RS-458 I/F
#ref(DXLSHARE/RS485_IF.png)
-D+端子とD-端子間には150Ωのターミネータ(R26)を装備
-D+端子は5V、D-端子はGNDへ680Ωのバイアス抵抗(R23,R29)を介して接続
-シグナルGNDと通信用信号ラインが接続
| Pats Name | JST Parts Number |h
|基板用ヘッダー |[[B4B-EH>https://www.jst-mfg.com/product/detail.php?series=58]] |
|ハウジング |[[EHR-4>https://www.jst-mfg.com/product/detail.php?series=58]] |
|ターミナル |[[SEH-00x>https://www.jst-mfg.com/product/detail.php?series=58]] |
#ref(DXLSHARE/jst_B4B-EH.png)
-
| 端子番号 | 信号名 |h
| 1 |GND |
| 2 |VDD |
| 3 |RS-485 D+ |
| 4 |RS-485 D- |
-[[JP1/JP2>#ae3a0082]]にてUARTの選択が必須

****J1 [#o07b3b11]
#ref(E179_J1-4,png)
-φ0.9mm 2.54mmピッチ4ピンランド
-[[J2>#i00c07ed]]-1(COM)およびI2Cバスの電源電圧を5Vないし3.3Vから選択
-5Vの場合はJ1-1とJ1-2、3.3Vの場合はJ1-2とJ1-3を短絡
-いずれの端子において電流制限等の保護措置は講じられていない
| 端子番号 | 信号名 |h
| 1 |5V |
| 2 |COM |
| 3 |3V3 |
| 4 |GND |

****J2 [#i00c07ed]
-φ0.9mm 2.54mmピッチ4ピンランド
-I2Cバスリピータを介してGPIO3(SCL1)がR_SCL、GPIO2(SDA1)がR_SCLとして接続
-I2CバスリピータとCOMの電源は[[J1>#o07b3b11]]により5Vないし3.3Vから選択
-R_SDAとR_SCLは4.7kΩの抵抗(R14/R15)でCOMに接続
-いずれの端子において電流制限等の保護措置は講じられていない
| 端子番号 | 信号名 |h
| 1 |COM |
| 2 |GND |
| 3 |R_SDA |
| 4 |R_SCL |

****J3 [#c4b871ae]
-φ0.9mm 2.54mmピッチ4ピンランド
-3.3V電源と各GPIOが接続
-いずれの端子において電流制限等の保護措置は講じられていない
| 端子番号 | 信号名 |h
| 1 |3V3 |
| 2 |GND |
| 3 |GPIO12(PWM0/SD4/DPI_D8/SPI5_CE0_N/TXD5/SDA5) |
| 4 |GPIO13(PWM1/SD5/DPI_D9/SPI5_MISO/RXD5/SCL5) |

****J4 [#z867b572]
-φ0.9mm 2.54mmピッチ4ピンランド
-各GPIOが接続
-GPIO19は冷却ファンの制御用に使用済み
-いずれの端子において電流制限等の保護措置は講じられていない
| 端子番号 | 信号名 |h
| 1 |GPIO19(PCM_FS/SD11/DPI_D15/SPI6_MISO/SPI1_MISO/PWM1) |
| 2 |GPIO16(FL0/SD8/DPI_D12/CTS0/SPI1_CE2_N/CTS1) |
| 3 |GPIO26(SD0_DAT2/TE0/DPI_D22/SD1_DAT2/ARM_TDI/SPIO5_CE1_N) |
| 4 |GPIO20(PCM_DIN/SD12/DPI_D16/SPI6_MOSI/SPI1_MOSI/GPCLK0) |

****JP1, JP2 [#ae3a0082]
#ref(E179_JP1_J2,png)
-4つのパッドで構成され、半田ジャンパ(半田を盛ってパッド間を短絡)もしくはジャンパー(0Ω抵抗)によって信号を選択
-出荷時はいずれも開放状態
-Dynamixel用I/Fに使用するRaspberry PiのUARTを半田ジャンパで選択
--UART0/UART1使用時のジャンパ(Raspberry Pi 3/Zeroは本設定のみに対応)
#ref(E179_SEL_UART0,png)
--UART2使用時のジャンパ
#ref(E179_SEL_UART2,png)
--UART4使用時のジャンパ
#ref(E179_SEL_UART4,png)
-半田ジャンパになっているのは苦肉の策~
4つあるパッド全てを短絡させない事~
半田作業の際には近傍にある冷却ファンに半田ごてを接触させない事

**使用方法 [#c66a2597]
Raspberry Piに適用するOSや環境の構築状況によって設定方法や挙動が変わります。ここではそれらの詳説を省略しますので、[[公式サイト>https://www.raspberrypi.org/documentation/computers/raspberry-pi.html]]等などから情報を補完して下さい。

HATの各機能は主に[[config.txt>https://www.raspberrypi.org/documentation/computers/config_txt.html]]に必要な情報を追記する事で活性化されます。なおconfig.txtから別のファイルをincludeしている場合もありますので、それらも含めて全ての設定ファイルを精査する必要があります。

***Raspberry Piへの装着 [#kdb0e99b]
[[CN3>#gae261cb]]と四隅の取り付け穴の位置をRaspberry Piのピンヘッダと取り付け穴に一致させ装着します。
#ref(E179_RPi4_asm,50%)
HATとRaspberry Piの電子部品と基板が接触しないよう四隅の取り付け穴に同じ高さのスペーサを設置し、相互の基板を平行に保持します。
#ref(E179_RPi4_asm_gap,60%)

なお実測でRapspberry Pi 4の場合は8mm、Raspberry Pi 3の場合は9mm以上のスペーサが必要ですが、10mm以下でないとピンヘッダが嵌合しません。

***電源[#wb807a10]
[[CN1>#s26ba183]]にコネクタやケーブルを装備し外部電源を供給しますが、CN1から外部電源を供給してもRaspberry Piへの給電は開始されず、[[CN2>#z8daeadb]]に装着するプッシュモーメンタリなスイッチで電源供給の操作を行う必要があります。
#ref(E179_CN2_PB.png)

Raspberry Pi上でOSが動作している間に電源の供給が突然断たれる事は大抵の場合において想定されておらず、一般的にはpoweroffコマンドを実行し、シャットダウン処理が完全に完了した頃合いを見計らって電源の供給を断つといった操作が強いられます。もしOSが動作している時に突如電源の供給が断たれてしまうと、タイミングによってはファイルシステムが破損し、次回以降OSが正常に起動しなくなります。~
HATには電源の操作の煩雑さを簡素化する機能が備わっており、CN2に装備したプッシュスイッチの操作によって、電源ON・OSへのシャットダウン励起/OSの終了と同時に電源OFF・強制電源OFFといった処理が安全に行えます。
>config.txtに追記する情報
#html{{
<pre class="brush: ini;">
[all]
dtoverlay=gpio-shutdown,gpio_pin=17
dtoverlay=gpio-poweroff,gpiopin=4,active_low=1
</pre>
}}

なおubuntuをGUIで起動している場合は、プッシュスイッチを押下するとログアウトのプロンプトが表示され、タイムアウトするかダイアログのpower offを選択するまでシャットダウンが行われません。プッシュスイッチ操作によってシンプルにシャットダウン処理を行わせるには、GNOMEの設定を変更する必要があります。なおログインしていない状態ではこの設定は効果がありません。
#html{{
<pre class="brush: bash;">
gsettings set org.gnome.SessionManager logout-prompt false</pre>
}}
ちなみに付属の電源ボタンモジュールは3線で構成されていますが、電源のON/OFFだけであればPBとGND信号の2本あれば事足ります。残りの1本は1kΩの抵抗を介してプッシュスイッチに内蔵されているLEDのアノードに接続されていますので、CN2-3に5Vや3.3V程度の電圧やGPIOの信号を接続するとLEDを点灯させる事ができます。

|CENTER:BGCOLOR(red): :idea:|外部電源の逆極性への耐性はないため、絶対に極性を間違えてはならない。&br;HATを装着した後は、Raspberry Pi本体に備わっているMicro USBないしUSB Type Cコネクタから電源を供給してはならない。|

***冷却ファン [#be627833]
HATに装備された冷却ファンはRaspberry Piへ外気を送り込む事で冷却を促し、発熱によってSoCのクロックが下がりパフォーマンスが低下する事を低減させるのが目的です。
#ref(E179_Fan.png)
合わせてRaspberry Pi上の主要チップにヒートシンクを装着すれば、冷却効果を更に高める事が期待できます。~
エアフローはHAT上面からファンで吸気し、HATとRaspberry Piの間隙から排気を想定しています。もしケースなどに封入する際は、吸気口と排気口を適宜設けたり、HAT上の冷却ファンを取り外してケース側でエアフローを設計して下さい。
#ref(E179_Airflow.png)

冷却ファンのON/OFFはRaspberry PiのGPIO19を用いて行われ、内部温度と設定温度に応じてON/OFFを自動的に制御する事ができます。
>config.txtに追記する情報
#html{{
<pre class="brush: ini;">
[all]
dtoverlay=gpio-fan,gpiopin=19,temp=50000
</pre>
}}
~temp=50000は50℃で冷却ファンをONする意味で、摂氏度の1000倍の値を指定~
設定温度を10℃下回るとファンはOFFする

なおRaspberry Piの発熱はOSや実行しているアプリケーションの負荷等に依存します。またRaspberry Piの性能限界までオーバークロックすると冷却しきれない場合があります。~

|CENTER:BGCOLOR(red): :idea:|冷却ファンへの接触防止措置を行っていないため、巻き込まれ等に注意。|

***RTC [#dc42653f]
Raspberry Piの時刻はNTPサーバなどを利用してOSの起動時に更新するのが一般的なようです。しかし時刻を取得できなければ、OSは不正確な時刻を元に動作する事になります。~
HATはI2C接続のRTC(I2Cスレーブアドレス0x68)を装備しており、外部電源が断たれた場合でも1日程度は電気二重層コンデンサがRTCの電源を供給します。電気二重層コンデンサを満充電させるには、少なくとも半日程度は電源ON状態を維持して下さい。

>config.txtに追記する情報
#html{{
<pre class="brush: ini;">
[all]
dtparam=i2c_arm=on
dtoverlay=i2c-rtc,ds3231
</pre>
}}

hwclockコマンドを使う事でRTCが機能しているかの確認ができます。

#html{{
<pre class="brush: bash;">
#print hardware clock
hwclock -r
#set the hardware clock from the current system time
hwclock -w
#set the system time from the hardware clock
hwclock -s</pre>
}}

なおubuntuであればNTCとRTCそしてシステムクロックがうまく連動しますが、他のOSの場合は初期状態においてRTCの扱いが異なる場合があります。思ったような挙動をしない場合は、[[こちらの情報>https://www.raspberrypi.org/forums/viewtopic.php?t=209700]]を参考にして下さい。

***Dynamixel I/F [#qc1c1f01]
Raspberry PiのUSBポートに[[DXHUB>BTE068C]]等を接続してDynamixel用のI/Fを増設する事も可能ですが、HATにはDynamixelと通信するためのRS-485とTTLの2種類のI/F([[CN5~8>#fab3ea7c]]/[[CN9~12>#hf182032]])が装備されており、[[CN1>#s26ba183]]に供給される電源はDynamiel用の電源として供給されます。~
Raspberry Piが持っているUARTを使用する事で、USB接続したシリアルI/Fの一般的な1msのレイテンシを超越した運用ができます。基本的には[[TTL2DXIF]]と同等の回路が装備されていますので、[[注意事項はそれと同様>TTL2DXIF#d1e7ec1e]]となります。

#ref(E179_DXASM.png,60%)

使用するUARTは[[JP1, JP2>#ae3a0082]]を半田ジャンパする事で選択しますが、Raspberry PiのGPIOは複数の機能を兼用しているため、使用環境に応じて適宜設定します。またUARTのベースクロックを64MHzに設定する事で、最大4Mbpsの通信速度に対応できます。
>config.txtに追記する情報
#html{{
<pre class="brush: ini;">
[pi3]
init_uart_clock=64000000
dtoverlay=uart0=on
dtoverlay=pi3-miniuart-bt

[pi4]
init_uart_clock=64000000
#UART1を活性化
dtoverlay=uart1,txd1_pin=14,rxd1_pin=15
#UART2を活性化
dtoverlay=uart2,txd2_pin=0,rxd2_pin=1
#UART4を活性化
dtoverlay=uart4,txd4_pin=8,rxd4_pin=9
</pre>
}}
~使用するポートのみを活性化する事を推奨。Linux上でのデバイス名は概ねttyAMAのプレフィクスで始まる。~
またRaspberry Pi 3/Zeroの場合はcmdline.txtに記述されている「console=serial0,115200」を削除する事。

対応するデバイスは以下の通りです。
| Device Name |h
|RS-485ないしTTL I/Fを装備したDynamixel DX・AX・RX・EX・MX・X・PRO・P・USS3・DXMIO |

なおMolex社のコネクタが装備されたデバイスを接続する場合は、[[Robot Cable-X3P 180mm (Convertible)>https://www.besttechnology.co.jp/modules/onlineshop/index.php?fct=photo&p=189]]ないし[[Robot Cable-X4P 180mm (Convertible)>https://www.besttechnology.co.jp/modules/onlineshop/index.php?fct=photo&p=190]]を使用して下さい。

|CENTER:BGCOLOR(red): :idea:|外部電源の電流容量が小さいとDynamixelに過度な負荷が生じた際にRaspberry Piに供給される電源に影響が及ぶ。&br;Dynamixelから発生した逆起電力によって電源電圧が上昇た場合、HAT上の電子部品の絶対最大定格電圧を超えて破損する可能性がある。&br;接続するDynamixelの総容量は、外部電源のラインに挿入されたFETとFR-4のガラスエポキシ基板の許容電流容量を超えない事。&br;様々な事象の想定範囲を広げ、不慮の故障に至らないようシステムを設計する事。|

***Dynamixel Library [#x91df052]
Linux上で動作するDynamixelを制御するプログラムを作る際は、別途用意したライブラリを用いる事でシリアル通信やプロトコルを意識せずにコーディングができます。~
APIに対して対象デバイスのID・番地・値といった引数を与えるだけでコントロールテーブルの読み書きが実現でき、マルチスレッド等で複数のデバイスに対して個別にアクセスする様なアプリケーションも容易に構成できます。

Dynaimxelには2種類のプロトコルが存在しますが相互非互換であるため、プロトコルに応じて2種類のライブラリを用意しています。
-[[Dynamixel Protocol V1用ライブラリ>Dynamixel Library]]
-[[Dynamixel Protocol V2用ライブラリ>Dynamixel Protocol 2 Library]]

Dynamixel Protocol V2用ライブラリを使用する際の手順を少しだけ紹介しておきます。全てターミナル上での操作となります。
+必要に応じてビルドツールやアーカイバを予めインストールしておく
#html{{
<pre class="brush: bash;">
sudo apt install build-essential unzip</pre>
}}
+DX2LIBライブラリのダウンロードと展開~
ここでは便宜上ホームディレクトリをカレントとした
#html{{
<pre class="brush: bash;">
cd ~
wget https://www.besttechnology.co.jp/download/DX2LIB_V2.7.zip
unzip DX2LIB_V2.7.zip</pre>
}}
+ライブラリの再構築
#html{{
<pre class="brush: bash;">
cd ~/DX2LIB_v2.7/DX2LIB/
bash ./build_dx2lib.sh</pre>
}}

以上でライブラリファイルが自身の環境用に再構築され、同時に各サンプルソースディレクトに実行に必要なファイルがコピーされます。

Pythonで記述されたサンプルソースであれば多少の改変で動かせますので試してみます。
#html{{
<pre class="brush: bash;">
cd ~/DX2LIB_v2.7/SampleCode/Python/
nano smpl1.py</pre>
}}
通信ポートとボーレートは自身の環境に依存するため、適宜修正して保存します。例としてuartが「/dev/ttyAMA1」、ボーレートが「2Mbps」、IDが「1」とした場合は、ソースコード中の以下の変数に代入している部分を修正して保存します。
#html{{
<pre class="brush: python;">
COMPort = b'/dev/ttyAMA1'
Baudrate = 2000000
TargetID = 1</pre>
}}
最後にsmpl1.pyをPythonで読み込ませて実行させます。
#html{{
<pre class="brush: bash;">
python3 smpl1.py</pre>
}}
もしpermission deniedと言われた場合は、adduserを使ってdialoutグループに自身のユーザーを登録してから実行し直しましょう。
#html{{
<pre class="brush: bash;">
sudo adduser $USER dialout</pre>
}}
Dynamixelとの通信に成功すると、DynamixelのLEDが1秒間点灯します。他のサンプルソースもほぼ同様の変更を加えることで利用できます。

なお「~/DX2LIB_v2.7/SampleCode/Linux/config.c」はID・ボーレート・動作モードの変更、テスト運転用のサンプルソースになりますので、Dynamixelの諸設定変更の際は利用してみてはいかがでしょうか。~
またRaspberry Piの動作条件によってはAPIがタイムアウトエラーを返す場合があります。その際は[[DX2_SetTimeOutOffset>Dynamixel Protocol 2 Library#h4a1b54e]] APIを使ってタイムアウトエラーが発生しない程度の時間を設定すると良いでしょう。

***I2C [#hb3ce553]
I2Cバスには[[RTC>#dc42653f]]が既に接続されていますが、I2C接続のデバイスをさらに追加できるようにバスリピータを介して[[J2>#i00c07ed]]にI2Cバスが接続されています。

I2Cバスに接続する外部機器の電圧に応じて、[[J1>#o07b3b11]]のCOMに供給する電源を5Vか3.3Vから選択します。同時にI2Cバスの信号ラインは4.7kΩの抵抗を介して選択したCOMの電圧にプルアップされます。
-5Vを選択~
5V0とCOM間を短絡
#ref(E179_J1_5V.png)
-3.3Vを選択~
3V3とCOM間を短絡
#ref(E179_J1_3V3.png)

なおJ2を使用しない場合は、COMを3V3に接続しておく事を推奨します。

***GPIO [#k2b339db]
[[J3>#c4b871ae]]/[[J4>#z867b572]]に接続された一部のGPIO端子だけがHATに配線されています。スペーサの長さ調整が必要ですが、[[エレベーテッド ソケットストリップ>https://www.samtec.com/partnumber/esq-120-14-t-d]]等を挿入する事でHATの表面からRaspberry PiのGPIOを全て引き出す事が可能です。
#ref(E179_SocketStrip.png,60%)

**注意事項 [#o2f97e11]
|CENTER:BGCOLOR(red): :idea:|記載された事項以外にも、経験を踏まえた危険回避方策を講じる事。&br;安全に配慮しない場合は人命や財産を失う恐れがある。&br;また従わない場合は保証対象外となる。|
-初回ロットにおいて回路図に記載されている部品とは一部異なる。
-保存や移動の際は外部電源を全て取り外す事。
-移動する装置を構成した際にはケーブル類を引き摺るような運用をしない事。
-Raspberry Pi ZeroのUARTの最大通信速度は実測で1Mpbs程度である。
-Raspberry Pi本体やLinuxに関しては無償サポート対象外である。
-本製品にかかるいかなる損害が生じても、本製品の単価を超える保障は行わない。

  Next »[4]