Bluetooth端末の情報をスマホで受信して何か面白いことしたい!(2/2) 〜iOSで周辺機器をスキャンする〜 の続編です。
Bluetooth 4.0の端末をiOS端末でスキャンしてみる
CoreBluetoothというフレームワークを利用して色々なことができそうです。
大きなライブラリではないので、どういうことができるのか公式リファレンスを眺めると大体想像がつくのではないでしょうか。
リファレンスで触れられている用語をもっと噛み砕いた記事がこちらになります。リファレンスとセットで読むと、全体の概念が理解しやすいです。
サンプルを動かしてみる
iOSでアドバタイズしている周辺のBluetooth機器から特定の情報だけをサブスクライブするサンプルを作成しました。
ここで「アドバタイズ」とは「情報発信してまっせ!!」という情報を広く発信していることです。受信圏内にいれば複数機器のアドバタイズ情報を受け取ることができますが、全てを受け取るということはまず無いでしょう。
通常は「○○ボタンが押された」とか、心拍数が変わったとか、電池の残量が変わったとか、ほしい情報に限定すべきでしょう。特定のサービスを持った機器と接続し、サービスの中の特定のキャラクタリスティックの値についての更新通知を受け取ることを「サブスクライブ」と言います。
サンプルでは
#define SERVICE_UUIDS nil //@[[CBUUID UUIDWithString:@"UUID"]]
#define CHARACTERISTIC_UUID nil //[CBUUID UUIDWithString:@"UUID"]
のようにまずは特定せずに全て受信するような実装にしています。手近なBluetooth機器をONにして動かせば、とりあえず全ての情報を受信してログに垂れ流すようにしています(そのせいで警告が出ていますが悪しからず)。
流れに沿って出力されるログを地道に解析すれば、どの機器のどの情報がどんな値で受信されているのか確認できると思います。応用すれば実世界の人のアクションに対してアプリケーションを反応させることができるようになります。
また、上で紹介したAppleのサンプルではiOSをBluetooth発信側にすることもできるので、iPhone同士のデータ送受信で何か面白いアプリができそうです。
自分でいろんな情報を発信するBluetoothデバイスを作る
ハンダ付けとか得意な人は、Arduinoという基板+Bluetoothチップを買って情報発信プログラムを組み込めば自作のBluetooth周辺機器が作れるそうです。
私はその辺りは全く詳しくないですが、リンク先(Amazon)の商品や作り方ページをご覧になれば結構簡単に作れるそうです。ご参考までに。
- Arduinoをはじめようキット
- Arduinoをはじめよう 第2版 (Make:PROJECTS)
- BLEモジュール BLESerial
- ArduinoとiPhone端末をBLE(Bluetooth 4.0)でつないでみる|浅草ギ研
他のセンサー類と組み合わせて基板から不要な部分を取り去れば、3Dプリンターなんかで作ったケースで囲んで実生活で利用できるデバイスが作れるかもしれませんね。
商品化するにはBluetoothの技適を取得しないと電波法違反になってしまいますので、お忘れなく。