■ホビーロボット部品の製造・販売 
  モータコントローラ、センサ、音声、画像、無線モジュールなど、
■ホビーロボット制作記事のページ (各種マイコン、PCとの接続事例)
■特殊メイク、特殊材料の販売 ※特殊メイクのコーナーはこちらに移りました。
Top(お知らせ) 製品一覧 使い方とサンプルプログラムWebショップ リンク ブログ 会社案内
 Easy Robotics for all enthusiastic people!!!  ---HOBBY ROBOT PARTS SHOP ASAKUSAGIKEN---   Since 2003...



BLE照度センサー BLECAST_BL をAndoridで読み取る
 




BLE(Bluetooth Low Enargy)の照度センサーモジュール






 ここでは、BLECAST_BLからの照度データをAndroidで取得する方法について解説致します。尚、他のBLECASTシリーズを使う場合は、ソースプログラム中のローカルネームの指定を、使用する製品の名前に変更してください。

 作成したプロジェクトファイル全体を圧縮したものがこちらになります。

 BLECAST_BL_test_a.lzh

 非常に短いプログラムなので、詳しくはソースを見ていただければわかるかと思います。接続はせず、アドバタイズデータを取得するだけです。

 Androidの場合、android.bluetooth.BluetoothManagerでBLEが使えます。まず、BluetoothManagerを初期化してインスタンスを生成します。

final BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
mBluetoothAdapter = bluetoothManager.getAdapter();

 アドバタイズデータをキャッチすると LeScanCallBack が呼び出されます。 onLeScanメソッドに渡される BluetoothDevice クラスにアドバタイス情報が格納されています。複数のBLEデバイスがアドバタイズしている場合は各アドバタイズをキャッチした瞬間にこのコールバックが呼ばれますのでBLECAST_BLかどうかを判定うします。行137のようにgetName()メソッドでローカルネームが取得できますので、"BLECAST_BL"かどうかを判定します。

 

 scanRecordにはアドバタイズデータの中のデータ部が入ります。下記のオレンジの部分です。

 scanRecord[9]と[10] の位置がセンサーデータなのでこれをデコードします。これらは符号なしの2バイトで表されています。Javaは基本的に符号付変数しかありませんので、バイトデータを 0xFFで&して符号なし変数値へ変換しています。

 この値はほぼlx(ルックス:照度の単位)となっています。10の場合は10lx、100の場合は100lxです。

 まっくらな状態 = 0近く

 暗い部屋    = 20〜100

 電気をつけた部屋 = 300〜500

 くもりの日      = 1500〜2000

 はれの日      = 2700前後

 快晴、直射日光  = 2750以上

 そのデータをTextViewに表示させています。

 

 

 




(C)Copylight 2003. 有限会社浅草ギ研 | 通信販売の法規(訪問販売法第8条)に基づく通信販売業者の表示