1
1

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 3 years have passed since last update.

屋内環境を手軽にモニタリングする~③TI SensorTag CC2650から温度/湿度/照度などをJavaで取得する(Bluetooth LE / bluez-dbus)~

Last updated at Posted at 2019-09-04

はじめに

前回の記事で、テキサス・インスツルメンツ社のSensorTag CC2650について、少し触れました。本記事では、bluez-dbusを使用して、CC2650から各種センサーデータを取得するために作成したJavaライブラリcc2650-driverの概要を紹介します。といっても、Githubの内容そのままです。実装の詳細や使い方のサンプルは、Githubのコードを参照して下さい。

CC2650のセンサーデータ

CC2650は、ボタン電池のCR2032で駆動するBLEセンサーデバイスです。cc2650-driverでは、以下のデータを取得するように作成しました。

  • システム情報
    • ファームウェアバージョン
    • バッテリーレベル
  • センサーデータ
    • 物体温度 / 周囲温度
    • 湿度
    • 気圧
    • 照度
    • 運動(角速度 / 加速度 / 磁気)

ファームウェアバージョンを取得する理由は、バッテリーレベルが1.30以降でサポートされており、バッテリーレベルの取得の可否を判断するためです。このために、バッテリーレベルを取得する機能をbluez-dbusにPRして、マージしてもらいました。また、センサーデータの取得には、次の方式に対応しています。

  • 直接読み出し
  • 通知(Notification)

CC2650の場合、通知方式で指定できる最大の時間間隔は2550 msecとかなり短いです。これが使い物になるかどうかは、用途次第と思います。わたしは、これら環境情報をcrontabスタイルのスケジュールで、例えば1分間隔で取得することを考えているので、通知方式ではなく直接読み出し方式で使用しています。

更に、CC2650には通知方式の一機能として、Wake On Motionがあります。これは、揺れを検知すると、指定した通知の時間間隔で、運動のセンサーデータを10秒間、送信することができます。これを利用して、例えば動きを想定していない箇所にCC2650を貼り付けて、万一の動きを検知することができます。cc2650-driverは、Wake On Motionにも対応しています。

CC2650で気付いたこと

CC2650はボタン電池駆動ですが、どれ位の期間、連続稼動できるかは良く分かりません。経験的には、バッテリーレベルが60位になると使用できなくなりました。なので、このバッテリーレベルという指標は、バッテリーの残量、というよりも、電圧に関連した何らかの指標なのではと推測しています。

サンプルコード

**cc2650-driver**の処理の肝は、bluetooth-scannerと同様に、dbus-javaが提供するAbstractPropertiesChangedHandler.javaextendsしたクラスを用意して、public void handle(PropertiesChanged properties)を実装することです。詳細は、Githubのコードを参照して下さい。cc2650-driverを使用した以下のサンプルコードをクラスファイルに含めておきました。

  • CC2650Driver#testRead()
  • CC2650Driver#testNotification()
  • CC2650Driver#testWakeOnMotion()

一連の記事

このシリーズは、以下の記事から構成されます。

  1. 動機とコンセプト
  2. Bluetooth LEアドバタイズ信号をJavaでキャッチする(Bluetooth LE / bluez-dbus)
     関連するGithubはこちら
  3. TI SensorTag CC2650から温度/湿度/照度などをJavaで取得する(Bluetooth LE / bluez-dbus)(今回)
     関連するGithubはこちら
  4. MH-Z19BからCO2濃度をJavaで取得する(シリアル通信 / jSerialComm)
     関連するGithubはこちら
  5. PPD42NSからPM2.5濃度をJavaで取得する(GPIO / Pi4J)
     関連するGithubはこちら
  6. 産業オートメーション機器の稼動情報をJavaで取得する(OPC-UA / Eclipse Milo)
     関連するGithubはこちら
  7. 簡易ツールにまとめる
     関連するGithubはこちら
  8. 後記

追記

[2019.11.16]
簡易ツールの最新情報は、こちらをご参照下さい。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?