赤外線温度センサーが安くなってきたので、MLX90615 を AliExpress から購入(送料込みで756円)して、非接触温度計を試作してみました。
コントローラには Arduino nano 互換機(300円くらい)、LCDディスプレイは一般的な HD44780 1602 LCD ディスプレイモジュール(I2Cシリアルインターフェースと併せて300円ちょっと)を流用しました。
Arduino nano との接続
LCDディスプレイは LiquidCrystal_I2C.h のライブラリーを利用しますので、配線はLCDディスプレイのSDAを A4、SCLをA5に接続、(GND, VCCはそれぞれに)しますが、どちらも10KΩ でVCCにプルアップします。
温度センサーは Digital_Infrared_Temperature_Sensor_MLX90615 のライブラリーを利用しますので、配線は標準の SDA を D3 、SCL を D2 に接続します。(GND, VCCもそれぞれ)
プログラムのソース
#include "MLX90615.h"
#include <I2cMaster.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define printIIC(args) Wire.write(args)
inline size_t LiquidCrystal_I2C::write(uint8_t value) {
send(value, Rs);
return 1;
}
#define SDA_PIN 3 //define the SDA pin
#define SCL_PIN 2 //define the SCL pin
SoftI2cMaster i2c(SDA_PIN, SCL_PIN);
MLX90615 mlx90615(DEVICE_ADDR, &i2c);
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup()
{
Serial.begin(9600);
Serial.println("Setup...");
lcd.init();
lcd.backlight();
//mlx90615.writeEEPROM(Default_Emissivity); //write data into EEPROM when you need to adjust emissivity.
//mlx90615.readEEPROM(); //read EEPROM data to check whether it's a default one.
}
void loop()
{
Serial.print("Object temperature: ");
Serial.println(mlx90615.getTemperature(MLX90615_OBJECT_TEMPERATURE));
Serial.print("Ambient temperature: ");
Serial.println(mlx90615.getTemperature(MLX90615_AMBIENT_TEMPERATURE));
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("\xc0\xb2\xbc\xae\xb3"); //「タイショウ」
lcd.print(": ");
lcd.print(mlx90615.getTemperature(MLX90615_OBJECT_TEMPERATURE));
lcd.print("\xdf"); // 上付きの○
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("\xbc\xad\xb3\xb2"); // 「シュウイ」
lcd.print(": ");
lcd.print(mlx90615.getTemperature(MLX90615_AMBIENT_TEMPERATURE));
lcd.print("\xdf"); // 上付きの○
lcd.print("C");
delay(2000);
} This website uses cookies.