LoginSignup
2
0

More than 5 years have passed since last update.

BeagleBone の Node.js (node-red)で BME280 を使うモジュール を公開しました

Last updated at Posted at 2017-08-14

BeagleBoneとBME280の接続

IMG_1346.JPG
写真は別のセンサへの配線もあるために線の本数が多くなっています。
ブレッドボードの奥にある緑の基板がBME280が載っているものです。
BME280への電源供給はP9-3のVDD_3V3(右赤)とP9-45のDGND(黒)です。
P9-19をSCL(白)、P9-20をSDA(青)として使います。
SCLとSDAの信号線は10kΩの抵抗を使ってVDD_3V3へプルアップします。
BME280の近くでVDD_3V3とDGNDの間に1μFのバイパスコンデンサを入れます。
BME280のi2cアドレスは0x76となるようにします。

rootでインストール

後ほどnode-redでも使うためにグローバルにインストールすると良いでしょう。

$ sudo su -
# npm -g install lsd-bme280

テストプログラム

1秒毎に気温・気圧・湿度を表示します。

test.js
var sleep = require('sleep');
var async = require('async');
var BME280 = require('lsd-bme280');

var bme280 = new BME280(0x76, '/dev/i2c-2');

async.forever(
    (callback) => {
        bme280.async_get_data((err, res) => {
            console.log(res);
            sleep.msleep(1000);
            callback(null);
        });
    }
);

実行(中断はCtrl-c)

# node test.js

結果

スクリーンショット 2017-08-15 2.12.25.png

node-redで使えるようにする準備

/root/.node-red/settings.js を編集します。
functionGlobalContextの中に以下のように
bme280:require('lsd-bme280')を追加します。

    functionGlobalContext: {
        bme280:require('lsd-bme280')
        // os:require('os'),
        // octalbonescript:require('octalbonescript'),
        // jfive:require("johnny-five"),
        // j5board:require("johnny-five").Board({repl:false})
    },

そしてリブートすればnode-redのfunctionでbme280が利用できるようになります。

# reboot

node-redで使う

次のようにノードを配置します。
スクリーンショット 2017-08-15 20.22.26.png
functionの名前はbme280とし中身は以下のように記述します。

var bme280 = context.get('bme280');
if (!bme280) {
    var BME280 = global.get('bme280');
    context.set(
        'bme280',
        new BME280(0x76, '/dev/i2c-2')
    );
    bme280 = context.get('bme280')
}
bme280.async_get_data((err, res) => {
    var msg = {}
    msg.payload = res;
    node.send(msg);
})
return null;

この状態でデプロイしてtimestampの左側をクリックすると、その時の気温・湿度・気圧が次のようにデバッグ出力されます。

スクリーンショット 2017-08-15 20.27.47.png

このようにjsonで出力されるので各値へは
気温:msg.payload.temp
湿度:msg.payload.humi
気圧:msg.payload.pres
で参照できます。

ダッシュボードを使って他のセンサやマイコンからの情報を表示してみたイメージ。
左縦の青色がBeagleBoneBlackでのBME280からの情報です。
スクリーンショット 2017-08-15 20.42.59.png

参考

npm:https://www.npmjs.com/package/lsd-bme280
github:https://github.com/koki-ogura/lsd-bme280

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