Intel EdisonでBluetoothを試してみる


Pocket

EdisonでBluetooth通信を試してみました。
Edisonでは、BlueZというオープンソースのBluetoothプロトコルスタックが使用されています。

http://www.bluez.org/

とりあえず今回は、EdisonにBluetoothキーボードを接続して入力を確認するところまでやった。

EdisonのBluetoothの設定などは、下記リンクのUserGuideに書かれています。
http://www.intel.com/support/edison/sb/CS-035381.htm

【試した環境】
Release2.1(weekly-159)

Edison Bluetooth

 

Bluetoothを有効にする

標準ではリブート後、Bluetooth(Chipset BCM43340)が無効になっているので、有効にしてあげる必要があります。
切り替えにはrfkillコマンドを使用します。

rfkill unblock bluetooth  //有効にする
rfkill block bluetooth    //無効にする

rfkill listでhci0:Bluetoothが表示されれば有効になっています。
rfkill list
 

Bluetooth制御

Bluetooth制御には、bluetoothctlというユーティリティーツールが用意されています。

デバイスの検索

Edisonをマスタ、RN42をスレーブ(Bluetoothキーボード)としています。
デバイスの探索は、scanコマンドで行います。

[bluetooth]# scan on   //探索開始
[bluetooth]# scan off  //探索停止

デバイス探索

上記の例だと、RN42(RNBT-E3FE)と近くにあったスマホ(SC-04F)を発見しています。
発見したデバイスの情報はinfoコマンドで確認できます。

[bluetooth]# devices           //デバイスの一覧表示
[bluetooth]# info <dev>  //デバイス情報の表示

デバイス info

 

ペアリング

次にペアリングです。
初めにagent?をセットする必要があるようです。
※いまいち理解できてないです

[bluetooth]# agent DisplayYesNo
[bluetooth]# default-agent

設定の種類は下記5パターンあるようです。

KeyboardDisplay  //?
KeyboardOnly     //?
DisplayOnly      //?
DisplayYesNo     //ペアリングの時、PINが表示されYES/NOを選択する
NoInputNoOutput  //?

ペアリングはpairコマンドで行います。

[bluetooth]# pair <dev>

ペアリング

 

デバイスと接続

ペアリング済みのデバイスと接続します。

[bluetooth]# connect <dev>

デバイスに接続

これでデバイスとの接続が完了しました。
 

動くか確かめる

早速ちゃんと通信できているか確かめてみます。
確認に使用したのは、evtestです。
これをEdisonにgitで落としてきてビルドしました。
evtestツールについて詳しくは調べていませんが、インプットイベントをモニタするツールのようです。

実行すると下記のような画面が表示されます。
/dev/input/event2がRN42(RNBT-E3FD)になっていることが確認できます。
evtest

RN42側(正確にはRN42とシリアル接続したPC)のキーボードを操作すると、Edison側でキーイベントが受信できていることが確認できました。
evtest結果

 

あとがき

Bluetoothの基本的な使い方は解ったかな。

始めはGearLiveを繋げようとしたんですが、何回やってもデバイス探索で発見出来ず。
調べてみるとAndroid Wearは1つの端末としかペアリング出来ないみたいです。
他の端末に変える場合はAndroid Wearを一旦初期化しないといけないらしく…めんどくさい。

 
 

Leave a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>