乳児の体温を測る時などに使われる、非接触温度計を簡単に作ります。
使ったもの
- MLX90614
- 10kΩ抵抗 × 2
- Arduino UNO
- ブレッドボード
- ジャンパワイヤー
- M5Stack
2000円ちょっとで買える赤外線温度センサー、MLX90614を持て余していたので
使ってみました。
過去にストロベリーリナックスで購入した3V動作品です。
配線
Arduino UNO | ブレッドボード | MLX90614 |
---|---|---|
3V3 | - | VDD |
GND | - | VSS |
A5(SCL) | 10kΩ | SCL |
A4(SDA) | 10kΩ | SDA |
SCLとSDAに関しては、10kΩの片方の足から3V3電源を取るようにしてください。 | ||
実際に配線するとこのようになります。 | ||
基本動作
Adafruitの便利なライブラリがあるため、容易に動作させることができます。
Arduino IDEの スケッチ > ライブラリをインクルード > ライブラリを管理 で
出た検索窓に、「mlx」と検索すると表示されます。
簡単に動作確認をしてみます。
#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);
}
指を近付けてみると、シリアルモニタにこのように表示されます。
PCに繋がなくても温度が見えるようにする
これだけでは、都度PCに繋がないと温度を見ることができません。
そこで、市販の温度計と同じように、単体で温度を見ることができるようにしたいと思います。
持っていたM5Stackに、計測した温度を表示させるようにしました。
Aボタンを押すと表面温度、Cボタンを押すと周囲温度が出るようにします。
#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が気軽に単体で動く表示器として扱えるため、少し動作を試してみたい時に最適です。