« 手持ちのBluetoothアダプターをSBDBTに挿してみた | トップページ | Xcontroller 0.6.5 公開 »

手持ちのBTモジュールでロボゼロを動かしてみた(7):SBDBT編(SIXAXIS)

SBDBTを使って、PS3のBluetooth無線コントローラー(SIXAXIS:シックスアクシス/DUALSHOCK3)によるロボゼロのコントロールを可能にしたので紹介していきたいと思います。

●SBDBTについて

SBDBT」はランニングエレクトロニクスさんから出ているUSBコネクタがの付いたPICマイコン基板です。Bluetoothアダプタを装着すれば、簡単にBluetoothモジュールになってしまうという代物です。もっと詳しく知りたい方は、先日書いたブログ(Bluetooth通信モジュールとして使える「SBDBT」を買いました)、もしくは、ランニングエレクトロニクスさんのホームページをご覧下さいpaper

Sbdbt_2

Sbdbtbtdongle

●ファームについて

ロボゼロをSIXAXISでコントロールするために、SBDBTのランニングエレクトロニクスさんにお話を持ちかけたところ、ロボゼロの無線通信の拡張低速シリアル通信のRCB-3に対応したSIXAXIS用のファームが作れましたhappy01

今回作ったSIXAXIS ロボ用ファームとは、分離して別に、SIXAXIS 汎用ファームも公開に向けて準備中だそうです。

※追記:汎用のファームはまだなんですが、問い合わせが多いとのことで、現在、ロボ用のファームがβ版として公開されていますhappy01paper
SBDBTのロボゼロ無線コントロール対応ファームがβ公開!

SIXAXIS ロボ用ファームは、ロボゼロの無線接続ポートに対応する拡張低速シリアル通信(RCB-3:ロボゼロの無線接続端子の拡張低速シリアル(RCB3)信号について)に準拠する信号に変換し、2400bpsでSBDBTの7番品のTXから送信されるようになっています。

そして、global.hで、

  • 送信受信信号極性の反転
  • 送信タイミング
  • 連続送信時 ニュートラル位置のデータの抑制
  • 電文の周期に制限がある場合
  • ニュートラル位置のデータのみ追加で送信するパケット数

といった設定が可能になっています。

●SIXAXIS ロボ用ファームを書込む

SBDBTは、購入時SPPサーバーのファームが書込まれているため、ファームを書き換える必要があります。

なお、書換えには

  • PICKit3:3900円(ファーム書込み装置)

が必要になります。

  1. PICのコンパイラー(無料)をインストール
    MPLAB Xを使って、マックでも書換え可能です。
    1. MPLAB IDE (Win版のみ)
    2. MPLAB X IDE (Win&Mac版)
  2. ファームのダウンロード
    1. ランニングエレクトロニクスさんのサポートページから、「PS3コントローラー通信ファームウェア」をダウンロード
  3. MPLABで開く
  4. ダウンロードしたファームの中にある「sbxbt_ps3」をダブルクリックしてMPLABで開く
  5. global.hの中にある設定を書き換える
    • 私は以下のように設定してます(画像はクリックすると大きくなります)。

      Parallels_desktopscreensnapz006

    • UART1
      BAUDRATE1 2400
      ※拡張低速シリアル通信の通信速度は2400bpsです。
    • UART1ハードウェアフロー制御 (0:なし 1:あり)
      UART1_HW_FLOW 0
      ※6番ピンのRTSと9番ピンのCTSを使わない場合、ショートさせるか、フロー制御をなしにする。
    • 送信信号極性 0:通常 1:反転
      UART1_TX_POLARITY 1
      ※RCB-3は理論ONとOFFの値が反転した状態になります。もし反転の回路を作ってないならば、この値を1にする必要があります。
    • シリアルの場合の送信タイミング
      0:連続送信 1:前回のデータと差があったときのみ
      SEND_ON_DIFFERENT_DATA
      0
    • 送信方法パラメータ(RCB-3プロトコルの場合のみ関係あり)
      連続送信時 ニュートラル位置のデータは
      0:連続送信  1:連続送信を抑制する
      NEUTRAL_DATA_SUPPRESS 1
    • 電文の周期に制限がある場合
      0:なし 1以上:1電文あたりの最低時間(ms)
    • UART1_MINIMUM_INTERVAL 0
      ニュートラル位置のデータのみ追加で送信するパケット数
      0:追加なし 1以上:追加パケット数
      NEUTRAL_ADDITIONAL_PACKETS 0
  6. 「PICkit3」にSBDBTを付けて、コンピュータに繋げる。
    Pickit3
    ※電源を供給させる必要があります。
    MPLABの場合
    • Programmer>Settings>Power
      チェックを入れる
      Parallels_desktopscreensnapz015
    • Programmer>Reconnect
      上手く接続できれば、Connectedと表示されます
      Parallels_desktopscreensnapz018
    MPLAB Xの場合
    • プロジェクトで右クリック、一番下のPropertiesを選択
      Parallels_desktopscreensnapz025
    • PICKit3を選択
      Parallels_desktopscreensnapz023
    • Powerを選択
      Parallels_desktopscreensnapz022
    • 電圧をかける
      Parallels_desktopscreensnapz024
    • 「Apply」ボタンをクリックする
  7. 「Build All」で、コンパイルする。
    Parallels_desktopscreensnapz017 or Parallels_desktopscreensnapz020
  8. 「Program」で、ファームを書込む。
    Parallels_desktopscreensnapz016 or Parallels_desktopscreensnapz021

●Bluetoothアダプター

動作確認済みのアダプタはSBDBTのマニュアルに書いてあります。Classは1でも2でもどちらでも大丈夫だと思います。Versionは2,3,4で動作確認されているので、現在売っているものならほぼ大丈夫のように思います(※だからといって動作の保証には責任は負いかねますのでご了承下さい)。

なお、Ver.4はVer.3の上位モデルという訳ではないようで、もし、転送速度を求めるならVer.3を、省電力を求めるならばVer.4.0を選ぶとよいかと思います。

ロボゼロで使う場合は、拡張低速シリアル通信(2400bps)なので速度より、バッテリーを持たせたいので、ver4の方がいいのかもしれませんね。

●PS3ワイヤレスコントローラ

ご存知、SIXAXIS(シックスアクシス)/DUALSHOCK3はPS3用のBluetooth無線のコントローラです。色によって少しお値段が異なります。私はロボゼロ色の「」買いましたhappy01paper

●基板

SIXAXIS for ROBOでは、信号の反転処理(する・しない)を設定できるようになっています。反転処理されていれば、電圧を変える回路だけを作ればよいことになります。

反転も必要だとチップじゃないと場所取りすぎるんですが、電圧だけならディップでも大丈夫。秋月の3端子レギュレータTA48M033F  (100円)を使って作りました。これはコンデンサーも入ったセットになっているので便利ですよねhappy01それとSBDBTを挿す為のシングルピンソケット(低メス)を使って、下の図の様に作りました。

繋げ方は、各自お好みでいいですが、参考までに基板の表と裏の写真を載っけておきました。クリックすると拡大してみやすくなります。

SbdbtvoldPhoto

Sbdbt_3

Sbdbt 完成!

以下、書き出すときりがないんですが、回路を作る為に必要なもの書き上げてみました。

●装着

背面フレームカバーには4カ所にネジ穴が空いています。この穴を使ってM2X5のネジとナットで固定します。狭い空間に取り付けることになるので、できる限り低くする必要があります。
20120913233051 20120914004036

20120914004219

Setsbdbt

●PS3コントローラにBTアダプタのアドレスを登録

SIXAXIS/DUALSHOCK3などPS3のコントローラをPS3以外で使う為に、少々面倒な設定をあらかじめ行っておく必要があります。

  • ※追記:SBDBT5V版の場合、パソコンを使わなくても、SBDBT5Vのみでアドレス登録が可能になりました(ps3用ファームver121127)ので、アドレスの登録は、こちらのページの手順を参考にして下さい。

通信相手の情報をコントローラに書込むような処理になります。通信相手とはSBDBTに挿すBluetoothアダプターになります。この設定はPCのMotionJoyというアプリを使って行います。

  1. MotionJoyをダウンロード&インストール。
    • Windowsアプリです。マックを使っている方はParallels Desktop for Macなどの仮想マシンで行えます。
    • MotionJoyのインストール方法などは、いろいろなサイトで紹介されていますので、ネットで検索し、そちらを参考に行ってください。
    • 言語を日本語に変更しておくとよいでしょう。
  2. MotionJoyを起動。
  3. SBDBTで使うBluetoothアダプタをパソコンに挿す。
    ※マック+Parallels Desktop for Macでも認識させられますが、無線マウス&キーボードを使っているとBluetoothアダプタを挿した瞬間、切断されてマウス操作できなくなってしまうので、USBの優先の設定をParallels側に設定してからBluetoothアダプタを挿す必要があります。一旦切断しますが、数秒で復帰します。
  4. 登録させるPS3コントローラをUSBケーブルでPCに繋ぐ
    20121007_180045
  5. 「ドライバーマネージャ」を選択
    Screensnapz001
  6. BTアダプターとPS3コントローラに相当する2つにチェックを入れて「Load driver」をクリック。
    Screensnapz002
  7. (上の処理が成功したら)「Bleutoothペア」を選択
    Screensnapz004
  8. BTアダプタとDUALSHOCK3が選択されてることを確認
    Parallels_desktopscreensnapz013x
  9. 「Pair Now」をクリック。アダプターのMACアドレスが、コントローラに設定されます。
    Parallels_desktopscreensnapz014x
  10. BTアダプタをSBDBTに装着。
  11. ロボゼロ電源オン。
  12. SIXAXIS電源オン。ペアリングが成功すると、LEDがひとつ点灯する。
    20121007_180130x

●費用

ざっと費用を書き上げてみました

3端子レギュレータとか定番のだし、アダプターもコントローラーも持っていれば、SBDBTの2980円で済んでしまうという、驚きの代物ですhappy01

●動かしてみる

実際に動かしているところを少しだけムービで撮りました。

--------

--------

さて、今回はこんなところでおしまいにします。ファームウエアの公開、もうすぐだと思いますので、公開楽しみに待ってて下さいねhappy01paper

過去に書いたSBDBT関連ブログまとめ

----------------
にほんブログ村 科学ブログ ロボットへ
にほんブログ村

|

« 手持ちのBluetoothアダプターをSBDBTに挿してみた | トップページ | Xcontroller 0.6.5 公開 »

無線(SBDBT)」カテゴリの記事

週刊 ロボゼロ」カテゴリの記事

コメント

ロボゼロの無線化について貴重な情報がありとても参考になりました。
今日、無事 SBDBT を使用して無線化に成功しました。
無線化の作業をしていて1点気になることがありましたので報告します。
HSWB-04F の受信機接続端子の pin配置 +5V と RxD が実際と逆になっているようです。

投稿: つぐ | 2012年10月 6日 (土) 17時02分

つぐさん
コメントありがとうございます。

RXではなくTXで、
TXは7番ピンです。
図が間違ってますかね?

いま外なので、いろいろチェックできないので
うちに帰ったら、見てみますね。

投稿: micono | 2012年10月 6日 (土) 17時24分

>図が間違ってますかね?

はい。 回路図の左(HSWB-04F側)の 3pinコネクタが違っていると思います。
赤(5V) と 黄色(RxD) が逆みたいです。

SBDBD側は問題ないです。

投稿: | 2012年10月 6日 (土) 22時12分

ただいま帰りました。
ありがとうございます。
チェックしてみました。
真ん中がシグナルですね。
ボードの絵が間違っているんですね。修正しておきます。

投稿: micono | 2012年10月 6日 (土) 23時09分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/221673/55622960

この記事へのトラックバック一覧です: 手持ちのBTモジュールでロボゼロを動かしてみた(7):SBDBT編(SIXAXIS):

« 手持ちのBluetoothアダプターをSBDBTに挿してみた | トップページ | Xcontroller 0.6.5 公開 »