BME280モジュールは実践投入して久しい。
気圧はどこで測定しても同じだろうから、温度と湿度だけのセンサーでいいやと思って、Si7021の載ったSHT21 HTU21 GY-21 などどシルク印刷のあるセンサー・モジュール(以後SHT21)を買ってあった。
だいぶ放置していたが、やっと使ってみることにしたのでその覚書き。
ESP-WROOM-02+SSD1306+BME280で使っている外注基板がまだ余っているのでこれを流用する。
BME280モジュールとSHT21はピン配列が同じなのでそのまま基板に取り付けて使うことができる。
バッテリー駆動で野外で使おうと思うので、とりあえず表示装置は無しにしてある。
ここのスケッチを参考にさせていただいた。
http://www.esp8266learning.com/esp8266-si7021-temperature-sensor-example.php#codesyntax_1
基板を作るときにI2Cの端子が逆になっていて、その設定がうまくいかないせいか、AdafluitのサンプルやSparkFunのサンプルはうまく動かなかった。
上のコードでは、Wire.begin();をWire.begin(5, 4);とするだけで測定値が表示された。
AdafluitやSparkFunのサンプルではこれがどこにあるのか、どこで設定しているのか探せなかった。
このスケッチに、BME280の基板で使っているサーバー用のデータ転送処理を加えて、すぐにOrange Pi PC2上のサーバーにデータを送ることができた。
左から順に、時刻、気温、湿度、電圧のADC値の順だ。
もっとてこずるかと思ったが、以前書いたコードをコピペするだけでほぼそのまま動いた。
関連ソフトウェア一式を売り出してみた。
https://neo-sahara.booth.pm/items/1924398