ひさしぶりに投稿。
新型疫病で体温測るが必須になる昨今、非接触でおでこにピー!して測る 非接触温度計 をよく目にするうちに、 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だから、そのうちクラウドへ保存のコードを作ってみる。
参考:
- https://how2electronics.com/iot-ir-thermometer-using-mlx90614-esp8266-on-blynk/
- 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/