WeMos (15) Mini OLED+MLX90614

ひさしぶりに投稿。

新型疫病で体温測るが必須になる昨今、非接触でおでこにピー!して測る 非接触温度計 をよく目にするうちに、 MLX90614 センサと ESP8266 を使って自分でも作ってみたくなりました。

しかしいくつ注文しても、発送しない、間違ったものが届く、そして倍々する値上げ、それで注文しても発送しない、一時諦めていた。

最近大抵倍の値段で落ち着いたから、2個購入した。

Mini OLEDと合わせて、モバイルバッテリに繋ぐのですが、非接触温度計ガンっぽくする為にちょっと工夫した。

 

#include <Wire.h>
#include <Adafruit_MLX90614.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define BLYNK_PRINT Serial
#include <Blynk.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
 
#define OLED_RESET 0       // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(OLED_RESET);
 
Adafruit_MLX90614 mlx = Adafruit_MLX90614();
 
double temp_amb;
double temp_obj;
double calibration = 2.36;
 
char auth[] = "bOTyO9tRJyp8d0FLY8CoFyW115buIiZC";    // You should get Auth Token in the Blynk App.
char ssid[] = "Alexahome";                       // Your WiFi credentials.
char pass[] = "loranthus";
 
void setup()
{
  Serial.begin(9600);
  mlx.begin();         //Initialize MLX90614
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //initialize with the I2C addr 0x3C (128x64)
//  Blynk.begin(auth, ssid, pass);
  
  Serial.println("Temperature Sensor MLX90614");
 
  display.clearDisplay();
  display.setCursor(0,0);  
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.println("Thermometer");
  display.setCursor(0,20);
  display.setTextSize(1);
  display.print("Initializing");
  display.display();
  delay(2500);
}
 
void loop()
{
  //Reading room temperature and object temp
  //for reading Fahrenheit values, use
  //mlx.readAmbientTempF() , mlx.readObjectTempF() )
//  Blynk.run();
  temp_amb = mlx.readAmbientTempC();
  temp_obj = mlx.readObjectTempC();
 
  //Serial Monitor
  Serial.print("Room Temp = ");
  Serial.println(temp_amb);
  Serial.print("Object temp = ");
  Serial.println(temp_obj);
 
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);
  
  display.setCursor(0,0);  
  display.setTextSize(1);
  display.print("Ambient: ");
  display.setCursor(0,10);
  display.print(temp_amb);
  display.print((char)247);
  display.print("C");
 
  display.setCursor(0,20);
  display.setTextSize(1);
  display.print("Object: ");
  display.setCursor(0,30);
  display.setTextSize(2);
  display.print(temp_obj + calibration);
  
  display.display();
  
//  Blynk.virtualWrite(V1, temp_amb);
//  Blynk.virtualWrite(V2, (temp_obj + calibration));
  
  delay(1000);
}

コードにblynkなど残骸あるのは、参考1のコードを参照したから。せっかくESP8266だから、そのうちクラウドへ保存のコードを作ってみる。

参考:

  1. https://how2electronics.com/iot-ir-thermometer-using-mlx90614-esp8266-on-blynk/
  2. https://servercan.net/blog/2020/05/mlx90614%E3%81%A8esp8266%E3%81%A7%E4%BD%9C%E3%82%8B%E9%9D%9E%E6%8E%A5%E8%A7%A6%E6%B8%A9%E5%BA%A6%E8%A8%88-1/