Open2
超熱帯夜を乗り切れ!M5Stackと何かでおうちロガー製作
前置き
以前作成したロガーがAWSの無料枠の12ヶ月が終了したことに合わせて停止していたので作り直したい。
8月に入って暑い日が続くと、一体私の部屋はどのぐらい暑いのだろうか?と気になり、自分の中でロガーの需要が生まれたため、なる早で作るのが目標。
要件
とりあえずBME280はあるので温湿度の表示をすること。外出先から見れること。ロガーなのでデータを保存できること。
できるだけお金がかけたくないので、既存のもので済ませたい。
使用する技術スタックは難しくなさそうなら何でも可
使えるもの
- M5Stack
- ESP32
- BME280
- RaspberryPi
- AWSの無料枠
実装の流れ
- M5Stackとデータの接続&表示
- ロギングの仕組みを作る
- インターネット越しに見えるようにする
- グラフ化
- 複数のセンサー設置
4以降は願望なのでできたらやりたい。
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
}
ソースコードはサンプルをいい感じに編集