台風がちょっと楽しくなる?
そうだ、気圧計を作ろう。
今年も台風シーズンがやってきましたね。台風が好きな人はそう多くはないと思いますし、身の安全や食料の確保などいろいろやらなければならないことは多いですよね。でもエンジニアなら、気圧計も作って設置しておきましょう。
材料はこちら。まずM5StickC。
コンパクトでディスプレイがついているマイコンで、今回はディスプレイに気圧を表示させつつ、クラウドにデータを飛ばすような実装をしてみようと思います。
そして、気圧センサーはBMP280を使います。
気圧センサーといえばおなじみのモジュールになります。モジュールのVCC、GND、SCL、SDAをそれぞれM5StickCの3.3V、GND、26、0のピンに接続しておきます。
コーディングはArduino IDEで
M5StickCなのでUI FLOWでもコーディングできると思いますが、既存の豊富なライブラリを使うためにArduino IDEでコーディングしていきます。また、今回はデータをAmbientに飛ばして可視化してみようと思います。(いつもお世話になってます!)
#include <Ambient.h> #include <Adafruit_BMP280.h> #include <Wire.h> #include <M5StickC.h> #define INTERVAL 5*60*1000 #define MY_SSID "xxxxx" #define MY_PW "xxxxx" #define ID xxxxx #define KEY "xxxxx" Adafruit_BMP280 bme; WiFiClient client; Ambient ambient; void setup() { M5.begin(); M5.Lcd.setRotation(3); WiFi.begin(MY_SSID, MY_PW); M5.Lcd.print("Connecting"); while (WiFi.status() != WL_CONNECTED) { M5.Lcd.print("."); } Wire.begin(0, 26); while (!bme.begin(0x76)) { M5.Lcd.println("BMP280 init fail"); } ambient.begin(ID, KEY, &client); } void loop() { M5.Lcd.fillScreen(BLACK); float pressure = bme.readPressure(); M5.Lcd.setCursor(0, 0); M5.Lcd.setTextFont(4); M5.Lcd.setTextSize(1); M5.Lcd.print("pressure[hPa]"); M5.Lcd.setCursor(0, 26); M5.Lcd.setTextFont(7); M5.Lcd.setTextSize(1); M5.Lcd.printf("%4.0fhPa", pressure / 100); ambient.set(1, pressure / 100); ambient.send(); delay(INTERVAL); }
M5StickCはArduino IDE向けにもライブラリがあり、面倒なWi−Fi接続やディスプレイ操作が簡単にできるのでサクッとコーディングできますね。
いざ起動
こんな感じで自宅の2階の壁に貼って観察を監視します。
台風が来る前に気圧計を設置しましたが、1012hPa前後からスタートし台風接近とともにみるみる気圧が低下。
ついに994hPA前後まで到達。
今回は台風がそこまで接近しなかったこともあり994hPa止まりでしたが、2年前の台風のときは968hPaまで低下しました。
台風は恐ろしいものではありますが、こんな感じで自然現象をデータで可視化できると、ちょっと台風が楽しくなる?…なりませんね(笑)