Node-REDとラズパイで温度・湿度・気圧を測定する(BME280)


はじめに

Node-RED で BME280 を使っている記事が見当たらなかったので、今回つまづいたところを踏まえながらメモをかねて、実装の説明をする。

BME280

気温・湿度・気圧 の3つのセンシングをたった1つでできる優れもの。
※秋月電子で販売されているものと、amazonで販売されているもの、そのほかのルートで販売されているものでは、センサーはBME280でも、使っているボードが違うため、データシート(取り扱い説明書)を読んで、配線を行うこと。

実装(BME280編)

今回、使っているBME280はamazonで購入した(amazonではBMP280が届くことがあるらしいので注意)ものである。
今回のボードは以下のようなもで、

それぞれのピンに配線を行っていく。ピンの配線は以下の通りである。

BME280 raspberry pi (4)
VCC +3.3V [1番]
GND GND [9番か6番がおすすめ]
SCL GPIO 2 [5番]
SDA GPIO 3 [3番]
CSB 未接続
SDO GND か +3.3V

※SDOに関しては、LOW(GND)でI2Cアドレスが0x76となり、HIGH(+3.3V)でI2Cアドレスが0x77となるので、注意すること。
配線をはんだ付けする場合は、GNDを9番にすることで、横1列5個のメスピンで安定した配線ができるので、おすすめです。

実装(ラズベリーパイ編)

OSは最新のRaspbianをインストールしてください。

I2Cの設定

こちらを参照してI2Cの有効化を行ってください。詳しく見た方が良いですが、設定をまとめると以下のようになります。(ターミナルで実行)

sudo apt update
sudo apt -y upgrade    (必要に応じて)
sudo apt install -y i2c-tools

raspi-configからのI2Cの有効化

sudo raspi-config

【Interfacing Options】→【I2C】→【はい】→【了解】→【Finish】→【再起動】

sudo reboot

再起動後にI2Cアドレスの確認
以下のコマンドを実行後、 0x76 か 0x77 (設定した方)が確認できればOK

sudo i2cdetect -y 1

Node-REDの設定

Node-Red User Group Japanを参照してNode-Redをインストールして、ローカルで実行してください。詳しく見た方が良いですが、設定をまとめると以下のようになります。(ターミナルで実行)

インストール.
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
実行.
node-red-pi --max-old-space-size=256

http://<XXXXX>:1880というアドレスが表示されるので、そのアドレスをブラウザで開いてください。
フローエディタが表示されたら、以下のように移動
【≡】→【パレット管理】→【ノードを追加】→【検索エリアにbme280と入力】→【以下の画像を参照してノードを追加する】

入力にBme280のノードが追加される

以下の画像のようにノードを作成する

デプロイをしてから、True信号を送り、デバッグエリアに以下の画像のような気温・湿度・気圧のセンシングデータが取得できれば、完了です。

最後に

お疲れ様でした。
ミスや、改善点などがあれば、ご指摘いただけるとありがたいです。