10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Bluetooth端末の情報をスマホで受信して何か面白いことしたい!(2/2) 〜iOSで周辺機器をスキャンする〜

Posted at

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)の商品や作り方ページをご覧になれば結構簡単に作れるそうです。ご参考までに。

他のセンサー類と組み合わせて基板から不要な部分を取り去れば、3Dプリンターなんかで作ったケースで囲んで実生活で利用できるデバイスが作れるかもしれませんね。

商品化するにはBluetoothの技適を取得しないと電波法違反になってしまいますので、お忘れなく。

10
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?