2014年08月01日

RAPIRO製作日誌 〜無線化への道〜 Raspberry pi 搭載編 続章 bluetooth設定

いよいよこの連載も第一部の終わりが見えてまいりました。
前回はワンクッション置かせていただきました。今回から無線化の作業に戻ります!!
今回は色々と設定が複雑なため、私自身の知識のみでは太刀打ちできず、いくつかのウェブサイトを参考に
させていただきました。

↓↓↓参考にさせていただいたサイトはこちら↓↓↓

『工作と小物のがらくた部屋』
http://junkroom2cyberrobotics.blogspot.jp/2013/03/raspberry-pi-dualshock3-bluetooth.html
いしわたむねお様のブログ。
引用掲載の許可を頂き誠にありがとうございます!!
コマンドの引用をさせていただきました。
おかげさまでスムーズに作業する事ができました。ありがとうございます。

『MAKUAKE NOTE』
http://www.makuake.com/blog/crowdfunding/rapiro-dualshock/
轟 次郎様の記事。
こちらもコマンドの引用をさせていただきました。
著作者様への連絡方法が判りませんでしたので、一部無断で参考記事とさせていただいたこと
お詫び申し上げます。

もし今回の記事でわかりくい部分がありましたら、ぜひこちらのサイトを参考にして下さい。


さて、無線化にはサンプルプログラムも公開されているPS3のコントローラーDUALSHOCK3を使用します。
今回はRaspberry pi以外にも必要なものが出てきます。

・bluetoothアダプタ
・DUALSHOCK3
・miniB USBケーブル(Raspberry piとコントローラーを接続する際に必要)

をご用意ください。
なお、bluetoothアダプタとRaspberry piには相性があるようで、ドングル(アダプタの事)は認識しているが通信プロトコル(HCIモード)が機能していないと言うものがありました。
原因はわからないのですが、一部機器できちんとbluetoothが機能しないようです。
今回無事にペアリングの作業まで行えたbluetoothドングルは

iBuffalo社製
・BSHSBD04BK
・BSBT4D09BK

この二つでbluetooth通信を行う事が確認できました。

それでは実際の設定作業に入っていきたいと思います。
私が作業を行っていたとき、ドングルを挿すたびにRaspberry piが再起動していましたので、
ドングルは挿した状態で起動する方がよいかと思われます。

色々とダウンロードしなければならないものが多いので、そのリストのアップデートとアップグレードを行います。
まずはアップデートから。
ターミナルに↓

sudo apt-get update

このコマンドを入力するだけで完了です。
次にアップグレード。
これもターミナルに↓

sudo apt-get upgrade

このコマンドを入力するだけで完了です。
これでダウンロードに必要なリストの更新アップデートが完了しました。

次にRaspberry piでbluetooth機器を使用する際に必要なものをダウンロードしていきます。
ターミナルに↓

sudo apt-get install bluetooth bluez-utils bluez-compat bluez-hcidump

ブルートゥース設定1
↑コマンドを入力した状態のスクショ

というコマンドと

sudo apt-get install libusb-dev libbluetooth-dev joystick checkinstall

ブルートゥース設定2
↑コマンドを入力した状態のスクショ

というコマンドを入力します。
これでbluettothドングルを認識させる準備が出来ました。

きちんと認識されているか確認作業を行います。
ターミナルに↓

lsusb

というコマンドを打ち込みます。
いくつかデバイスが認識されている事が表示されると思います。
その中に

Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)

という記述があるのが確認できたらきちんとドングルが認識されています。

次にキチンとHCIモードが働いているかを確認するために、
ターミナルに↓

hciconfig

と打ち込みます。
正常にドングルが認識されていれば以下のような画面が出るはずです。

HCIコンフィグスクショ


次にbluetoothが動いているかを確認するために、
ターミナルに↓

/etc/init.d/bluetooth status

というコマンドを打ち込みます。
※初回掲載時は先頭に「/」が抜けておりました。ご指摘いただきましたユーザー様に感謝いたします。
 あわせてお詫びして訂正いたします。


bluetooth is runnning

と表示されればOKです!
これでドングルの設定は完了しました。

次にDUALSHOCK3を接続します!
bluetoothアダプタとDUALSHOCK3をペアリングするために必要なツールをダウンロードします。
ターミナルに↓

wget "http://www.pabr.org/sixlinux/sixpair.c" -O sixpair.c

というコマンドを打ち込みます。

次にこのファイルをコンパイルします。
ターミナルに↓

gcc -o sixpair sixpair.c -lusb

というコマンドを打ち込みます。
これでペアリングが実行できる状態となりました。
ここで一度Raspberry piとDUALSHOCK3をminiB USBケーブルで接続します。

接続した後、ターミナルに↓

sudo ./sixpair

というコマンドを打ち込みます。

その後、DUALSHOCK3のPSボタンを押してください。
すると

Current Bluetooth master: xx:xx:xx:xx:xx:xx
Setting master bd_addr to: xx:xx:xx:xx:xx:xx
※xの部分には英数字が入ります。

↑という表示が出ればペアリング完了です。
ケーブルとコントローラーを外してください。
次にRaspberry piでbluetoothを用いてDUALSHOCK3のコマンドを受け付けるためのソフトウェアをインストールしていきます。

ターミナルに↓

wget "https://sourceforge.net/projects/qtsixa/files/QtSixA%201.5.1/QtSixA-1.5.1-src.tar.gz/download” -O QtSixA-src.tar.gz

とコマンドを打ち込みます。
まずこれで必要なファイルをダウンロードして保存します。
次に、ターミナルに↓

tar zxvf QtSixA-src.tar.gz

と打ち込みます。
このコマンドでダウンロードしたファイルを展開します。

次にこのファイルが保存されている領域に移動してファイルを実効できる状態にします。
ターミナルに↓

cd QtSixA-1.5.1/sixad

と入力し、続いて↓

make

と入力し、最後に↓

sudo make install

とコマンドを入力して下さい。
これでこのファイルが実行できるようになります。

次に元の領域に移動するため、
ターミナルに↓

cd

と打ち込んでください。

続いてターミナルに↓

sudo sixad -start

と入力して下さい。

その後DUALSHOCK3のPSボタンを押すと

PS3接続確認

上の画像のように表示が出ます。

最後に、ターミナルに↓

cat /dev/input/js0
※最後は数字のゼロです!

というコマンドを入力します。
この後にDUALSHOCK3のボタンを適当に押すと不思議な文字列が表示されるはずです。
文字列が表示されれば通信が行えています。

このままだと延々と処理を繰り返してしまうので

ctrl+c

のショートカットキーを使い終了させます。

以上でDUALSHOCK3とRaspberry piとの接続は完了です。

今回はかなりややこしい事を行ったので混乱される方もいらっしゃると思いますが、
なるべく何をやっているかがわかりやすいように補足説明をつけさせていただきました。

いよいよ無線化作業も大詰めに入ってまいりました。
次回はいよいよサンプルプログラムを動かしてRAPIROをケーブルの楔から解き放ちます。
乞う、ご期待!!

そして当店で空前の大ブームが起きているRAPIROですが、
いよいよひと夏の思い出も過ぎ去りし思い出に変わろうとしています。
セール期間もあと今日を含めて残すところ3日となりました。

RAPIROは当店一階、通販ページにて通常販売価格¥45360-のところ、
残り僅かな日数ですが!
思い出特価¥40000-にてご提供しております!!

またRaspberry pi typeBは当店二階及び通販ページにて¥5616-で販売いたしております。

<記事:福島>

RAPIRO製作日誌シリーズ

RAPIRO 製作日誌 〜組み立て編〜

ラピロ製作日誌 プログラム編 ロボット開発基礎の基礎

RAPIRO製作日誌 プログラム編2 プログラムを書き換えてみよう!

RAPIRO製作日誌 プログラム編3 RAPIRO製作日誌 プログラミング編3 サーボモータを動かしてみよう!!

RAPIRO製作日誌 〜無線化への道〜 Raspberry pi搭載編 序章 

RAPIRO製作日誌 〜無線化への道〜 Raspberry pi搭載編 前章+序章+α 

siliconhouse at 19:18│TrackBack(0)1階売り場情報 

トラックバックURL

この記事へのコメント

1. Posted by 高野博幸   2014年10月17日 21:00
Linuxは全くの素人です。先日RAPIROを組立後、HPにてPS3コントローラを使った操縦を知り私も挑戦してみたいと思いまして、シリコンハウスへようこそ2014年08月01日にて、Raspberry piでbluetoothを用いてDUALSHOCK3のコマンドを受け付けるためのソフトウェアをインストールしようとしたのですが、wget "https://sourceforge.net/projects/qtsixa/files/QtSixA%201.5.1/QtSixA-1.5.1-src.tar.gz/download” -O QtSixA-src.tar.gz を実行したところ1行改行し、”>”表示のままでダウンロードがうまく出来ずここで作業がストップしています。この原因は何なのかお分かりになりますでしょうか?
2. Posted by あああ   2014年10月18日 16:29
私も同じところで数分悩みましたが、文字列をそのままコピーするとURLの記述の最後が全角の「”」になっていたので、wget "〜/downloadの後の「"」を半角にして入力したらDownloadが出来ました。
3. Posted by 福島@シリコンハウス   2014年10月21日 18:26
高野博幸様

申し訳ございません。
私の記述ミスでした正確には
あああ様のご指摘どおり
wget "https://sourceforge.net/projects/qtsixa/files/QtSixA%201.5.1/QtSixA-1.5.1-src.tar.gz/download" -O QtSixA-src.tar.gz

download
の記述の後の『"』が本文では全角記号になっており
正しくは半角記号のの"と記述すべきでした。
お詫びし訂正いたします。
4. Posted by 高野   2014年10月22日 18:44
Posted by あああさん、並びに福島@シリコンハウスさん、ご指導有難うございました。コピペに頼ってやってましたので気がつきませんでした。
5. Posted by tika   2014年10月26日 23:06
突然すみません。
bluetoothアダプタはBSHSBD04BKを使用しているのですが「hciconfig」のコマンドを入力すると
「-bash: hciconfig: command not found」
と出てしまうのですが、この場合hciモードが機能していないということでしょうか?
原因がお分かりでしたらお願い致します。
6. Posted by 福島@シリコンハウス   2014年11月05日 12:40
tica様

コメントありがとうございます。
今回のエラーコードはhciモードが正しく機能していないことを
示すものではございません。
このエラーコードはコマンドが正しく認識されていない事を示しています。
エラーコードから推測される問題点は二つです。

1:コマンドのタイプミス
よくありがちなのですが、自分で正しくコマンドを入力したつもりでも
コマンドの実はタイプミスをしていて、コマンドが正しく認識されていない場があります。
もう一度コマンドに誤りがないか確認を行なってください。

2:PATHが通っていない
hciconfigのコマンドは本来そのコマンドが格納されているディレクトリに
移動して実行するコマンドです。
RasbianではそのショートカットであるPATHが通されているはずなのですが、
そのPATHが通っていない可能性があります。

/usr/sbin/hciconfig

とコマンドを打ち込んでいただけますでしょうか?
直接コマンドを起動するコマンドですので
おそらく正常に動作するはずです。

これら二つの方法を試してみて正常に動作しなければ
他の不具合が考えられます。
うまくいかないようであればまたコメントくださいませ。
7. Posted by tika   2014年11月07日 15:29
返答ありがとうございます。
コマンドのタイプミスの可能性も考えましたが、一応(?)何回も入力しなおしてみたりしてるので・・・

PATHが通っていない可能性の件ですが、コメントでいただいたコマンドを打ち込んで見たのですが
[-bash:/usr/sbin/hciconfig: No such or directory]
と表示されます。

お手数お掛けしますが、また何か分かりましたらよろしくお願いします。
8. Posted by 福島@シリコンハウス   2014年11月26日 13:38
返答が遅れ申し訳ございません

私も検証しましたが、詳しい原因はわかりませんでした。
可能性としてはOSのインストール時点から
なんらかのエラーが発生している可能性も考えられます。
お力になれず申し訳ございません。
9. Posted by ラピロ大好き   2015年01月18日 15:01
RAPIRO制作日誌を拝見しさせて頂いております。
ラピロの無線化ですが、PS3のコントローラーDUALSHOCK3「SONY製」ではなく「ホリ製」でも可能でしょうか。
10. Posted by 福島@シリコンハウス   2015年01月27日 16:22
ラピロ大好き様
コメントいただきありがとうございます。
無線化の際に用いるプログラムなのですが
コントローラーから出ている信号を解析してモーションを
呼び出しているので、PS3で使用できているコントローラーであれば
同じ信号が出ているはずなので、
ホリ製のコントローラーでも無線j化を行なっていただけると思います。
11. Posted by ラピロ大好き   2015年01月31日 08:44
返答 有り難うございました。
12. Posted by ラピロ大好き   2015年03月08日 19:02
ラピロ無線化の最後「sudo python rapiro_ps3.py」入力後 「python:can't open file 'rapiro_ps3.py': [Errno2]No such file directory」と表示され、無線操作ができません。

以下の点が原因ではないかと思いますが、申し訳ございませんが、ご教授お願いします。

無線化への道 終章 良いも悪いもリモコン次第の章 IPアドレス固定化にて、「inet addr,Mask」共に イーサーネットアドレスを入力し、ローカルループバックアドレスを入力していません。
gatewayの項目の下の数字を入力するところ、下に示されていたのは、数字ではなく「web.setup」であったので、その通りアルファベットを入力しました。
13. Posted by ラピロ大好き   2015年03月15日 17:55
無線操作ができなかった為 3月8日質問させて頂きましたが、ラズベリーパイを再インストールし、無線化の設定を再度行いました。
試行錯誤の末 なんとか別PCにて無線操作が出来るようになりました。
しかし 新たに問題及び疑問点が出てきましたので、大変申し訳ございませんが、ご教授の程 お願い致します。
アドレスを変更した為か DUALSHOCK3でRAPIROを動かすためのサンプルコードに接続できず、ダウンロードができません。
bluetoothアダプタとDUALSHOCK3のペアリングを行った時のCurrent Bluetooth masterとSetting master bd_addr toが同じ英数字でも問題ないのでしょうか。
sudo sixad -staratを行い説明画像のように表示が出て来た為 続けてcat /dev/input/js0を入力しましたが、何も反応がないので、ctrl+cで終了させ、$cat /dev/input/js0を入力しました。
そうしましたら 四角い絵表示のような記号が延々と出てきましたので、ctrl+cで終了させました。このような状態でも問題ないのでしょうか。
14. Posted by 福島@シリコンハウス   2015年03月20日 18:40
RAPIRO大好き様返信が遅れ申し訳ございません。
まずご質問の,砲弔い討任垢
接続できないとはどういう状況なのでしょうか?
コマンドを実行できないという事でよろしいですか?
もしくはコマンドを実行してもコンソール上で何も変化がないという事でしょうか?
続いて△砲弔い討任垢、本来ならば数値は異なるはずなのですが
で特殊文字列が表示されているようですのでDUALSHOSK3から信号を受け取ってそれが反映されていると思われます。
$cat /dev/input/js0
はDUALSHOCK3からの信号を認識しているか確認するためのコマンドです。ですのでRaspberry piとDUALSHOCK3間で通信が行なわれている事が確認できます。
15. Posted by ラピロ大好き   2015年03月21日 07:40
福島様
返答有り難うございます。
,鮗孫圓靴燭箸海蹇(7)Faild to connect to ***.**.***.***:ネットワークに届きません」と表示され実行できません。
ご教授の程 お願い致します。
16. Posted by ラピロ大好き   2015年03月21日 08:08
福島様
ラズベリーパイは、このブログにも接続できなくなってます。この事項も影響があるのでしょうか。
何度も申し訳ございませんが、宜しくお願い致します。
17. Posted by 福島@シリコンハウス   2015年03月24日 18:23
RAPIRO大好き様
コメントありがとうございます。
そのエラー文が何故表示されているのか私にはすぐに分かりませんでしたので
再度検証の後コメントさせていただきます。
18. Posted by ラピロ大好き   2015年03月24日 21:39
宜しくお願い致します。
19. Posted by 福島@シリコンハウス   2015年04月01日 18:27
RAPIRO大好き様
返答が遅くなり申し訳ございません。
私が調査いたしましたところ、どうやらgatewayの設定がおかしくなっているようです。
おそらくrouteコマンドで確認された際にメモされた数字が間違っている
もしくは違う数字を入力してしまっている可能性が考えられます。
この場合本来Raspberry piをインターネットに接続した際に取得できる
正しいgatewayの値を再取得となると、RAPIROの無線化よりも
複雑な作業を行なう必要があります。
ですのでもう一度Raspberry piのOSの再インストール後
設定のやり直しを推奨させていただきます。
しかし再度設定される作業の工程で、外部パソコンから接続するために
IPアドレスを固定する工程は行なわずに、まず固定する前の
現在のIPアドレスなどの状態を確認するまでの工程で一度作業をストップして下さい。
もし可能であればで良いのですが、弊社問い合わせ用メールアドレスsilicon○keic.jp(○の部分を@にしてください) に
ifconfigで表示された部分、routeで表示された部分の画像を添付いただきましたら
どの値を入力すれば良いのか回答可能になると思われるのでよろしくお願い致します。

20. Posted by ラピロ大好き   2015年04月01日 22:13
福島様
返答有り難うございます。
routeで表示されたgatewayの項目の下には数字はなく「*」だったため「*」を入力してました。
コマンドプロントにて自分のパソコンのアドレスを調べました。
表示されていたIPv4 アドレスは、inet addr、サブネットマスクは、Maskと同じ数字でした。
デフォルトゲートウェイの数字が、gatewayことでしょうか。
お手数ですがご返答お願い致します。
21. Posted by 福島@シリコンハウス   2015年04月25日 18:59
RAPIRO大好き様
返答が遅くなり申し訳ございません。
色々調査いたしました結果
RAPIRO大好き様のRaspberry pi 上において最初の設定の段階で
デフォルトゲートウェイの設定が何らかの要因で解除されてしまったのではないかと思われます。
本来ならば、最初の設定の段階においてrouteコマンドを実行した際にgateway日本語表記にされている場合ですと
「ゲートウェイ」という項目の真下に設定されたアドレスが表示されるはずなのですが
その表記が無いためデフォルトゲートウェイが設定されていない状態となり
外部ネットワークにアクセスできない状態になったと考えられます。
defaultの下に書かれている数字とは異なります。
設定が外れてしまったゲートウェイの再設定なのですが、複数の手順を行なわなければならない点と
RAPIRO大好き様のRaspberry pi やルータの情報を確認しながらの作業となりますので
画像等でRAPIRO大好き様の端末の情報を得られないことには私も助言できない状況です。
またネットワークの設定に関する事項ですのでセキュリティ上の不安も抱かれる事と思われますので
参考になりそうなwebサイトのご紹介をさせて頂きます。
http://d.hatena.ne.jp/japanrock_pg/20080522/1211439429
この記事を書かれた方も同じようにデフォルトゲートウェイの設定がされていなかったようで
無事に問題解決されたようなので、こちらのwebサイトを参考に再設定の作業を行なっていただければ幸いです。
直接お力になれず、申し訳ございません。
22. Posted by ラピロ大好き   2015年04月26日 17:51
福島様
返答頂き有り難うございます。
お陰様で、どうにか無線操作が出来るようになり、DUALSHOCK3で操作を楽しんでおります。
ただ 静止状態で左腕の位置が前に出ており、静止状態の調整方法は有るのでしょうか。
調整方法が有りましたら ご教授お願いします。

23. Posted by 福島@シリコンハウス   2015年05月08日 16:02
RAPIRO大好き様
無事無線化の作業まで終えられたようで何よりです。
無線操作による不具合なのですが、おそらく何もボタンを押していないときに
突然左腕が動き出す現象が起きているのではないでしょうか?
その現象は当店のデモ機でも発現しており、恐らく
RAPIROの無線化の際のサンプルコードのバグではないかと思われます。
私も色々と調べてはいるのですが、どうプログラムを変更してよいのか
未だに不明といった状況であります。
私の方でもコードの改変を試みます。
それで正常動作できるか判りませんが、コードが出来上がれば公開いたします。
24. Posted by RAPIRO大好き   2015年05月13日 22:59
福島様
返答有り難うございます。
コードが出来上がりましたら 公開を宜しくお願い致します。
また 無線化の次は、ScratchにてRapiroを動かしてみようと考えています。何か情報をお持ちでしたらご教授お願い致します。
25. Posted by 福島@シリコンハウス   2015年06月12日 15:25
RAPIRO大好き様
コメントありがとうございます。返答が遅くなり申し訳ございません。
Scratchに関しては私自身お役に立てるほどの情報は持っておりません。
お役に立てずに申し訳ございません。
26. Posted by #81   2015年08月14日 23:06
はじめまして。
早速ですがペアリング用のsixpair入手用に下記コマンドを打ち込むと、

wget "http://www.pabr.org/sixlinux/sixpair.c" -O sixpair.c

404:Not Found のエラーメッセージがかえってきます。

どこか他のサイトでペアリング用のツールは入手できないかご教示いただけいでしょうか。
難しいようであれば上述の『轟 次郎様の記事』
を参考に頑張ってみます。

ググると sixpair のソースコード頁はきちんと見つかるため、何か怪しいところがあればご指摘いただけると幸いに存じます。