Androidのメモとか

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

台風が来るし気圧センサー「BMP280」をESP32につなげて測定してみる

そんなことしてて大丈夫?

ポキオ ESP32 BMP280 ambient

台風怖いんですけど

すごそうですよね。

スーパーに行ったら、水とかパンとか全然なくてビビりました。備えあれば憂いなしって言いますしね。私もなんとか食料を確保できました。

ただ、台風の準備はそれだけで良いのでしょうか?だめです。気圧を測りましょう。

気圧を測るには?

台風は低気圧なわけで、台風が近づけば気圧も下がるはず。それをセンシングして可視化してみようと思います。気圧をセンシングするにはBMP280というものを使います。Amazonなら安いもので300円くらいで買えます。

こやつをESP32ボードにつないで制御してみようと思います。今回は、この前掃除してたら出てきたESP32 DevKitCを使います。

また、データの可視化には、Wi-Fi経由でAmbientさんに接続しデータを送り続け、Ambientさんのページ上で気圧の推移を見てみようと思います。(Ambientさん、いつもお世話になっています。多謝多謝。)

つくってみる

BMP280はI2C接続が可能なので、非常にシンプルな配線で組み立てることができます。

BMP280側 ESP32 DevKitC側
VCC 3.3V
GND GND
SCL 22pin
SDA 21pin

この4本だけ接続すればOKなはず。

コーディングもAdafruitのライブラリが使えたので、超簡単です。

github.com

#include <WiFi.h>
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>
#include "Ambient.h"

#define SSID "xxxxx"
#define PASSWORD "xxxxx"
#define INTERVAL 5 * 60 * 1000 // 5分毎にAmbientさんにデーターを送る
#define CHANNEL_ID xxxxx
#define WRITE_KEY "xxxxx"

Adafruit_BMP280 bme;
WiFiClient client;
Ambient ambient;
float temperature;
float pressure;

void setup() {
  Serial.begin(9600);
  Serial.println(F("BMP280 test"));

  if (!bme.begin(0x76)) {
    Serial.println("Could not find a valid BMP280 sensor, check wiring!");
    while (1);
  }
}

void loop() {
  connectWifi();
  readData();
  sendData();
  disconnectWifi();
  delay(INTERVAL);
}

void connectWifi() {
  WiFi.mode(WIFI_STA);
  WiFi.begin(SSID, PASSWORD);

  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(100);
  }

  Serial.println("connected!");
}

void disconnectWifi() {
  WiFi.disconnect();
  Serial.println("disconnected!");
}

void readData() {
  temperature = bme.readTemperature();
  pressure = bme.readPressure();

  Serial.print("Temperature = ");
  Serial.print(temperature);
  Serial.println(" *C");

  Serial.print("Pressure = ");
  Serial.print(pressure);
  Serial.println(" Pa");

  Serial.println();
}

void sendData() {
  ambient.begin(CHANNEL_ID, WRITE_KEY, &client);
  ambient.set(1, temperature);
  ambient.set(2, pressure);
  ambient.send();
}

ちなみに、気温も測れるので、ついでに送ってみます。

ポキオ ESP32 BMP280 ambient

とりあえず、嫁の許可が降りたので、キッチンで使っていないコンセントに直差ししておきます。

データは可視化できたの?

じゃーん。

ポキオ ESP32 BMP280 ambient

それっぽい値が取れてますねぇ。これから台風が接近するにあたり、値がどう変化するか気になりますねぇ。

小説 天気の子 (角川文庫)

小説 天気の子 (角川文庫)

  • 作者:新海 誠
  • 発売日: 2019/07/18
  • メディア: 文庫

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

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