12
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

簡易温度計を作る

Last updated at Posted at 2019-03-29

乳児の体温を測る時などに使われる、非接触温度計を簡単に作ります。

使ったもの

  • MLX90614
  • 10kΩ抵抗 × 2
  • Arduino UNO
  • ブレッドボード
  • ジャンパワイヤー
  • M5Stack

2000円ちょっとで買える赤外線温度センサー、MLX90614を持て余していたので
使ってみました。
過去にストロベリーリナックスで購入した3V動作品です。
09570-01.jpg

配線

MLX90614のピン構成です。
mlx90614.png

Arduino UNO ブレッドボード MLX90614
3V3 - VDD
GND - VSS
A5(SCL) 10kΩ SCL
A4(SDA) 10kΩ SDA
SCLとSDAに関しては、10kΩの片方の足から3V3電源を取るようにしてください。
実際に配線するとこのようになります。
ArduinoUNO配線図.jpeg

基本動作

Adafruitの便利なライブラリがあるため、容易に動作させることができます。
Arduino IDEの スケッチ > ライブラリをインクルード > ライブラリを管理 で
出た検索窓に、「mlx」と検索すると表示されます。

スケッチ > ライブラリをインクルード > ライブラリを管理.png 上から3番目の、「Adafruit MLX90614 Library」です。 ライブラリマネージャ.png 選択して「インストール」を押し、無事にインストールされれば使えます。

簡単に動作確認をしてみます。

mlx90614_test.ino
#include <Adafruit_MLX90614.h>

Adafruit_MLX90614 mlx = Adafruit_MLX90614();

void setup() {
  mlx.begin();

  Serial.begin(9600);
}

void loop() {
  // 表面温度の表示
  Serial.print("Temperature : ");  Serial.println(mlx.readObjectTempC());
  // 周囲温度の表示
  Serial.print("Ambient : ");  Serial.println(mlx.readAmbientTempC());
  Serial.println();

  delay(3000);
}

指を近付けてみると、シリアルモニタにこのように表示されます。
動作確認結果.png

PCに繋がなくても温度が見えるようにする

これだけでは、都度PCに繋がないと温度を見ることができません。
そこで、市販の温度計と同じように、単体で温度を見ることができるようにしたいと思います。

持っていたM5Stackに、計測した温度を表示させるようにしました。
Aボタンを押すと表面温度、Cボタンを押すと周囲温度が出るようにします。

m5stack_mlx90614.ino
#include <Adafruit_MLX90614.h>
#include <M5Stack.h>

Adafruit_MLX90614 mlx = Adafruit_MLX90614();

void setup(){

  // セットアップ
  M5.begin();
  mlx.begin();

  Serial.begin(115200);

  // デフォルト表示
  Serial.println("Title");
  M5.Lcd.fillScreen(BLACK);
  M5.Lcd.setTextColor(WHITE);
  M5.Lcd.setCursor(70, 40);
  M5.Lcd.setTextSize(4); 
  M5.Lcd.print("MLX90614");
  M5.Lcd.setTextSize(3); 
  M5.Lcd.setCursor(20, 100);
  M5.Lcd.print("Temperature");
  M5.Lcd.setCursor(170, 140);
  M5.Lcd.print("Display");
}

void loop() {

  if(M5.BtnA.wasPressed()) {
    // 表面温度表示
    Serial.println("Temperature");
    M5.Lcd.setCursor(10, 40);
    M5.Lcd.fillScreen(RED);
    M5.Lcd.setTextColor(WHITE);
    M5.Lcd.setTextSize(3);
    M5.Lcd.print("Temperature  ");
    M5.Lcd.setCursor(50, 100);
    M5.Lcd.setTextSize(8); 
    M5.Lcd.print(mlx.readObjectTempC());
    M5.Lcd.setCursor(230, 180);
    M5.Lcd.setTextSize(2);
    M5.Lcd.print(" deg.");

    delay(1000);
  }

  if(M5.BtnC.wasPressed()) {
    // 周囲温度表示
    Serial.println("Ambient");
    M5.Lcd.setCursor(10, 40);
    M5.Lcd.fillScreen(GREEN);
    M5.Lcd.setTextColor(WHITE);
    M5.Lcd.setTextSize(3);
    M5.Lcd.print("Ambient  ");
    M5.Lcd.setCursor(50, 100);
    M5.Lcd.setTextSize(8); 
    M5.Lcd.print(mlx.readAmbientTempC());
    M5.Lcd.setCursor(230, 180);
    M5.Lcd.setTextSize(2);
    M5.Lcd.print(" deg.");

    delay(1000);
  }
  M5.update();
}

実際に動いているところをGIFアニメにしてみました。
M5Stack_MLX90614.gif
赤い画面の表面温度の時、指を近付けると温度が変わっているのが分かります。

まとめ

センサーに対象物を近付けるだけですぐに温度を測れるため、
乳児の体温測定などに使われる理由がよく分かりました。
また、M5Stackが気軽に単体で動く表示器として扱えるため、少し動作を試してみたい時に最適です。

12
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?