##概要
Raspberry PiとスイッチサイエンスのBME280モジュールを使用して、屋外の気温・湿度・気圧をモニターするIoTセンサーを構築する。Raspberry PiにWEBサーバーを入れ、ブラウザでグラフ化して表示できるようにする。スイッチサイエンスがサンプルコードを公開しているので流用する。
※はんだ付けが面倒なので、ピンヘッダー実装済みを使いました。
※Raspberry PiはすべてSSHからの操作です。SSHは接続できる前提とします。
いろんな方が同じ記事を書いていて今更感あるけど、備忘録として。
実際は半年くらい使っていますが、Pi3からZero Wに置き換えたついでで、手順をメモします。
##BME280をRaspberry Piに接続する
BME280はBOSHのセンサーICで、1チップで温度、湿度、気圧が測定できます。詳細はメーカーのデータシートを確認してください。また、センサーモジュールの回路図やデータシートはスイッチサイエンスのWEBからダウンロードできます。
###1.Raspberry Piとの接続
I2Cなのでデータ(SDI)とCLK(SCK)、電源(Vio)とGND(GND)のみつなげばいいはずですが、WEBページみるとI2Cアドレス設定のためにSDOをつなぐ必要があります。私は、GNDにつなぎました。
I2Cアドレスの設定方法
I2Cアドレスは、
SDO端子をGNDにつなぐと0x76
SDO端子をVioにつなぐと0x77
になります。必ずどちらかにつないでください。
ブレッドボード上でSDOとGNDを接続し、4本をRaspberry Piに接続。写真じゃ配線は見えないけど。
基板のロットによって、PIN配置が違うようなので、古いblog等の情報は危険。
回路図見ながら配線するのが安全。
###2.I2Cの有効化
まず、必要なライブラリを入れる。
sudo apt update
sudo apt -y upgrade (必要に応じて)
sudo apt install -y i2c-tools
ハードウエアの設定画面を表示
sudo raspi-config
設定画面が表示されるので、Interfacing Optionsを選択(Enter)。これもOSのバージョンによってメニュー番号が変わることがあるので項目名で選ぶこと。
I2Cを選択。
有効にするか聞かれるので、はいを選択。
古いOSだと自動起動にするか聞かれたようですが、特に聞かれず勝手に自動起動になります。
最初の画面に戻るのでFinishで終了。
再起動する。
###3.動作確認
SDO端子をGNDにつないだので、下記コマンドで0x76が読めればOK。
sudo i2cdetect -y 1
###4.サンプルコードの実行
smbus2をインストールする。
スイッチサイエンスのライブラリをダウンロードして準備する。
sudo apt install -y python-smbus
sudo pip install smbus2
wget https://github.com/SWITCHSCIENCE/BME280/archive/master.zip
unzip master.zip
cd BME280-master/Python27
動作確認。
sudo python ./bme280_sample.py
とりあえず動いたが、自動実行するにあたり、root権限ではなくユーザー権限で実行できるようにする必要がある。そのためにはI2Cを動かしているグループにユーザーを参加させればよい。
まず、I2CのデバイスIDを確認する。
sudo i2cdetect 1
yでもnでもいいので抜ける。
/dev/i2c-1
なので、グループIDを確認する。
ls -la /dev/i2c-1
グループ名はi2cとわかったので、ユーザーpiをi2cに参加させる。
sudo usermod -aG i2c pi
再起動し、所属グループを確認する。
groups
i2cがあればよい。他は使用環境により異なります。
ユーザー権限でサンプルコードを実行できることを確認。
python bme280_sample.py
とりあえずここまで。
ラズパイ+BME280でIoT環境センサー構築(その2)でWEBサーバーを作り、ブラウザで表示できるようにします。
##参考