Androidのメモとか

ポキオの日記です。今日も遅延してない。

台風に備えて気圧計を作る

台風がちょっと楽しくなる?

ポキオ 台風 気圧計 M5StickC BMP280

そうだ、気圧計を作ろう。

今年も台風シーズンがやってきましたね。台風が好きな人はそう多くはないと思いますし、身の安全や食料の確保などいろいろやらなければならないことは多いですよね。でもエンジニアなら、気圧計も作って設置しておきましょう。

ポキオ 台風 気圧計 M5StickC BMP280

材料はこちら。まず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階の壁に貼って観察を監視します。

ポキオ 台風 気圧計 M5StickC BMP280

台風が来る前に気圧計を設置しましたが、1012hPa前後からスタートし台風接近とともにみるみる気圧が低下。

ポキオ 台風 気圧計 M5StickC BMP280

ついに994hPA前後まで到達。

ポキオ 台風 気圧計 M5StickC BMP280

今回は台風がそこまで接近しなかったこともあり994hPa止まりでしたが、2年前の台風のときは968hPaまで低下しました。

relativelayout.hatenablog.com

relativelayout.hatenablog.com

台風は恐ろしいものではありますが、こんな感じで自然現象をデータで可視化できると、ちょっと台風が楽しくなる?…なりませんね(笑)

「Androidのメモとか」は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。

このブログは個人的なメモ書きであったり、考えを書く場所であります。執筆者の所属する団体や企業のコメントや意向とは無関係であります。また、このブログは必ずしも正しいことが書かれているとは限らず、誤字脱字や意図せず誤った情報を載せる場合がありえます。それが原因で読者が不利益を被ったとしても、執筆者はいかなる責任も負いません。ありがとうございます。