CC2541をAndroidから使ってみる。

CC2541 SensorTag Development Kitについてのつづき。
http://d.hatena.ne.jp/kinneko/20131125/p4


対応アプリとかの情報のまとめはここ。
http://processors.wiki.ti.com/index.php/Bluetooth_SensorTag?INTC=SensorTag&HQS=sensortag-wiki

対応Androidバイス

対応Androidバイスは以下。

N5はまだ書いてないのかな?
N7(2012)で4.3の時は、 Bluetooth Low Energy Enabler(有料)入れてね。
https://play.google.com/store/apps/details?id=com.manuelnaranjo.btle.installer2


温度センサーは7.5msに設定されているけど、これだと初期ファームではAndroidタイムアウトしちゃう。1.4に上げることで対応できる。
私の手元のは1.4.0って書いてあるから大丈夫かな。


一応、ファームを上げる方法を調べる。
新しいファームはここ。OSX向けのアプリサンプルコードもある。
http://processors.wiki.ti.com/index.php/SensorTag_Firmware
1.5というのは、中身はこれの1.4と同じだけど、
Bluetooth low energy software stack and tools
http://www.ti.com/tool/ble-stack
CC debuggerで使えるhexイメージ、OTAダウンロード用のbinが入っているそう。
書き込み用のCC Debuggerはここ。
Debugger and Programmer for RF System-on-Chips
http://www.ti.com/tool/cc-debugger
ドキュメントはこれ。
http://www.ti.com/lit/ug/swru197f/swru197f.pdf
普通はCC Debuggerなんて持ってないから、OTAでアップデートするしかないのかな?
後でいいや。

タグサーチするAndroidアプリ

iOS用アプリと違って、Androidアプリは公式のものは、GooglePlayにはない。
とりあえず、BLEセンサータグとして見えるかどうか確認したい。
Macでは、何やらTIサイトから落としたツールを入れる必要があるようでメンドクサイ。
アプリは3つ見つかった。

B-BLE(Bluetooth4.0 Low Energy)

https://play.google.com/store/apps/details?id=com.billy.billylightblue
これはシンプル。パーミッションは、必要なもの以外要求されない。

BLE Explorer (Alpha)

https://play.google.com/store/apps/details?id=com.alexodus.bleexplorer
これもシンプル。必要なもの以外要求されない。

Bluetooth 4.0 Scanner

https://play.google.com/store/apps/details?id=com.bluemotionlabs.bluescan
こいつは、ネットワークへのフルアクセスとか、GPSとか要求する。
めんどくさい。


使ってみる。

B-BLE

B-BLEを起動する。
右上のSCANボタンを押して、タグの横のボタンを押すと、SensorTagとして見えた。
詳細も表示する。
https://lh4.googleusercontent.com/-_-2UJ93Hk8o/UpMFt7TDBeI/AAAAAAAAHJU/ZRDa2WmhN3E/photo.png
https://lh5.googleusercontent.com/-t1myZ5D1t5c/UpMFtzQUvsI/AAAAAAAAHGQ/42EJ29XirOo/photo.png

BLE Explorer

BLE Explorerを起動する。
https://lh3.googleusercontent.com/-REN-TcM2LTU/UpMFtzoiwQI/AAAAAAAAHHw/JoJs2SiAhCg/photo.png
https://lh3.googleusercontent.com/-MMERPaw8Wy8/UpMFt8twvYI/AAAAAAAAHH4/uPi6-mih__A/photo.png
こちらは、データ更新はリアルタイムでやっているようで、通信が切れると詳細表示も消える。
https://lh4.googleusercontent.com/-Qrbq4dZrmqc/UpMFt22dSpI/AAAAAAAAHHg/AiTIfHhvkPo/photo.png

Bluetooth 4.0 Scanner

Bluetooth 4.0 Scannerを起動する。
こちらは、BLEのみではなく、classicという従来のBTデバイスもスキャンできる。
BLEデバイスは切り替えが必要。
https://lh5.googleusercontent.com/-pvhu1_dd-_k/UpMFt6AcldI/AAAAAAAAHHo/whe_RUzWd3w/photo.png
https://lh4.googleusercontent.com/-BuOBleMNmd8/UpMFtzoh8OI/AAAAAAAAHHY/1P5dbn_mGGc/photo.png
https://lh6.googleusercontent.com/-uMpAoIx_MNc/UpMFt-oxe_I/AAAAAAAAHG4/1XwMuFi8KNU/photo.png
https://lh3.googleusercontent.com/-AL6X7erqsr0/UpMFtwomIPI/AAAAAAAAHG8/WGx0wXE9kqY/photo.png


いずれも、ベースのアプリは同じで、何かからフォークしているような感じだ。
サービスについても、何の値を出しているかなどについてはわからないままになる。

センサの値を読み取るAndroidアプリ

見えることはわかったので、センサの内容を読みたい。
TIのサイトで、apkをダウンロードできるのだが、Win/Linux用のアーカイブを展開する必要があって、かつサイトへのユーザー登録が必要。
お手軽ではないので、探してみる。
2つあった。

BLE SensorTag

https://play.google.com/store/apps/details?id=sample.ble.sensortag
ソースはここ。
https://github.com/StevenRudenko/BleTISensorTag
これはシンプル。パーミッションは、必要なもの以外要求されない。

SenseView Sensor

https://play.google.com/store/apps/details?id=si.mobili.senseview
汎用だが、TIのタグにも対応している。
http://senseview.mobi/supported-sensors.html
でも、ネットワークへのフルアクセスとかメンドクサイこと言う。

BLE SensorTag

BLE SensorTagを起動してみる。
タグのボタンを押すと、すぐにリストに表示された。
加速度センサと、地磁気センサしか動いていないみたい。
これって、ひょっとして、TIのサンプルそのままかも...
https://lh3.googleusercontent.com/-Ub37KKfNZks/UpMFt8yYw7I/AAAAAAAAHH8/yfBlD_KMX6Q/photo.png
https://lh3.googleusercontent.com/-cPqg145X6yI/UpMFt__K44I/AAAAAAAAHIE/m3bsKAGFt9c/photo.png
https://lh6.googleusercontent.com/-5jkd1IXTeqI/UpMFtyWn3jI/AAAAAAAAHI4/MepMuvmXzF4/photo.png
https://lh5.googleusercontent.com/-JhT28keu4sk/UpMFt0TsOOI/AAAAAAAAHJA/VDHyNt7LxzY/photo.png
と、思ったけど、Demoボタンのない項目も、タップすると詳細項目が表示された。
詳細項目は、R, R/Wなどが表示される。
設定データが表示されるものもあったが、値としては生に読んでいるだけで、意味をなさない感じがする。
https://lh6.googleusercontent.com/-rOd8VopvX_U/UpMfEaxZKEI/AAAAAAAAHKg/zmXCDk389dM/s512/25%2520-%25201.png

SenseView Sensor

SenseView Sensorを起動してみる。
デフォルトでは、Android端末の内蔵センサの様子を表示している。
設定からセンサを選ぶ。
https://lh3.googleusercontent.com/-iXhDTvM-EKU/UpMFt9CmKyI/AAAAAAAAHJI/hwFVzda5aZU/photo.png
設定はBasicとAcvancedがあるので、Basicを選ぶ。
https://lh6.googleusercontent.com/-coqUi0K3Ivg/UpMFt79X7TI/AAAAAAAAHJQ/mntpZAgZQ5U/photo.png
Androidに設定されているのがわかる。
https://lh3.googleusercontent.com/-WdQ6QfV8Qec/UpMFtyeoNGI/AAAAAAAAHIg/I-1Fc5-J_Qg/photo.png
設定でTIのセンサを選ぶと、GooglePlayに飛ばされて、ITタグ用のアプリを追加インストールする。
https://lh4.googleusercontent.com/-LL3gVAU9oN8/UpMFt1YXEUI/AAAAAAAAHIk/xXEbaNVEt00/photo.png
https://lh4.googleusercontent.com/-SbzovurJgbs/UpMFt0BX_GI/AAAAAAAAHIw/uHXf_l12My0/photo.png
https://lh5.googleusercontent.com/-FNrrRcrl7ow/UpMFt4Fw0XI/AAAAAAAAHGU/ukArV_u3swI/photo.png
画面したに2つのモードが表示される。
温度だけのものと、その他のセンサからの情報を取る2つのモードがあり、モード選択後、デバイスを選択してトップ画面に戻ると値が表示される。
https://lh6.googleusercontent.com/-MR-9QfsFu3w/UpMFt80l5cI/AAAAAAAAHGI/4ZMb9tZ7_Us/photo.png
https://lh5.googleusercontent.com/--1GQShbN1HY/UpMFt3zUmNI/AAAAAAAAHGs/fKqux8KFWI4/photo.png
https://lh6.googleusercontent.com/-qB3lviA7eo8/UpMFt26dIFI/AAAAAAAAHHI/UfJO1V2UyCw/photo.png
下の数字表示部を押すと、グラフ表示ができる。ZOOMでタイムスケールを変更できる。
https://lh3.googleusercontent.com/-lRMNQsBIz3E/UpMeQ9zUQiI/AAAAAAAAHKo/PvnxBr4Jm0g/s512/25%2520-%25201.png
温度二種類が増えているだけで、GyoとACCは同じ。
他のセンサーの値はとれていない。
残念。

Androidアプリの解説記事

Androidでのアプリ作成のサンプルなどは、以下のフェンリルの連載にある。
【連載】Bluetooth LE (5) Android 4.3 で Bluetooth LE 機器を使う
http://blog.fenrir-inc.com/jp/2013/10/bluetooth-le-android.html
この連載、他の回でも、CC2541を使っていてわかりやすい。
第1回 Bluetooth Low Energy の基礎
http://blog.fenrir-inc.com/jp/2013/09/bluetooth-le-firststep.html
第2回 iOSバイスBluetooth LE 機器を使う
http://blog.fenrir-inc.com/jp/2013/10/bluetooth-le-ios-1.html
第3回 iOSバイスBluetooth LE 機器にする
http://blog.fenrir-inc.com/jp/2013/10/bluetooth-le-ios-2.html
第4回 Windows 8.1Windows ストアアプリで BLE を使う
http://blog.fenrir-inc.com/jp/2013/10/bluetooth-le-win81.html