[ラズパイ] 環境センサーBME280を使って温度, 湿度, 気圧を取得する

この記事は公開されてから7年経過しています。現在とは内容が異なる場合がありますのでご注意ください。
最新の記事や関連記事をお探しの方は下の「サイト内検索」で検索してみてください。

前回はRaspberry Pi 3でRubyでslackに通知を送るところまでやりました。今回は環境センサBME280を使って温度、湿度、気圧を取得してみます。

BME280 とは

ボッシュ社の環境センサで温度、湿度、気圧の3つの環境情報の値を同時に測定できます。
BME280単体のセンサモジュールとしても販売されていますが、今回はスイッチサイエンスさんから発売されている RPZ-IR-Sensor という赤外線 + 環境センサ ホームIoT 拡張ボードを使います。
この拡張ボードはBME280だけでなく、LED(緑、青、白、黄色)、赤外線LED、赤外線受光器、タクトスイッチx2、照度センサ(TSL2561)なども一緒になっているんです。しかも、2×20の40ピンで直接 Rasberry Pi のGPIO端子とつなげてしまえばブレッドボードを使った複雑な配線も不要です。

ただし、ピンヘッダとの接続のための半田処理が必要なので電子工作の経験がある人向けだと思います。

何年かぶりに半田ごてを握りました。

ちなみに、同時に購入していた0.3mmφの糸ハンダで最初やったんですがやっぱり半田が足りてなくて接触不良でうまく行きませんでしたので、改めて1.6mmφの半田でやり直したのが上の写真です。

BME280をラズパイに認識させる

BME280 は I2C を使ってRaspberry Piとデータのやり取りをしますので、raspi-config で 5 Interfacing > P5 I2C から I2Cを有効にします。

設定後 reboot が必要です。

再起動が終わったら I2C でBME280を認識できているか確認しましょう。
ここでは i2c-tools というパッケージに含まれるツールを利用します。

今回使用したセンサは 0x77 にアサインされているそうなので、 ちゃんと77が表示されていますね。
引数の 1 ですが、RaspberryPi の種類によっては 0 だったりします。
もし 1 でうまく行かず次のようなエラーが出る場合は 0 を試してみてください。

それか ls /dev/i2c-* を実行して確認してもいいでしょう。

BME280からデータを読み込む

では実際にデータを読み取ってみます。

うん、なにがなにやらわかりません。

pythonスクリプトで取得してみる

なので、pythonのスクリプトを使って読み込んでみます。
今回は スイッチサイエンスさんが公開されているスクリプトを使って試してみます。

おっと、smbus2モジュールが必要なようです。

あらためてデータ取得してみましょう。

お、取得できましたね。
何度か繰り返してみて更新されるか試してみましょう。

センサのところを指で触ってたら温度が上昇しました。
うまいぐあいにデータが取得できるようになりました。

次回はrubyを使ってBME280からデータを読み込んでslackに通知してみます。