マスタリングWireライブラリ その5 温度/湿度/気圧センサBME280 ライブラリの利用
WireのライブラリでデバイスのIDが読み出せました。温度、湿度、気圧のデータも同様に読み出せますが、ライブラリがあるので、利用します。メイン・メニューのスケッチからライブラリのインクルード->ライブラリマネージャを立ち上げます。検索のところにBME280を入れると、複数のBME280用ライブラリが見つかります。ほとんどがボードを出しているメーカ製です。
●BME280 BY Tyler Glennライブラリを使う
どこのライブラリを使うかは何も選択基準がないので、ボード・メーカの名の入っていないBME280 BY Tyler Glennを使うことに決めました。
ライブラリを入れて、スケッチからサンプルのBME_280_I2C_Testを読み込みます。
実行します。
●データ転送時の波形を観測
ctrl_humレジスタ(0xF2)、ctrl_measレジスタ(0xF4)、configレジスタ(0xF5)を設定し、三つのデータを読み取っています。
このあと、データを読み取るところからスケッチを書こうと思いましたが、補正の作業が複雑なので延期します。
●BME280のデータ読み出しの流れ
- データの読み出し間隔、フィルタの有無などの初期設定データをconfigレジスタに書き込む
- デバイス固有のキャリブレーション・データが0x88~0xa1と0xe1~0xf0に入っているので読み出す
- データを読み出し、キャリブレーション・データを使ってデータを補正(compensate)する
●データの形式
温度は32ビット・データ、気圧は整数部が24ビット、小数部が8ビットの32ビット・データ、湿度は、整数部が22ビット、小数部が10ビットの32ビット・データです。
●読み出すデータのレジスタ
- 圧力 0xf7;上位バイト、0xf8;下位バイト 、0xf9;上位4ビット、その下の4ビットは0
- 温度 0xfa;上位バイト、0xfb;下位バイト 、0xfc;上位4ビット、その下の4ビットは0
- 湿度 0xfd;上位バイト、0xfe;下位バイト
●キャリブレーション・データ
- 温度;16ビットが二つ
- 気圧;16ビットが三つ
- 湿度;16ビットが六つ
(※1)ボッシュのドライバ