Open2

超熱帯夜を乗り切れ!M5Stackと何かでおうちロガー製作

ringo156ringo156

前置き

以前作成したロガーがAWSの無料枠の12ヶ月が終了したことに合わせて停止していたので作り直したい。
8月に入って暑い日が続くと、一体私の部屋はどのぐらい暑いのだろうか?と気になり、自分の中でロガーの需要が生まれたため、なる早で作るのが目標。

要件

とりあえずBME280はあるので温湿度の表示をすること。外出先から見れること。ロガーなのでデータを保存できること。
できるだけお金がかけたくないので、既存のもので済ませたい。
使用する技術スタックは難しくなさそうなら何でも可

使えるもの

  • M5Stack
  • ESP32
  • BME280
  • RaspberryPi
  • AWSの無料枠

実装の流れ

  1. M5Stackとデータの接続&表示
  2. ロギングの仕組みを作る
  3. インターネット越しに見えるようにする
  4. グラフ化
  5. 複数のセンサー設置

4以降は願望なのでできたらやりたい。

ringo156ringo156

M5Stackとセンサーの接続

開発環境

VSCode + PlatformIO

久しぶりに開いたらボードの選択でエラーになったのでアンインストールして、.platformioフォルダ消したら動いた。

M5StackとBME280の接続

横のGROVE AソケットからBME280の電源が取れたらスマートだったのだが、5Vなので背面から3.3Vを引き出す。
ピンアサインはSDAが21、SCLが22
使ったライブラリはBME280_Light

#include <M5Stack.h>
#include <stdio.h>
#include <Wire.h>     // required by BME280 library
#include <BME280_t.h> // import BME280 template library

BME280<> BMESensor; // instantiate sensor

void setup()
{
    M5.begin();       // Init M5Core.  初始化 M5Core
    M5.Power.begin(); // Init Power module.  初始化电源模块

    Wire.begin(21, 22);   // initialize I2C that connects to sensor
    BMESensor.begin();    // initalize bme280 sensor
}

char buf[30];
void loop()
{
    M5.Lcd.setCursor(0, 0);
    M5.lcd.setTextSize(3);

    BMESensor.refresh(); // read current sensor data

    sprintf(buf, "Temp: %3.1fC", BMESensor.temperature);
    Serial.println(buf);
    M5.Lcd.println(buf);

    sprintf(buf, "Hum: %4.2f%", BMESensor.humidity);
    Serial.println(buf);
    M5.Lcd.println(buf);

    sprintf(buf, "Press: %5.2fhPa", BMESensor.pressure / 100.0F);
    Serial.println(buf);
    M5.Lcd.println(buf);

    delay(1000); // wait a while before next loop
}

ソースコードはサンプルをいい感じに編集