WRX micro:bitを車両で使う その29 環境モニターを作る(気温・気圧・湿度編)

Ad,micro:bit,社外部品・DIY

昨年(2020年)は暖冬でしたが、2021年は冬らしい気温になっています。そして何より新型コロナの感染拡大があり、2度目の緊急事態宣言も出てしまいました。今後はまた休日でも外出を減らして家に居ようと思っていますが、最近の冷え込みと室内の乾燥が気になるので、micro:bitで気温や湿度を測ってみる事にしました。

スポンサーリンク

micro:bitでは本体のみでも温度が測れますが、プロセッサー内の温度を見ています。今回は湿度も測りたいので、「BME280」というセンサーICを搭載したモジュールを購入して、これをmicro:bitに繋いで使用してみます。

BME280

BME280はボッシュ社のセンサーICで、気温・湿度・気圧の3つを測定出来ます。このICを搭載したモジュールは主にRaspberryPiやArduino用として数多くの種類が販売されています。micro:bit用にもブレイクアウトボードに搭載される形などで幾つか製品がありますが、今回は先の一般的(?)なRaspberryPiやArduino用の物を購入しました。

今回購入したモジュールは上記です。購入はAmazonから。BME280を搭載したモジュールは種類も沢山あり、接続はI2CとSPI通信がほとんどですが、電源については3.3Vあるいは5Vに対応した物があります。今回はmicro:bitでI2C通信を利用しようと考えていますが、アドレスは「0x76」がデフォルトで基板上のパターンをカットすると「0x77」に変更出来る様です(私は行っていません)。

BMP280

注意点として、見た目は全く同じでセンサーICが「BMP280」という物もあります。こちらは湿度が測れずに気温と気圧のみです。今回購入したモジュールも基盤上に「BME/BMP280」と書かれていて、これを見ただけではどちらのICが搭載されているのか区別が付きません。販売元の情報を信じるしかないのですが、Amazonの別製品ではBME280として販売されているのに、実際にはBMP280が搭載されていた事例(レビュー)もありました。ICが正方形だとBME280、長方形だとBMP280とも書かれていました。

届いたモジュール

モジュール基盤の大きさは約13×10mmでとても小さいです。ヘッダーピンは半田付けされていないので自分で付ける必要がありますが、半田付けされている製品もあります。

BME280のICも3mm角程度の大きさです。表面の刻印でもBMP280との区別が付く様ですが、そもそも私の肉眼では見えませんでした。スマホカメラでマクロ撮影しても上記の通り。しかし形は正方形なのでBME280である事を信じます。

ヘッダーピンを半田付けしました。この作業もなかなか大変です。ちゃんとパターンに付いたのかスマホで撮影して確認しましたが、実際に動作させてみないと正直分かりません。

micro:bitとの配線

micro:bitとはI2C通信で接続するので端子19と20を使用します。従ってmicro:bit単体では繋ぐ事は出来ないので、別途ブレイクアウトボードが必要です。私は「KittenBot IOBIT V2.0」を使用しています。このボードは各端子のヘッダーピンの他、5V電源も使用する事が出来ます。

配線はジャンパー線を利用しますが、接続自体は何も迷う事はありません。BME280のVINに5Vか3.3V(製品による)、GNDにはGNDを繋ぎ、さらにSCLとSDA同士(micro:bit側は19がSCL、20がSDA)を繋ぐだけです。

プログラム

micro:bitのプログラムはいつもの通りMicrosot MakeCodeのブロックエディタで行います。拡張機能から既に公開されているBME280用の機能も利用出来ます。メニューの「高度なブロック」から「拡張機能」を選択し、検索欄に「BME280」と入力して検索すれば幾つか出てきます。

今回は最初にある、その名も「BME280(リンク先はGitHub)」を使用してみます。クリックする事でメニューにブロックが追加されます。

追加されたブロックには、気温や湿度のブロックの他にしきい値による条件ブロックもありました。

早速この追加されたブロックを使ってテストをしてみます。上記は最初にBME280をONにしてアドレスを「0x76」に指定し、後は繰り返しLEDに気温、気圧、湿度を表示させます。追加されたブロックには「Dewpoint(露点温度・wikiページ)」というブロックもあります。これはセンサー値ではなく気温や気圧、湿度から計算で出されている様ですが、これもプログラムに入れておきました。

BME280の拡張機能は日本語の物(GitHub)もあります。これを使用したい場合はGitHubのアドレスを拡張機能の検索欄に入れる事で、今回の拡張機能と同様にMicrosot MakeCodeにブロックが追加されますが、Microsoftから正式に承認を受けた物ではありません。ただしこの様に未承認でGitHubのみで公開されている物は数多くあります。

注記

拡張機能で利用した「BME280」で、私の環境ではいつのタイミングからかアドレス指定のブロックで数値が入力出来なくなってしまいました(上記矢印)。以降で出てきますが同じI2C通信のLCDパネルモジュールの拡張機能にもアドレス指定のブロックがありますが、こちらは特に問題ありません。

この場合はエディターを一旦JavaScriptにして、「null」になってしまっている箇所に直接アドレス(今回は0x76)を記載すれば、一応ブロックでも反映されます。

動作結果

上記のプログラムをmicro:bitに転送して気温等が測定出来るか確認してみましたが、気温や気圧等、一応数値は全て表示されました。一番心配だったのはヘッダーピンの半田付けですが、どうやら上手く出来た様です。ただし気温や気圧等に基準は無いので、測定値に関してはBME280の精度を信じるしかありません。

気温と湿度が表示される時計があるので比べてみましたが、気温は1度、湿度は2%ほど誤差がありました。ただしどちらが正確なのかは分かりません。またこの時の気圧は「1010(hPa)」、露点温度は「7(度?)」と表示されました。気象庁サイトで過去の平均を見ると東京の現地平均(1月)が1011hPaなので、ほぼ合っているでしょうか。他の方法で気温や気圧を正確に知る事が出来るのであれば、micro:bitのプログラムで誤差分を足し引きしても良いと思います。

I2C通信について

micro:bitは2020年11月に、本体の新バージョン(v2.0)が発売になっていますが、私が試した限りでは外部接続によるI2C通信が現状では出来ません。micro:bit内部の方位センサーや加速度センサーもI2Cに接続されていますが、こちらは問題なさそうです。従って今回使用しているmicro:bitは旧バージョン(v1.5)です。

念の為、同じプログラムを新バージョンのmicro:bitにも転送して確認しましたが、気温や気圧は全て「0」でした(露点温度は計算結果からか「-20」)。やはりI2C通信が出来ていない様子です。新バージョンのI2C通信の外部接続は仕様が変わったそうなので、その辺りのバグかと思いますが、ファームウェアの更新で直る事を期待しています。

複数モジュールによるI2C通信

I2Cはバス通信なので、I2C仕様の複数のモジュールを接続出来ます。アドレスを指定しているのはその為で、各モジュールで重複しない様にします。

上記では同じくI2C通信仕様のLCDパネルモジュールを使用して、micro:bit本体ではなくLCDパネルに測定値を表示させました。やはり見やすさは全く違います。BME280を少し触る程度でも気温や湿度が変化します。ちなみにLCDパネルモジュールのアドレスは「0x27」です。詳しくは下記記事にて。

その他

今回はとりあえずmicro:bitからBME280を使用して気温や湿度、気圧を測定してみましたが、問題無く測定値を読み取る事が出来ました。

また合わせて上記の「CCS811」というセンサーICを搭載した、CO2相当量を測定出来るモジュールも購入しています。こちらもI2C通信なので最終的にはmicro:bitにBME280とLCDパネル、このCCS811を加えた形で環境モニターとして製作し、さらに室内ではなく車内では主にCO2がどの様に変化するのかを見てみたいと思っています。次回はこのCCS811モジュールを試してみる予定です。

※micro:bit用のモジュールはメーカーから拡張機能も提供されている場合がほとんどですが、RaspberryPiやArduino用の汎用モジュールは利用出来る拡張機能が無い場合もあります。汎用モジュールを購入する場合は先に利用出来そうな拡張機能を探した方が良いと思います。最終的には実際に試してみないとわかりませんが・・・。

「micro:bit」関連記事

以下は「micro:bit」タグの記事一覧です(投稿順)。現在の記事とこれ以降に投稿した記事も含みます。「その24」までの記事ではmicro:bit本体のバージョン「1.5」を使用しています。

その他

FA用PLCとELM327を使用した「OBD2」関連の記事は以下の記事から始まります。

注記

    • このブログ内で書いている内容はあくまで私の利用する製品(アプリ含む)や機器での場合です。他メーカーの製品や機器をはじめ、同じメーカーの製品・機器であってもバージョン違い等の場合もあるので、記事内容の保証や責任を負う事は出来ません。
    • 記事内で紹介している製品や、その他の類似製品を購入・利用する場合はそのメーカーや購入先で仕様等を確認し、自己判断と自己責任の下で利用して下さい。
    • 記事内で公開しているmicro:bit用プログラムは自由に利用・改変して頂いて構いません。ただし不具合やバグもありますので、プログラムを利用した際の故障や事故等についての保証や責任を負う事は出来ません。自己判断と自己責任の下で利用して下さい。
    • micro:bit製品やプログラミング、その他記事内容について個別の問合せや依頼を頂いても回答する事は出来ませんので、予め御了承下さい。
    • BBC micro:bitは、micro:bit教育財団の登録商標です。その他のブランド名または製品名は各所有者の商標です。