BME280温湿度・気圧センサーの仕様の概要を確認します。
この記事は更新済みです
現在、PICマイコン電子工作入門実践編シリーズの記事内容を最新の情報に合わせて、2025年9月までを目標に全面的に更新しています。
更新の理由は次のとおりです。
- 記事で使用している部品の中に、現在では調達できない部品があるため
- 記事内容に古い記述があるため
- 掲載している天気予報プログラムのアルゴリズムを改善するため
更新期間中は、新旧の記事間で一部内容に矛盾が生じる可能性があります。 ご不便をおかけいたしますが、ご理解のほどよろしくお願いいたします。
なお、更新済みの記事には冒頭に「この記事は更新済みです」の表示をしております。
引き続き、よりわかりやすく、役立つ情報を提供できるよう努めてまいります。 今後ともよろしくお願い申し上げます。
BME280温湿度・気圧センサーの利用上の注意点
はじめに、今回使用する温湿度・気圧センサーモジュールについて注意点を説明します。
このセンサーは「温湿度・気圧センサー」となっていますが、実際には温度データはセンサーの周りの気温とは一致しないことがあります。そのため取得した温度データはあくまで参考値になります。
その背景について簡単に説明します。
このセンサーモジュールは、「BME280」というセンサ部品を搭載しています。
このBME280は、湿度センサと気圧センサーが搭載されていますが、これらのセンサーは動作温度が変化すると特性が変化します。
そのため、湿度と気圧を測定する際、湿度センサーと気圧センサー本体のの温度を測定して、データを補正する必要があります。
湿度センサーと気圧センサーとその制御回路は、動作時に少し発熱します。(PCやディスプレイは動作中にちょっと熱を持ちますよね。それと同じようなイメージです)
そのため、BME280の温度センサーで測定した値は、まわりの環境の気温より少し高くなってしまいます。
ところで、センサーが動作するときの発熱を考慮すれば、測定した温度データから一定の値を引けば気温がわかるのではないか、という気もしますよね。
でもその発熱は状況によって変わるため、測定したデータから気温を推測するのも難しい状況なんです。
センサーは測定時は電力を消費することにより発熱しますが、測定していないときはほとんど電力を使いません。
また、このセンサーは測定モードがいくつかあり、一定間隔で(0.5秒〜1秒)測定するモードや、測定指示をしたときのみ測定するモードがあります。
そのため、測定モードにより消費電力が異なり、センサモジュールの発熱量も異なります。
このような状況から、このセンサーで測定した温度データは、あくまで湿度と気圧の測定値の補正用ということになっています。
BME280のデータシートには、取得できる温度データについては以下のように説明されています。
“The integrated temperature sensor has been optimized for lowest noise and highest resolution. Its output is used for temperature compensation of the pressure and humidity sensors and can also be used for estimation of the ambient temperature.”
(BOSCH社 BME280データシートより引用)
意訳すると、「温度センサーはめっちゃ性能がいいんですが、これって気圧データと湿度データの補正用なんですよね。まぁ周囲の気温の参考程度にしてもらう分には構わないですが、ごめんなさい」という感じです。
実践編では気温も測定しますが、このような理由から温湿度・気圧センサーでは測定せず、別に温度センサーを使用しています。
データ通信の観点からみたセンサーの内部構造
これからPICマイコンを使用して、このセンサーモジュールとSPI通信でデータ通信を行います。
SPI通信の基本は前回までの記事で確認してきましたが、そうは言っても、一体どうやって温湿度・気圧データを取得するのか、さっぱりわかりませんよね。
そこで、センサモジュールの内部構造とあわせて、どのようにデータ通信すればよいのか、概要を説明します。
センサーモジュール内部のメモリの構造
このセンサーモジュールは次のように内部にデータを格納するためのメモリを持っています。
このメモリはレジスタとも呼ばれていますので、今後はメモリ、あるいはレジスタと表現します。

このメモリは以下のようにいくつか種類があります。

「測定データ格納メモリ」はその名の通り、測定した温度、湿度、気圧の数値が格納されているメモリです。
「動作設定用メモリ」は、測定モードなどのセンサーモジュールの動作に関わる設定値を格納するメモリです。
また、センサーはその製造工程で全く同じ特性にすることはできませんので、センサーごとに測定値の偏りがあります。
そのセンサごとの偏りを補正するために「校正用データ格納メモリ」に構成用データが格納されています。
通信のやり取り
次に、PICマイコンとセンサーの間で、どのようなやり取りをして温湿度・気圧データを取得するか説明します。
PICマイコンとセンサー間では、SPI通信でデータ通信を行って、これらのメモリに格納されているデータを読み出したり、設定値を書き込んだりします。
以前の記事で、リビングの母親から勉強部屋の息子に用事の情報を送って、勉強部屋からリビングにその返事をする方法を説明しましたよね。

PICマイコンとセンサー間では、これと同じ要領でSPI通信でデータのやり取りをします。
例えば、測定データに格納されている湿度のデータが欲しい場合は、次のようにSPI通信を行います。

センサモジュールは、PICマイコンからの要求に対して、メモリに格納されている測定データを送り返すわけです。
具体的なSPI通信手順や、詳細なデータ構造などは次回の記事で説明します。
温湿度・気圧データ取得の流れ
次に、温湿度・気圧データを取得するまでのデータ通信の流れを説明します。

データ通信は大きく分けて「電源投入後1回のみ」行うことと、「測定のたびに繰り返し」行うことがあります。それぞれ概要を説明します。
電源投入後1回のみ行うこと
センサーモジュールは電源が入るとすぐに測定データを送ることができるわけではありません。
最初に、PICマイコンから動作設定や測定条件などを設定する必要があります。
また、取得したデータは校正する必要がありますので、最初に構成用のデータをもらいます。
これらの作業は電源投入後に1回行うのみです。
測定のたびに繰り返し行うこと
センサーから動作設定や構成用データをもらったあとは、温湿度、気圧の測定ができるようになります。
測定を行うとき、最初にPICマイコンからセンサーに対して「測定してください!」と測定の指示をします。
この指示により、センサーは内部メモリに測定したデータを保存します。
次に、PICマイコンはその測定データをセンサーから取得します。
なお、この通信の流れでは、測定するタイミングを都度PICマイコンから指示をしていますが、他にも一定時間ごとに測定するモードも用意されています。
実践編では、測定するタイミングをPICマイコンから指示する方式で製作していきます。
今後の記事内容
次回は、このセンサモジュールのSPI通信手順とメモリ構成の詳細を確認します。
詳細までわかると、すぐに測定ができそうな気もしますが、センサーから取得したデータは校正する必要があります。
実は、この校正のための計算方法がかなり複雑なんです。
そこで、今後の記事では次のように説明を進めていきます。
センサーモジュールのSPI通信手順とメモリ構成の詳細を説明します。
このセンサーモジュールのSPI通信方法を確認するために、簡単なデータ通信を行います。
具体的には、このセンサーモジュールから1バイトのデータを取得して、正しく値が取得できるか確認することにより、実際の通信方法を確認します。
ここまでの記事で、このセンサーモジュールの使い方が分かりますので、最後にいよいよ温湿度・気圧データを取得します。
更新履歴
日付 | 内容 |
---|---|
2018.4.16 | 新規投稿 |
2025.7.27 | 説明内容補足 |
このセンサーに温度測定機能があるのに別に温度センサーを使うのが??でしたが、今回の説明で納得できました。
はい、このセンサの中にある温度センサは、湿度・気圧センサの温度を測る温度計なんですよね。測定時の電力はかなり少ないので、気温にも使えるかな、と思ったのですが、測定して見ると2〜3度高かったので、気温計に使用するのはちょっと難しそうです。