よくあるパターンだが、スケッチの勉強としてはおもしろい。せっかくだから最高・最低温度くらいは記録できるようにしたいし、一定時間ごとの気温の変化をSDカードに記録するようなこともしてみたい。
そこで、アマゾンからBME280のモジュールを980円(税込み)で購入。どうせなら気圧も一緒に測れるのがいい、ということで欲張って買ったはいいが、買ってしまって大後悔。電圧が3.3Vだし、スケッチ例を見ると内容が膨大。精度はよさそうだが、とてもお手軽に使えるようなものではない印象。
まずは電圧変換
ともあれ動作テストぐらいはしないといけないので、まずは電圧変換のための「I2Cバス用双方向電圧レベル変換モジュール(FXMA2102)」を秋月電子通商から購入。(税込み200円)使い方が今ひとつよくわからなかったが、「FXMA2102による電圧レベル変換」というサイトがあったので、これに従って配線をする。
https://www.petitmonte.com/robot/howto_fxma2102.html
接続をする
購入したBME280モジュール自体の情報も、アマゾンの商品ページに、写真とともに回路図がある程度で、かなり心もとない。類似の商品がかなりあるが、少しずつ回路やピン配置が違っていたりして注意が必要。
仕方なく、秋月電子通商のBME280モジュールのページからマニュアルを参照、I2Cの接続方法を参考にしつつ配線をする。回路図を見ると、購入したモジュールにはSCL,SDAにプルアップの10kΩがすでについているので、電圧レベル変換モジュールの回路図にあるプルアップ抵抗は不要となる。(元々ついていないので、あえて追加する必要なしということ。)
BME280モジュールの回路図にある端子名称と、モジュール基板裏側に印刷されている名称が異なるので、戸惑わないようにしないといけないが、今回はI2C接続なので、基板に印刷されている名称のSCL、SDAに従ったほうがわかりやすい。
6ピンのSDOはオープンとするが、内部で10kΩでアースに接続されているため、I2Cのアドレスはデフォルトの0x76となる。(これも秋月のマニュアルに書いてある)
5ピンCSBも未使用なのでオープン。(内部でVDDにプルアップされている)
秋月電子通商のマニュアル(BME280モジュール)
http://akizukidenshi.com/download/ds/akizuki/AE-BME280_manu_v1.1.pdf
秋月電子通商のマニュアル(電圧レベル変換モジュール FXMA2102)
http://akizukidenshi.com/download/ds/akizuki/ae-fxma2102-web.pdf
![]() |
アマゾンの商品ページから (端子の名称と基板の名称は少し異なる) |
基板の裏側には端子の名称が書かれている |
スケッチはスイッチサイエンスで購入ページに公開しているものをそのまま使用。一応I2Cのアドレスが0x76で間違いないことを確認する。
精度は?
動作に問題はなく、即温度、湿度、気圧がシリアルモニターに表示されるようになった。
BME280の仕様では、温度の精度は±1℃となっているが、手持ちの棒状温度計との比較では、十分その範囲内に入っているようだ。ただ、湿度は正確に測れるものがなく、乾湿計との比較ではかなり違いがある。市販のデジタル湿度計とは比較的近い値になっているので、たぶん問題はないだろうという程度しか評価できない。
気圧について、気象台のアメダスデータとの比較では、±1hpからは多少外れているようだが、実用上問題ないことは確か。
低気圧が近づいた時に記録した結果では、
アメダス(hp) 測定データ(hp) 差
991.8 990.32 -1.84
989.5 987.90 -1.60
986.5 984.83 -1.67
985.1 983.38 -1.72
984.2 982.41 -1.59
981.6 979.83 -1.77
981.3 979.72 -1.58
(気象台から5kmほどの距離で、室内で測定。)
配線が完了して測定中 棒状温度計との差はほとんどない |
湿度の参考にした乾湿計 通常の温度計と、水で湿した温度計との温度差で湿度を測る |
スイッチサイエンス公開スケッチ
https://github.com/SWITCHSCIENCE/BME280/tree/master/Arduino
なお、秋月電子通商さん、スイッチサイエンスさん、購入もしないでデータだけ頂きすみません。
0 件のコメント:
コメントを投稿