0
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.

屋内環境を手軽にモニタリングする~⑪BH1750FVI(代用)から照度をJavaで取得する(I2C / Pi4J)~

Last updated at Posted at 2020-03-31

以前、こちらの記事で紹介した、環境情報をモニタリングする簡易ツールは、照度の情報をテキサス・インスツルメンツ社のSensorTag CC2650から取得します。ただ、BLE環境センサータグとして、永らく世界的に知られたSensorTag CC2650は生産中止のため、今後、入手が困難になると思われます。そこで、別のセンサーにも対応することにしました。

※2020年12月16日現在、SensorTag CC2650の生産中止の記述が見当たりません。以前、そのような記述を見かけたと記憶しているのですが…。なお、上記「テキサス・インスツルメンツ社のSensorTag CC2650」でリンクしたURLのWikiは、2021年1月15日にサポートを終了するそうで、必要なファイルやその他のコンテンツをダウンロードすることをお勧めします、とのことです。

今回、新たな照度センサーとして、ROHMのBH1750FVIを選択しました。手頃な価格であり、数百円で入手できます。

BH1750FVIセンサーとは

このセンサーは、照度を測定することができます。インターフェースはI2Cで、I2Cアドレスには、0x23or0x5cのいずれかを指定することができます。また、Raspberry Pi 3B or 4BのI2Cバスは、01の二つありますので、Raspberry Pi 3B or 4Bでは、BH1750FVIを最大4個、同時に使用することができます。
rainy_bh1750fvi_floor.png

作成したBH1750FVIのJavaライブラリ(bh1750fvi-driver)はGithubで公開しています。OSとセンサーの設定手順も書いておきました。また、このライブラリを組み込んだ環境情報モニタリングの簡易ツールは、こちらのGithubで公開しています。

Javaライブラリの基本的な使い方

bh1750fvi-driverの簡単な使い方を掲載します。以下のサンプルコードでは、I2Cバス=1、アドレス=0x23を指定しています。

import com.pi4j.io.i2c.I2CBus;

import io.github.s5uishida.iot.device.bh1750fvi.driver.BH1750FVIDriver;

public class MyBH1750FVI {
    private static final Logger LOG = LoggerFactory.getLogger(MyBH1750FVI.class);
    
    public static void main(String[] args) {
        BH1750FVIDriver bh1750fvi = null;
        try {
            bh1750fvi = BH1750FVIDriver.getInstance(I2CBus.BUS_1, BH1750FVIDriver.I2C_ADDRESS_23);
            bh1750fvi.open();
                
            while (true) {
                float value = bh1750fvi.getOptical();
                LOG.info("optical:" + value);
                    
                Thread.sleep(10000);
            }
        } catch (InterruptedException e) {
            LOG.warn("caught - {}", e.toString());
        } catch (IOException e) {
            LOG.warn("caught - {}", e.toString());
        } finally {
            if (bh1750fvi != null) {
                bh1750fvi.close();
            }
        }
    }
}

このように使い方はシンプルです。なお、Pi4JというRaspberry PiのGPIOを使用するためのJavaライブラリを使用して作成しました。

最後に

このJavaライブラリを組み込んだ簡易ツールには、センサー値をダッシュボードでモニタリングする機能とJSON形式でMQTTブローカに送信する機能があります。

最後に、簡易ツールはこちらのGithubで公開しています。

一連の記事

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

  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. 後記
  9. モーション検知(HC-SR501 / RCWL-0516)をJavaで取得する(GPIO / Pi4J)
     関連するGithubはこちら(HC-SR501)こちら(RCWL-0516)
  10. BME280(代用)から温度/湿度/気圧をJavaで取得する(I2C / Pi4J)
     関連するGithubはこちら
  11. BH1750FVI(代用)から照度をJavaで取得する(I2C / Pi4J)(今回)
     関連するGithubはこちら
0
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
0
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?