06.CoreInkで温湿度・気圧測定
6.CoreInkで温湿度・気圧測定
M5Stack CoreInkにセンサーを接続し、温度、湿度、気圧を測定する。
センサー
M5Stack用環境センサユニット ver.2(ENV II)- 温湿度センサ(SHT30)内蔵
- 絶対大気圧センサ(BMP280)内蔵
- 温度測定範囲 : (0~60)±0.2℃
- 動作温度範囲 : 0~40℃
- 湿度測定範囲 : (10~90)±2%
- 気圧測定範囲 : (300~1100)±1hPa
- I2C通信 : SHT30は0x44, BMP280は0x76
- GROVE互換インターフェース
- Groveケーブル1本付
- 単価 : 税込572円
- 公開日 : 2020/6/30
説明
- センサーは付属ケーブルでCoreInk底面に挿すだけ。
- Adafruitのライブラリを使用。
- CoreInkの仕様より画面更新周期は15秒以上にする。
スケッチ
#include <M5CoreInk.h> // M5Stack CoreInkを使用
#include <Adafruit_SHT31.h> //温湿度センサ(0~60)±0.2℃,(10~90)±2%
#include <Adafruit_BMP280.h> // 気圧センサ (300~1100)±1hPa
Adafruit_SHT31 sht3x = Adafruit_SHT31(&Wire); //
Adafruit_BMP280 bme = Adafruit_BMP280(&Wire); //
Ink_Sprite InkPageSprite(&M5.M5Ink); //
float tmp = 0.0; // 浮動小数点 温度変数
float hum = 0.0; // 浮動小数点 湿度変数
float prs = 0.0; // 浮動小数点 気圧変数
char Strbuff[64]; // 文字列
void setup() {
M5.begin(); // E-Ink,RTC,I2C,ブザーを初期化
if (!M5.M5Ink.isInit()) { // 初期化出来なければ
Serial.printf("エラー Ink Init"); // シリアルモニタに表示
while (1) delay(100); // ずっと待つ
}
M5.M5Ink.clear(); // 画像クリア
delay(1000); // 1秒待つ
if ( InkPageSprite.creatSprite(0, 0, 200, 200, true) != 0 ) {
// 画像領域が作成できなければ
Serial.printf("エラー Ink Sprite creat"); // シリアルモニタに表示
}
Wire.begin(); // Wireライブラリ初期化 ()はマスタとしてバスに接続
Serial.println("ENV Unit2 test"); // シリアルモニタへ表示
while (!sht3x.begin(0x44)) { // SHT31が見つからなかったら
Serial.println("not find SHT31"); // シリアルモニタへ表示
}
while (!bme.begin(0x76)) { // BMP280が見つからなかったら
Serial.println("not find BMP280"); // シリアルモニタへ表示
}
}
void loop() {
tmp = sht3x.readTemperature(); // センサーの温度を読取る
hum = sht3x.readHumidity(); // センサーの湿度を読取る
prs = bme.readPressure() / 100; // センサーの圧力を読取る 単位変換
Serial.printf("%4.1f'C %2.0f%% %4.0fhPa\r\n", tmp, hum, prs);//シリアルモニタへ表示
sprintf(Strbuff, " %4.1f'C %2.0f%% %4.0fhPa ", tmp, hum, prs); // 文字列作成
InkPageSprite.drawString(0, 20, Strbuff); // (x,y)に文字列を描く
InkPageSprite.pushSprite(); // 画面更新
delay(15000); // 15秒待つ(小さくしない事)
}