M5Stack

【M5Stack】温度センサの使い方を分かりやすく解説!【MPU6886】

m5stack-mpu6886-thermometer.png

<この記事について>

  • 「M5Stackに搭載されている温度センサの使い方がよく分からない…」と悩んでいる人のために書きました。
  • この記事を読むことで、M5Stack(MPU6886)で温度センサを使う方法が分かります。
  • 結論としては、何かライブラリをインストールしたり特別な設定することなく、プログラムを書いて実行するだけでOKですが、性能としてはいまいちです。

こんにちは!こんばんは!

ちゃとらです(・ω・)/

M5StackにはIMU(慣性計測ユニット)が搭載されているので、加速度やジャイロなどが測定可能です。

温度も測定可能ですがばらつきがあり性能も微妙な感じなので、正確な値はあまり期待できません。

ちゃとら

M5Stackに搭載されているMPU6886(IMU)で温度センサを使う方法を分かりやすく解説していきます!

m5stack-mpu6886-acceleration-sensor.png
【M5Stack】加速度センサの使い方を分かりやすく解説!【MPU6886】この記事では、M5Stackに搭載されているMPU6886で加速度センサを使う方法について解説しています。何かライブラリをインストールしたり特別な設定することなく、プログラムを書いて実行するだけで加速度センサを使用することができます。...
m5stack-mpu6886-gyro-sensor.png
【M5Stack】ジャイロセンサの使い方を分かりやすく解説!【MPU6886】この記事では、M5Stackに搭載されているMPU6886でジャイロセンサを使う方法について解説しています。特別な設定は必要なく、プログラムを書いて実行するだけでジャイロセンサを使用することができます。...

今回扱うM5Stack

M5Stackの種類M5Stack FIRE(V2.6)
値段49.90ドル(税別)
(販売価格は7700円程 投稿日現在)
生産国中国
サイズ5.4 x 5.4 x 3.05 cm

僕は8000円ぐらいでM5Stack FIREを通販で購入しました。

M5Stackは機種によって搭載されているセンサが異なります。MPU6886では一応温度も測定可能です(湿度は測定できません)

ちなみに、MPU6886では加速度・ひねり(ジャイロ)・温度が測定可能ですが、磁力は測定できません。

温度センサの仕組みについて

メインに入る前に、温度センサの仕組みを少し解説します。

MPU6886のような慣性計測ユニットにはサーミスタという小型温度センサが搭載されています。

サーミスタは、温度が変わると電気の流れにくさ(抵抗)が変化する電子部品です。
温度が高くなると電気が流れやすくなり、温度が低くなると電気が流れにくくなります
※したがって、サーミスタ内の電気の流れをみることで温度を知ることができます。
サーミスタは、小形で衝撃や振動に強く、温度に対する感度が高いため、私たちの暮らしを支えるさまざまな製品に使われています。

引用元:株式会社芝浦電子|サーミスタってなに?

要はサーミスタとは、温度の変化によって抵抗値を変える機器のことです。

このサーミスタはエアコンや自動車、電子時計などに搭載されています。

使い方

MPU6886の温度センサを使うためには、何かライブラリをインストールしたり特別な設定は必要ないです。プログラムを書き込むだけで使うことができます。

ここでは、M5Stackのセットアップ(Arduino IDE)は完了していること前提で解説していきます。

ちゃとら

M5Stackのセットアップ(Arduino IDE)がまだ完了していない人は以下の記事を参考にしてください!

m5stack-setup-arduino.png
【M5Stack】M5Stackのセットアップ(Arduino)を分かりやすく解説!【Arduino IDE】この記事では、M5Stackのセットアップ(Arduino IDE)について解説しています。手順としては、「USBドライバをインストール」→「ボードマネージャをインストール」→「ライブラリをインストール」→「プログラムを書いて実行する」となっています。...

プログラムを書いて実行

以下のプログラムをM5Stackに書き込んで動作させます。

// ↓の定義は#include <M5Stack.h>より前に!
#define M5STACK_MPU6886 

#include <M5Stack.h>

// 取得する温度データを初期化
float temp = 0.0F;
// 温度に対するメッセージを初期化
String msg = "";

void setup() 
{
  M5.begin();
  M5.Power.begin();  // Powerモジュールを初期化

  M5.IMU.Init();     // IMUを初期化

  M5.Lcd.setTextSize(3);
}

void loop() 
{
  // 温度データを取得
  M5.IMU.getTempData(&temp);
  // 温度を調整
  temp = temp - 20.0;
  
  // 画面をクリア
  M5.Lcd.clear();

  // 温度データをシリアル通信で送信
  Serial.print("Temperature(*C):");
  Serial.println(temp);

  // 温度データをM5Stackに表示
  M5.Lcd.setCursor(0, 50);
  M5.Lcd.setTextColor(BLUE, BLACK);
  M5.Lcd.println("Temperature:");
  M5.Lcd.printf("%5.2f *C ", temp);

  // 温度に対するメッセージをM5Stackに表示
  M5.Lcd.setCursor(0, 125);
  M5.Lcd.setTextColor(WHITE, BLACK);
  M5.Lcd.println("Message:");
  if(temp >= 32.0) msg = "Very hot!!";
  else if(temp >= 28.0 && temp < 32.0) msg = "Hot!";
  else if(temp >= 20.0 && temp < 28.0) msg = "Nice";
  else if(temp >= 10.0 && temp < 20.0) msg = "Cold!";
  else msg = "Very cold!";
  M5.Lcd.print(msg);

  delay(300);
}

14行目では、M5Stackの電源関係の機能を初期化をしています。

26行目で温度を調節しています。これが無いと27℃の環境でも47℃とか50℃とかキ〇ガイみたいな値になってしまうんですよね…

29行目でループの最初に画面をクリアしています。目がチカチカするのはコイツのせいですが、コイツがいないと例えばVery hot!!を表示後にHot!を表示すると、前の表示がクリアされないので処理が重なりHot! hot!!というおかしな表示をしてしまいます。

プログラムを作成できたら、シリアルポートとボードの設定を忘れずに行いましょう。

「ツール」→「シリアルポート」でM5Stackが接続されているポート番号を選び、
「ツール」→「ボード」→「ESP32 Arduino」で「M5Stack-Core-ESP32」を選びましょう。

それぞれ設定ができたら、M5Stackにプログラムを書き込みます。

M5Stackに表示

こんな感じで表示されればOKです。また、シリアル通信で温度データを送信しているのでM5Stackがパソコンと接続されていれば、シリアルプロッタでグラフ表示させることもできます。

温度データ

グラフ表示させるときは通信速度を115200bpsに設定します。

室温27℃の環境測定しましたが、±5℃くらいの誤差が出てしまいます。

やっぱり、少し性能悪いっすね…

M5StackのMPU6886についての詳細が気になる人は以下のリンクを参考にしてください。

まとめ

M5Stackに搭載されているMPU6886の温度センサについて

  1. MPU6886も含め様々な機器にサーミスタという小型温度センサが搭載されている。サーミスタは温度の変化によって抵抗値を変える仕組みになっている。
  2. MPU6886の温度センサを使うためには、何かライブラリをインストールしたり特別な設定は必要はない。プログラムを書き込むだけで使用可能。
ちゃとら

温度センサの性能としては、周辺機器のセンサの方が精密なんですよね…

今回はここまでです。

ちゃとら(・ω・)/

今回紹介した広告一覧