マイコン工作実験日記

Microcontroller を用いての工作、実験記録

autopair と autocall

2012-12-15 19:32:33 | WT32/BM20
Maker Faireの時もそうでしたが、Bluetoothのデモのために観客の方に携帯やスマホを使ってBluetoothでの接続を頼むと、少なからぬ方々から、「Bluetooth使ったことないから、どうやるのか良くわからない」という返答があります。Bluetoothという言葉は知っていて、設定メニューの中にそういう項目があるのもわかっているけど、実際には使ったことがないという方がまだまだ多いようです。

今回はそんな客層を相手にデモするのに便利に使えそうな機能として、iWRAP5から新たに加わったautopairを紹介することにします。autopairは既存のペアリング情報情報が無い場合に、inquiryをかけてみて、見つかったデバイスに対してWT32側からペアリングをかけるという機能です。ペアリングができたら、さらにautocall機能を使ってWT32側から接続をかけることもできます。したがって、相手にはBluetoothの電源を入れてデバイス名を公開してもらいさえすれば、後の操作はこちらから行ってデモを進行できることになります。

実際にAndroidでやってみると端末側の動きは次のようになります。



まず、最初の状態です。スマホ側のBluetoothの電源を入れて検索がかかるとWT32が見えてきます (WT32側がデバイス名公開する設定にしているため)。



通常でしたら、ここでWT32をタッチして接続してもらうわけですが、今回はデバイスを公開してもらうことにします。



しばらく待っているといつの間にかペアリングが済んで、表示が「接続可能なデバイス」から「登録済みデバイス」に変化します。(ここまでがautopair機能の働き)



そして、つづいてWT32でautocall機能が動いて接続要求が来るので、写真のようにその確認メッセージが表示されます。「はい」でこれを許すと接続完了。



WT32側の設定は次のとおり。

ポイントとしては、
  • 接続相手を限定するために、paircountを1にしておく。
  • 初期状態ではペアリング情報を全て消しておく。
  • 上記設定では、ペアリングができたらautocallが動いてHFPでの接続を張りにいく。
  • HFPが張れたことをCDの設定でPIO7(0x80)に反映させる。
  • bindでPIO7の立ち上がりを検出して、HFPにAT+CNUMを送る。5秒間のディレイを置いているのは、端末側での接続受付確認作業に要する時間を待つため。
  • 接続が切れたらペアリング情報を消去しておく。

WT32側の動きにともなうメッセージは次のようになります。

ここでは電話番号を調べてみましたが、電話発呼するとかもできますね。
同じ要領でHFPの代わりにA2DP/AVRCPを張ると、音楽プレーヤの再生を勝手に開始するなんてデモもできます。機会があったら、次はこれをやってみたいな。