こんにちは。
「Raspberry Pi」に接続して利用できるセンサキット類が各種販売されています。センサ類の評価や各種実験に手軽に利用できそうです。今回は、㈱秋月電子通商から販売されているBME280モジュールキット「AE-BME280」を接続し、気圧、温度、湿度を計測してみました。
「BME280」は、ポピュラーなBosch社製の気圧センサ(humidity and pressure sensor)です。Bosch社のホームページを見ると、データシート上の分類は湿度センサに入っていますが、気圧・温度・湿度が計測できるため、Web上にも多数の記事が公開されています。
Bosch社のWebによると、気圧センサは「BMPxxx」シリーズとして展開されており、気圧と温度の2種類を計測します。「BME280」は湿度センサが追加されたモデルで、さらにガスセンサが追加された「BME6xx」シリーズもあるようです。
筆者と絶対圧(気圧)センサの関わりは古く、デジタル方式の気圧センサが手軽に入手できない時代から、国産のアナログ方式の気圧センサを「力センサ」の気圧特性補正に使用していました。気圧センサのアナログ電圧出力をA/D変換し、「力センサ」の気圧特性を補正します。現在はBME280ではありませんが、Bosch社製の気圧センサが使用されています。温度も同時に計測できるのがメリットです。
「BME280」の仕様や使用方法はデータシートを参照するのが良いのですが、
主な仕様は、
[気圧]:300hPa ~ 1100 hPa(0℃~+65℃)、精度:±1.0hPa(0℃~+65℃)、分解能:0.18Pa(0.0018hPa)、オフセットの温度係数:±1.5Pa(0.015hPa)/K
※気圧データから「高度」計算が出来るようです。ただし測定地点の海面気圧で補正する必要があるようです。
[温度]:-40 ℃~ +85 ℃、精度:±0.5℃(0℃~+65℃)(AT,full)、分解能:0.01℃(API)
※温度はチップ内部の温度のため、自己発熱などにより外気温より高くなる傾向があります。相対値として他の機器の温度補正等に使用する場合は、あまり問題になりませんが、絶対値として正確に周囲温度を計測したい場合は、周囲温度との補正を行っておくのが良いでしょう。
[相対湿度]:0 ~ 100 %(0℃~60℃)、精度:±3%、ヒステリシス:±1%、非直線性:1%、分解能:0.008%
[内部メモリデータ]:気圧:20bit,温度:20bit,湿度:16bit
[インターフェース]:「I2C」又は「SPI」通信
[各データの計算(補正)]:データの読み取りはBosch社の専用APIが推奨されています。ただ、32bit形式の補正式のサンプルコードがデータシートに記載されていますので、マイコン等で読み取る場合はBIOSとして作成しておくと良いでしょう。内部A/D値を補正パラメータを含めて計算し、それぞれの計測値を算出します。絶対値(xx℃、yyhPa、zz%)を求めるにはサンプルコードにあるように、少し面倒な計算をしなければなりません。内部データとして計算(補正)だけに使用するのであれば、BinaryやHEXのままでも良いかもしれません。
[補正パラメータ]:チップごとに書き込まれている各計測データの補正値(各センサ毎)。温度:dig_T1~T3(6byte)、気圧:dig_P1~P9(18byte)、湿度:dig_H1~H5(7byte)、いずれも二の補数形式です。補正パラメータは元々それぞれが半導体のアナログセンサと考えれば、デジタル化の精度を出すために必要なのかもしれません。
[IIRフィルタ]:チップ内部にフィルタ機能があり、有効にすることでノイズ低減や気圧と温度の分解能を20bitまで上げることが出来ます。CPU側でIIRフィルタを構成する場合も有りますので、用途に応じで選択すると良いでしょう。
各動作設定の通信コマンドが用意されています。
この製品に限らず、半導体製品や半導体センサは世代交代が激しく、産業機器メーカが自社製品に採用すると、半導体の世代交代に合わせて自社製品のバージョンアップをしなければならないことが多くなります。チップに互換性(ハード、ソフト)があれば良いのですが、半導体センサ類は互換性が無い場合が多くみられます。
その都度、簡単なマイナーチェンジで自社の製品に代替出来れば良いのですが、多くの産業用機器メーカでは、当該部品の長期在庫で生産を維持するか(資源の確保)、工数をかけて設計変更(人的資源)を行っているのが現状と思います。これは多くの中小企業にとって大きな経済損出(資源の無駄)であり、広い意味で生産性を阻害する要因にもなっています。
筆者が関わっていた防爆機器の場合は、法規制の関係で部品の代替が利かないことが多く、設計変更には一般の機器以上に、多大な工数と費用が掛かりました。個別の企業努力だけでなく、法規制や産業界全体で、競争力を維持しながらWin-Winの関係になれるような仕組みが求められます。
閑話休題
動作フローは右図のようになります。前記したようにデータの読み取りはBosch社のAPIが推奨されていますが、内容が解らないので使用できません。計算例がデータシートに記載されていますが、それぞれの測定値は補正パラメータを用いて補正計算する必要があり、この部分は少し面倒な計算かもしれません。気圧データの計算例をみても補正計算の複雑さが解ります。温度、湿度も同様なサンプルコードが載っています。
IIRフィルタは必要に応じて使用すれば良いのですが、ノイズ低減に、低次の係数で働かせても良いと思います。簡単な設定(コマンド)で使用できますが、計測機器をリアルタイムで温度、気圧、湿度の補正を行う場合は、高速でサンプリングを行いCPU側のフィルターで調整するのも良いと思います。
温度と気圧はIIRフィルタを使用することで、20bitまで分解能を上げることが出来ますが、現実的には16bit程度でも十分だと思います。
当初はデータシートの計算式やWebの記事を参考に、プログラムを作成したのですが、初心者ゆえにエラーが頻発したため、ChatGPTを頼りに作り直しました。(この辺のやり取りの一部を「私的ブログ(随時):「ChatGPT」と掛け合い漫才??2026/3/9 に書いています。)
最終的にデータシート例にあるような複雑な計算を、自分でプログラムしなくても、Pythonライブラリの「adafruit-circuitpython-bme280」をインストールするだけで、必要なデータが入力出来るという「落ち」がありました。
本来ならライブラリに依存せず、時間をかけてオリジナルにこだわることも、必要だったかもしれません。まだまだ修行が足りません。
ライブラリも、いわゆるAPIであり、BIOSとも言えるでしょう。利用者としては便利で有り難いことですが、組込機器のようにリアルタイムの実時間処理を要求される制御には、「Python」は向いていません。BIOS部分だけでも、C言語等のリアルタイム処理に適した言語で作成するのが望ましいでしょう。
もっとも気圧や温度、湿度補正はリアルタイム補正までは必要ないかもしれません。環境変化の依存度(影響)が大きいセンサ、回路、機器等を使用して高精度、高性能を実現するのは現実的には難しく、環境補正は最小限になるように各構成要素の最適化が必要です。
「Raspberry Pi」を利用してPythonで動作させる場合、動作プログラムが簡単でも動作させる環境を作るために、I/OやRaspi本体の設定、Pythonライブラリのインストール等、事前作業が多く面倒な場合が有ります。ただ、汎用ボードの良さでもあり、多彩な周辺機器を簡単に接続できる魅力でもあるのでしょう。マイコン搭載の専用ボードでもマイコンの各種初期設定は必要になりますので、似たようなものとも言えます。組込用の汎用CPUも多機能化し、使用する機能によってI/O類を初期設定するのは必須になっています。
最近のマイコンは、豊富なI/O類、高機能演算、処理速度の向上、用途・機能に合わせた種類のCPUが豊富で、安価でもあるため、簡単な組込機器でも32bit版が使用される場合が多くなっています。信号処理やソフトウェアの共通化等も考えると、多少贅沢なCPUを使用しても、生産性が向上するなら許容できる範囲かもしれません。また、筆者は使用したことがありませんが、Arm系のCPUも共通化や生産性の向上等で、簡単な組込機器でも採用は視野に入るのかもしれません。
だだし、バッテリ、電池、太陽電池等の限られた電源で動作する機器には、低消費電力のCPUが必要になりますので、適材適所で採用することになるでしょう。もっとも月面に着陸し、写真撮影に成功した「SORA-Q」に搭載されていた、超小型コンピュータ「Spresense」(ソニー製)のメインボードは、消費電力「0.03W」と高機能、高性能で低消費電力と優れたCPUボートですので、使用者の選択肢は沢山あるとも言えます。
閑話休題
Pythonライブラリ「adafruit-circuitpython-bme280」の内部リストは確認できていませんが、推奨するBoschのAPIやデータシート上にあるような処理を行っていると予想しています。
気圧、温度、湿度の測定データは取得できたので、今後は測定データを基に各種センサ類のリアルタイムの環境補正を考えたいと思います。
同じ㈱秋月電子通商に「HX711使用 ロードセル用ADコンバーター モジュール基板」と「ロードセル シングルポイント(ビーム型) SC616C 500g」があり、組合わせて「Raspi」で動作させたいと思っています。
その他、「Raspi」で利用できる距離センサや多数のセンサ類が市販されていますので、今後試してみたいと思います。
ご意見、ご要望、ご質問、ご感想をお待ちしております。「お問い合わせ」からご連絡ください。
技術的なアドバイス、コンサルティング及び技術開発、製品開発のお手伝いを行います。
ご要望があれば「お問い合わせ」からご連絡ください。
参考文献
bosch-sensortec:
https://www.bosch-sensortec.com/en/products/environmental-sensors/pressure-sensors
Adafruit:
https://learn.adafruit.com/adafruit-bme280-humidity-barometric-pressure-temperature-sensor-breakout
https://github.com/adafruit/Adafruit_CircuitPython_BME280
https://github.com/adafruit/Adafruit_Blinka
「AE-BME280」:㈱秋月電子通商
トランジスタ技術:2025年7月号:CQ出版
「Spresense」:https://www.sony-semicon.com/ja/products/spresense/index.html
「Python」、「OpenCV」、「Raspberry Pi」の各書籍。

