赤外線温度センサーが安くなってきたので、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.