Zeemoteは本来Androidスマートフォン用だが、Bluetooth HIDやSPPに対応しているからmbedでも使えそうなので試してみた。
・iBUFFALO Bluetooth2.1対応スマートフォン用ゲームコントローラー「ZeemoteJS1」 BSGPJS1
Androidスマートフォン用SDKも有るみたいだ。 面白そう。
で、さっそくAmazonに発注。
Zeemote来た。箱の割には中身が小さい。
まず、ZeemoteのBluetoothキーボードやマウスのフリをするモード(HID)でmbedとつないでみる。
実験に用意したものはこれ。
・mbed NXP LPC1768 と StarBoard Orange
・USB Bluetoothドングル
私が動作確認したのは、次の二つ。
PLANEX Bluetooth Ver3.0+EDR BT-Micro3E1XZ
iBUFFALO Bluetooth4.0+EDR/LE対応 USBアダプタ ブラック BSHSBD08BK
・mbed用Bluetoothライブラリ
BlueUSB(HID用)
myBlueUSB(SPP用)
まず、mbed + BlueUSBでZeemoteのHID接続実験をしてみた。
残念ながら、ポインタモードもキーパッドモードもうまくいかなかった。すこしソースを追いかけてみるか...
次に、mbed + myBlueUSBでZeemoteのジョイスティックモード(SPP)も試してみたが、こちらもダメだった。
試しに、Win7 PCとZeemoteのSPPでペアリングをしてみたらすんなりうまくいってしまった。
ペアリングするとZeemoteに対してPCのCOMポートが割り当てられるので、あとは普通のシリアルとして通信できる。
これで、とりあえずPCとZeemoteをBluetooth SPP接続して、ボタンデータとジョイスティックデータを取れるようにはなった。
いろいろ応用できそうだ。
使用したProcessingのプログラムはこれ。
注意:COMポートは各自の環境に合わせて変更する必要がある。
Zeemoteのジョイスティックモード(SPP)で接続したとき、送られてくるデータの先頭はデータ長。
5バイト長のデータはジョイスティック。
8バイト長のデータはボタン。ボタンの複数同時押しも対応している。
あと、4バイト長のデータが時々送られてくるがこれが何のデータかは不明(バッテリーのステータス?)。
SPPでPCとの接続がうまく行ったので、もしやと思ってmbed側からMACアドレスを指定してZeemote側へ接続したらうまくいった。
mbed + myBlueUSBで、Zeemoteのジョイスティックモード(Bluetooth SPP)接続、myBlueUSBの改造箇所はこれ。
事前にZeemoteのMACアドレスを調べておく必要がある。(PCとペアリングするとわかる)
これに改造を加えて、試しにRCサーボモータを動かしてみた。
動画はこちら。
mbedとZeemoteをBluetooth接続して、RCサーボモータを動かしてみた。
― 以上 -
パソコンにそのまま利用できるものでしょうか?
最近mbedとprocessingで何かしたいと思いブログを参考にさせてもらっています。
processingとmbedでのシリアル通信をやってみた所、PC上ではしっかりmbedから
データの取得が出来たのですが、processingでSerialクラスを使いmbedからデータを
取得しようと試みたらうまく行きませんでした。
mbedがある事は認識しているらしいのですが、値がおかしいのです。
どうすればうまく行くでしょうか。
お忙しい所すみません。よろしくお願いします。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12103800132
この場合だとmbedから送られてくるのは文字列ですので、
draw関数の部分はこんな感じでどうでしょうか。
int i = 0;
char [] buff = new char[30];
void draw() {
while (myPort.available ()>0) {
char c = (char)myPort.read();
buff[i++] = c;
if(c == '\n') {
String st = String.valueOf(buff);
print("Strirng = " + st);
data = parseFloat(st);
println("float = " + data);
i = 0;
}
}
}
無事解決いたしました。
これからもrobo8080さんのブログで勉強させていただきます。
本当に有り難うございました。