環境センサBME280と光センサBH1750をRaspberry Piに冗長化I2C接続する

公開 | 更新 

以前Bosch社の環境センサ BME280 を Raspberry Pi の I2C バスに2個並列に繋いで、計測の信頼性を高める手法を紹介しました。今回はこれに、Rohm社の BH1750 光センサを加えて計測項目を増やしてみます。今回追加するのは、Rohm社のBH1750光センサです。I2Cセンサモジュールとしては、似て非なるピンアサインのGY-30とGY-302の2種類を入手することが出来ます。

図1.2つの異なるBH1750

図1.2つの異なるBH1750

どちらのモジュールもBME280の時と同様、次の要領でI2Cアドレスを違えることが出来ます。

    • 0x23 デフォルト
    • 0x5c ADRに電圧を加えてHigh

この機能を利用して、2個のBME280と2個のBH1750を1枚の基板上にレイアウトするための配線を設計します。まずはGY-30ではこのようになります。

図2.BME280x2_BH1750(GY-30)x2 配線図

図2.BME280x2_BH1750(GY-30)x2 配線図

両センサのGNDのピンアサインに親和性が乏しく、線が交叉する箇所が出来てしまいます。次に、GY302で設計してみましょう。

図3.BME280x2_BH1750(GY-302)x2 配線図

図3.BME280x2_BH1750(GY-302)x2 配線図

 

綺麗に配線させることが出来ました。こちらのモジュールを採用することにして、実際にユニバーサル基板に組んでゆきます。

図4.センサスティック部品

図4.センサスティック部品

適当な銅線を図3の要領でユニバーサル基板上に編んでゆき、コネクタピンと共にはんだ付け。ちなみにこの銅線、CAT5ケーブル端材の芯線を使っています。

図5.センサスティック基板表裏

図5.センサスティック基板表裏

実際の運用時に基板剥き出しは印象悪いので、梱包に使われるウレタンスポンジで包み、タイラップ止めにしてみました。

図6.センサスティック完成

図6.センサスティック完成

出来上がったセンサスティックは、実家の居間の片隅に設置したRaspberry Pi 2台にそれぞれ1セットずるI2C接続され、本記事執筆時にはもう1年以上稼働を続けています。

図7.サイト設置例 2台のRaspberryPiそれぞれに繋がるセンサモジュール

図7.サイト設置例 2台のRaspberryPiそれぞれに繋がるセンサモジュール

接続したセンサを早速Raspberry PiからI2Cバススキャンしてみましょう。

問題無く4つの応答がありました。既にBME280を使って計測している機体なので、今回新たにBH1750を扱うのに必要なパッケージはこちら。

実際に動いているPythonスクリプトはこのようになっています。

これをThingSpeak上でみると、

図8.ThingSpeakデータ取得

図8.ThingSpeakデータ取得

ThingSpeakはチャンネル当たりの最大フィールド数が8個なので、これでいっぱいいっぱい。似たようなデータをだらだら発するのではなく、ローカルで平均取ったり比較したりして、精度や濃度の高いデータセットにしてから送信するしくみが今後の課題です。

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA