BME280搭載 温湿度・気圧センサモジュール

概要

温度・湿度・気圧を測定できるセンサ「BME280」が搭載された、ブレッドボードで使うのに便利なピン配置のブレイクアウトボードです。
購入は https://www.switch-science.com/catalog/2236/ でどうぞ。

電源は1.8V~3.3V。データの送受信はI2CかSPI(3線・4線)で行います。
BME280の
データシートはこちら:http://ae-bst.resource.bosch.com/media/products/dokumente/bme280/BST-BME280_DS001-09.pdf

Arduinoでの使い方が、スイッチサイエンスさんのWikiで紹介されています:
http://trac.switch-science.com/wiki/BME280

mbed で使うためのコンポーネントが公開されています:
http://developer.mbed.org/components/BME280-Combined-humidity-and-pressure-se/

データシートのKey featuresから抜粋:

  •  Package: 2.5 mm x 2.5 mm x 0.93 mm metal lid LGA
  •  Digital interface:
    • I²C (up to 3.4 MHz)
    • SPI (3 and 4 wire, up to 10 MHz)
  •  Supply voltage:
    • VDD main supply voltage range: 1.71 V to 3.6 V
    • VDDIO interface voltage range: 1.2 V to 3.6 V
  •  Current consumption:
    • 1.8 µA @ 1 Hz humidity and temperature
    • 2.8 µA @ 1 Hz pressure and temperature
    • 3.6 µA @ 1 Hz humidity, pressure and temperature
    • 0.1 µA in sleep mode
  •  Operating range:
    • -40…+85 °C
    •  0…100 % rel. humidity
    •  300…1100 hPa
  •  Humidity sensor and pressure sensor can be independently enabled / disabled
  •  Register and performance compatible to Bosch Sensortec BMP280 digital pressure sensor

がちゃコンボードで使ってみる

配線

せっかくですので、えれくら!標準ボード(?)である「がちゃコンボード」にて使ってみたいと思います。
がちゃコンボードについてはこちら

まず配線。
(「GXPxx」は、がちゃコンボードでのピン名です。詳しくはこちら)

がちゃコンボード側 BME280モジュール側
GXP01

CSB
Vcore
Vio

GXP03 SDO
GND
GXP07 SDI
GXP22 SCK

上記の他に、GXP14とGXP15を、USBシリアル変換モジュールへつなぎます。
センサから読んだ値を、シリアルコンソールで表示するためです。

配線写真はこんな感じ。
がちゃコンボードはピンが1列に並んでいるので、ブレッドボードに直接刺して使えるのです。便利!(多分)
(※これは試作ボードなので、1~3ピンが2段になってますが、気にしないでください)

別角度からもう一枚。

BME280モジュールに抵抗が2個、不細工にはんだ付けされていますが、これはプルアップ抵抗です。
ほんとははんだ付けしなくても、ブレッドボードに付ければよかったのですが、なんかボケててはんだ付けしたあとに気づきました。あーあ。

赤と黒の電線ばっかで見づらいじゃん、と言われるかもしれませんが、手元にこれしかなかったんです・・・勘弁してください・・・

プログラム

mbed IDEで作ります。
こんな感じ:

-----ここから-----

#include "mbed.h"
#include "BME280.h"
#include "gacb_GXP.h"

Serial pc(USBTX, USBRX);
BME280 sensor(GXP07, GXP22);
DigitalOut led(GXP13);

int main() {
    while(1) {
        led = 1;
        pc.printf("%2.2f degC, %04.2f hPa, %2.2f %%\n", sensor.getTemperature(), sensor.getPressure(), sensor.getHumidity());
        wait(0.5);
        led = 0;
        wait(0.5);
    }
}

----- ここまで-----

このプログラムは、Toyomasa WataraiさんのBME280_Helloをコピーさせていただき、がちゃコンボード用に修正したものです。あと、同じくBME280ライブラリ も使わせていただいてます。
ありがたやありがたや。mbedバンザイ!

gacb_GXP.h は、GXPピン名を定義したヘッダファイルです。
こちらからダウンロードできます。

ちなみに、さっきのプログラムで LED を点滅させてるような記述がありますが、これではうっすらと光るだけで点滅には見えません。めんどくさいのでほっときます。誰か修正して、えれくら!ふつうのやつで発表してください :-P

動作確認

動作確認といっても、実際には「あっれぇ?おっかしーなー?あれぇ?」などと言いつつ作ってたので、正常にデータが来た時点で確認おわってるんですけどね・・・まあいいじゃん・・・

動作してるとこのスクリーンショットはこちら。

シリアルポートの設定は、9600bps、データ8bit、パリティなし、ストップビット1bitで受信してます。

感想とか

少々お値段しますなあ、とは思いましたが、サイズちっさいですし、I2CかSPIのどちらかでデータとれますし、便利かもと思いました。ちっさい箱に詰め込まないといけない時にいいのかも。
今回使った製品は、ブレイクアウトモジュールということで、ピンが1列に並んでますが、8Pin DIPのピン配置だったらもっと使いやすい(というか小さい空間に詰め込みやすい)のかも。そういう需要があるかどうかは分かりませんけど。秋月電子さんから出たりして。

精度がいいかどうかは、ちょびっと使っただけでは、もひとつよく分からなかったです。
湿度センサは一般的に誤差が結構大きいという話を聞いたことがあるのですが、一般的な湿度センサてどんなもんか知らないので何とも・・・
あと数か月で嵐の季節がやって来ますし(これ書いてるの5月)、台風とか来たら気圧が上下したりするでしょうか、楽しみですね。

簡単にプログラムができたのは、Toyomasa Watarai さんのサンプルとライブラリのおかげなので、もう感謝するしかないですね。足を向けて寝られないので、地球上でどこにWataraiさんがいるのかリアルタイムで表示する何かがあればうれしいですね。

ということで、皆さん使うといいと思います。バイナウ!

 

最終更新:2015年05月06日 01:13