低気圧になると体調が悪くなるので、気圧を測定して体調の変化との関連性を見てみようかと。
なので、BMP180を使って、気圧測定して、MQTTのノードにするまでのメモ
BMP180のスペック
BOSCHが出しているデータシートは、ここです。
どうやら、BMP180は、BMP085の後継機ですね。Webでさがすと、BMP085をよく見るのですが、そういう理由でした。
使い方(データシートからわかること)
待ち時間
最初にマイコン側から、トリガーかけて、指定時間後に測定値を取得することができるみたいです。
温度取得までに、4.5ms、気圧取得までには、測定方法で変わるみたいですが、”standard” modeでは、7.5msを待つ必要があるみたいです。
I2C通信
アドレスは、0xEFがread用でした。
とか調べていたのですが、どうやらAdafruitにBMP180/085向けのライブラリがあり、その辺りは、よしなに計らってくれるみたいです。
配線
ライブラリを使うとほとんど全自動で処理してくれるので、あとは、配線のみがお仕事です。
試作に使うボードは、ESPr Developerなので、SCLはIO5、SDAは、IO4です。
PlatformIOでプロジェクト作成
では、さっそく、コードを作っていきます。
プロジェクトを作成するときに指定するボードは、ESP-WROOM-02です。
MacのUSBポートって、よくトラブルが発生する気がしてます。
見つからないと、uploadでエラーが発生します。
そういう時は、PIO HomeのDeviceで表示されているポートを選んで(クリックするとクリップボードにコピーできるようになってます)、platformio.iniに、以下のように記述すると、特定のポートを指定して使うことができます。
[env:esp_wroom_02] platform = espressif8266 board = esp_wroom_02 framework = arduino upload_port = /dev/cu.usbserial-DN02BCXF ; - new ! monitor_port = /dev/cu.usbserial-DN02BCXF ; - new !
サンプルコードで動作確認
Adafruit_BMP085ライブラリのサンプルコードを実行させて、温度と気圧を取得できていることを確認。
値の妥当性はよくわかりませんが・・・(汗
まとめ
SCLとSDAをPINに接続し、I2C通信でやり取りすることで、BMP180から簡単に、気温や気圧が取得できました。
EPS8266/WROOM-02には、デフォルトでI2C通信用のPINが用意されていて、そのための通信ライブラリや、デバイス向けのライブラリが用意されているので、
環境をきちんと用意できればあっというまに、計測ができるようになります。
開発環境や動作環境をきちんと用意することがIoT開発の難しさだと思ってます。
PC等のソフトウェア開発だとPCがある時点で環境があることが多いですが、IoTだとデバイスが動くかよくわからないから始まってしまうことが、最初の関門だと思います。
例えば、通信するためのプロトコルだとかにハマりますよね。
Arduino系のように実績のあるドライバやライブラリが用意されているとデバイスが動かないときに、自分のソフトウェアを疑う必要性が減るので、着手しやすい気がします。
次回
今回、動作確認ができたので、いまDHT11で温度や湿度を計測しているMQTTのノードに、このBMP180の気圧センサを追加してみようと思います。
Sponsor Link