SpotMicro(mini) その7 ーリモートコントローラにも気をつけろ(その2)ー [ROBOT]
前回の記事で、XBOXOneのコントローラには、Bluetoothに接続できるものとできないものがあり、できるものをてにいれて、接続できたところまでは書いた。
SpotMicroaiのページによると、jstest コマンドを使うと、接続状態を確認でき、ボタンやスティックを稼働させると変化が出力される。
このコマンドを実行すると、接続されているボタン等のリストが出力される。
? !なんかおかしい。
ここで、SpotMicroaiのプログラムを動かし、Startボタンを押すと、エラーが発生して止まる。
エラーの内容は”Ryがない。”
で、上のスティックの列を見ると確かに、Ryはない。
そこで、USBケーブルを使用して、Bluetoothではないコントローラを接続して、jstestを起動すると
こっちにはRyがある!
さらに
Bluetooth で接続できたものをUSBでつないてみると
あれ?こっちにもあるなあ。おんなじコントローラなのに。だけど、名前が違うのか。
GamePadのプロファイルは誰がどうやって認識してるんだろう。
多分、接続時に、プロファイルを読み取り、認識してるんだろうと思う。
だとするともう手においえないので、スティックの対応を読み替えることにした。
SpotMicroのプログラムは、RemoteControllerを自前で認識している。であれば、
報告されたスティック番号を入れ替えればいい。
スティックの名前つけマップを以下のようにした。
とりあえずこの変更で、起動するところまで行った!
レストポジションになるみたいだ。
そこで、起こったことは、
”パチッ!!”と言って煙が”?”の形で上がった。
いろいろ起こるなあ
SpotMicroaiのページによると、jstest コマンドを使うと、接続状態を確認でき、ボタンやスティックを稼働させると変化が出力される。
このコマンドを実行すると、接続されているボタン等のリストが出力される。
Driver version is 2.1.0. Joystick (Xbox Wireless Controller) has 8 axes (X, Y, Z, Rz, Gas, Brake, Hat0X, Hat0Y) and 15 buttons (BtnA, BtnB, BtnC, BtnX, BtnY, BtnZ, BtnTL, BtnTR, BtnTL2, BtnTR2, BtnSelect, BtnStart, BtnMode, BtnThumbL, BtnThumbR). |
? !なんかおかしい。
ここで、SpotMicroaiのプログラムを動かし、Startボタンを押すと、エラーが発生して止まる。
エラーの内容は”Ryがない。”
で、上のスティックの列を見ると確かに、Ryはない。
そこで、USBケーブルを使用して、Bluetoothではないコントローラを接続して、jstestを起動すると
\
Driver version is 2.1.0. Joystick (Microsoft X-Box One pad) has 8 axes (X, Y, Z, Rx, Ry, Rz, Hat0X, Hat0Y) and 11 buttons (BtnA, BtnB, BtnX, BtnY, BtnTL, BtnTR, BtnSelect, BtnStart, BtnMode, BtnThumbL, BtnThumbR). |
こっちにはRyがある!
さらに
Bluetooth で接続できたものをUSBでつないてみると
Driver version is 2.1.0. Joystick (Microsoft X-Box One S pad) has 8 axes (X, Y, Z, Rx, Ry, Rz, Hat0X, Hat0Y) and 11 buttons (BtnA, BtnB, BtnX, BtnY, BtnTL, BtnTR, BtnSelect, BtnStart, BtnMode, BtnThumbL, BtnThumbR). |
あれ?こっちにもあるなあ。おんなじコントローラなのに。だけど、名前が違うのか。
GamePadのプロファイルは誰がどうやって認識してるんだろう。
多分、接続時に、プロファイルを読み取り、認識してるんだろうと思う。
だとするともう手においえないので、スティックの対応を読み替えることにした。
SpotMicroのプログラムは、RemoteControllerを自前で認識している。であれば、
報告されたスティック番号を入れ替えればいい。
スティックの名前つけマップを以下のようにした。
if js_name == 'Xbox Wireless Controller': print('remap axis_name') axis_names = { 0x00: 'lx', 0x01: 'ly', 0x02: 'rx', 0x03: 'ry', 0x04: 'ry', 0x05: 'ry', 0x06: 'ry', 0x07: 'rz', 0x08: 'wheel', 0x09: 'rz', 0x0a: 'lz', 0x10: 'hat0x', 0x11: 'hat0y', 0x12: 'hat1x', 0x13: 'hat1y', 0x14: 'hat2x', 0x15: 'hat2y', 0x16: 'hat3x', 0x17: 'hat3y', 0x18: 'pressure', 0x19: 'distance', 0x1a: 'tilt_x', 0x1b: 'tilt_y', 0x1c: 'tool_width', 0x20: 'volume', 0x28: 'misc', } |
とりあえずこの変更で、起動するところまで行った!
レストポジションになるみたいだ。
そこで、起こったことは、
”パチッ!!”と言って煙が”?”の形で上がった。
いろいろ起こるなあ
SpotMicro(mini) その6 ーリモートコントローラにも気をつけろー [ROBOT]
SpotMicroAiのプロジェクトは、リモートコントローラをつなげて、コントロールするようだ。
どんな動きをするのかわからないけど、ともかくつなげることが必要なようだ。
ここのページには、Xbox とPS4のコントローラが接続可能と書いてある。
そこで、Raspberry Pi とコントローラで検索をかけるとPS4とPS3の接続ができると書いてある。PS3に関しては、ドライバをインストールすれば使用可能だと書いてある。そこで、僕らの味方ハードオフを回るとPS3用のコントローラは割と見つかるので、2つほど買ってみたが、どちらもうまくいかない。しかし、PS4のコントローラは、ハードオフにはなかった。
そこで、オークションで、PS4のコントローラを調べてみると、ジャンク品でパチモノのものが500円程度で買うことができた。送料のほうが高かったけど。
こいつは、Raspberry Pi に問題なく接続できた。が、本物のPS4より招集がかかり、私の部屋から消えていった。
そこで、XBOXのコントローラを探してみることにした。
Raspberry Pi に接続するためには、Bluetoothが必要だ。
そこに罠があった。
最近新しいのが出たらしいけど、Xboxのコントローラは、複数ある。
Bluetoothが使えるものは、Xbox Oneのコントローラだ。
しかし、オークションタイトルで、ワイアレスコントローラとかいてあるものに、Xbox360ワイアレスコントローラとあるのを見つけた。
さらに、ここで、ハードオフに行ってみると360のコントローラは、割とゴロゴロある。ので、買ってきた。
が、やっぱりつながらなかった。まあ、そうだろうなとは、思った。
それじゃあ、心を入れ替えてXboxOneControllerを探して落としてみた。
が、どうしてもつながらない。調べてみるとXboxOneコントローラにもバージョンがあり、使えるものと
使えないものが
あった!
使えるもののバージョンは、1708以降のもので、それより前のものはだめらしい。
ただし、どちらも無線で、通信できるので、ワイアレスコントローラなのだ!
しかし、さらなる罠が待ち受けているのであった!!
どんな動きをするのかわからないけど、ともかくつなげることが必要なようだ。
ここのページには、Xbox とPS4のコントローラが接続可能と書いてある。
そこで、Raspberry Pi とコントローラで検索をかけるとPS4とPS3の接続ができると書いてある。PS3に関しては、ドライバをインストールすれば使用可能だと書いてある。そこで、僕らの味方ハードオフを回るとPS3用のコントローラは割と見つかるので、2つほど買ってみたが、どちらもうまくいかない。しかし、PS4のコントローラは、ハードオフにはなかった。
そこで、オークションで、PS4のコントローラを調べてみると、ジャンク品でパチモノのものが500円程度で買うことができた。送料のほうが高かったけど。
こいつは、Raspberry Pi に問題なく接続できた。が、本物のPS4より招集がかかり、私の部屋から消えていった。
そこで、XBOXのコントローラを探してみることにした。
Raspberry Pi に接続するためには、Bluetoothが必要だ。
そこに罠があった。
最近新しいのが出たらしいけど、Xboxのコントローラは、複数ある。
Bluetoothが使えるものは、Xbox Oneのコントローラだ。
しかし、オークションタイトルで、ワイアレスコントローラとかいてあるものに、Xbox360ワイアレスコントローラとあるのを見つけた。
さらに、ここで、ハードオフに行ってみると360のコントローラは、割とゴロゴロある。ので、買ってきた。
が、やっぱりつながらなかった。まあ、そうだろうなとは、思った。
それじゃあ、心を入れ替えてXboxOneControllerを探して落としてみた。
が、どうしてもつながらない。調べてみるとXboxOneコントローラにもバージョンがあり、使えるものと
使えないものが
あった!
使えるもののバージョンは、1708以降のもので、それより前のものはだめらしい。
ただし、どちらも無線で、通信できるので、ワイアレスコントローラなのだ!
しかし、さらなる罠が待ち受けているのであった!!
SpotMicro(mini) その5 ーケツの構造ー [ROBOT]
この4本足ロボットのケツの部分に、状態表示用の液晶パネルと、電源スイッチと充電用のポートをつけた。
普通のわんこは、ケツの部分からうんこを出すわけだが、こいつは、エネルギーを受け取る。
ケツの部分は、パネルとボディへのマウントの2つの部分に分かれている。
これで、簡単に液晶パネル基板にアクセスできるようにというつもりだったが、なんだかんだ言って、ここまで外す場合が多いので、結局一体型でもよかったかもしれない。とはいえ、これを一体型で成型するには、いろいろと苦労がありそうなので、結局分けたほうが、フィラメントも少なくできるし、よかったのではないかと思うが。
液晶パネルは、I2Cで接続されているが、こいつにはちょっと手を焼いた。
この液晶パネルは、AQM1602Y-FLW-FBWというもので、みんな大好き秋月電子で売っている。
この液晶パネルは、Raspberry Pi との相性があまりよくないらしいことは以前も書いたとおりだが、秋月電子の同類商品AQM1602YRN-GBWの取り扱いのページに、PCA9515というバスリピータを用いた際の回路図が掲載されている。回路図通りに作ってみたんだけど、どうも安定しない。I2Cは、裸電線で引き回すようなつもりではないようだ。なので、短い距離で使うのであれば、問題ないと思ったが、どうもうまくいかない。安定しないのだ。
I2Cに関するページをいろいろ調べてみると、2~5kが適切だと書いてあるページあったので、そうか、じゃあ小さくしてみればどうだろうとしてやってみたところ、全く動かない
さらにいろんなページを調べると、I2Cの規格を作ったphillips の仕様書には、47kが適当だとも書いてある。それならと15kにしてみたら、なんと安定的に動いている。
なるほどねえ。
普通のわんこは、ケツの部分からうんこを出すわけだが、こいつは、エネルギーを受け取る。
ケツの部分は、パネルとボディへのマウントの2つの部分に分かれている。
これで、簡単に液晶パネル基板にアクセスできるようにというつもりだったが、なんだかんだ言って、ここまで外す場合が多いので、結局一体型でもよかったかもしれない。とはいえ、これを一体型で成型するには、いろいろと苦労がありそうなので、結局分けたほうが、フィラメントも少なくできるし、よかったのではないかと思うが。
液晶パネルは、I2Cで接続されているが、こいつにはちょっと手を焼いた。
この液晶パネルは、AQM1602Y-FLW-FBWというもので、みんな大好き秋月電子で売っている。
この液晶パネルは、Raspberry Pi との相性があまりよくないらしいことは以前も書いたとおりだが、秋月電子の同類商品AQM1602YRN-GBWの取り扱いのページに、PCA9515というバスリピータを用いた際の回路図が掲載されている。回路図通りに作ってみたんだけど、どうも安定しない。I2Cは、裸電線で引き回すようなつもりではないようだ。なので、短い距離で使うのであれば、問題ないと思ったが、どうもうまくいかない。安定しないのだ。
I2Cに関するページをいろいろ調べてみると、2~5kが適切だと書いてあるページあったので、そうか、じゃあ小さくしてみればどうだろうとしてやってみたところ、全く動かない
さらにいろんなページを調べると、I2Cの規格を作ったphillips の仕様書には、47kが適当だとも書いてある。それならと15kにしてみたら、なんと安定的に動いている。
なるほどねえ。