Using Melexis Non-Contact MLX90614 Infrared Thermometer with ESP32 over Bluetooth
In this tutorial, you will learn how to display temperature on a mobile phone over Bluetooth using an ESP32 Arduino board with an MLX90614 infrared non-contact temperature sensor.
🔴Infrared non-contact temperature sensor
337-Arduino Code to measure Temperature using MLX90614 with ESP32
语言: C++
//*
*
*
* This is Arduino code to Measure Temperature over Bluetooth using
MLX90614 with ESP32
* Watch video instruction for this code: https://youtu.be/HpsvNIAtjm4
* Written/updated by Ahmad Shamshiri for Robojax Video channel www.Robojax.com
* Date: July 01, 2020, in Ajax, Ontario, Canada
Related Videos:
Related videos:
Introduction to MLX90614 Non-Contact https://youtu.be/cFDSqiEIunw
Display Temperature on LCD from MLX90614: https://youtu.be/_iO2L4P_irw
Measure temperature using MLX90614 Over WiFi:
* this code has been downloaded from https://robojax.com
* Get this code and other Arduino codes from Robojax.com
you may make donation using PayPal http://robojax.com/L/?id=64
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been download from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include <Wire.h>
#include <Adafruit_MLX90614.h>
char *typeName[]={"Object: ","Ambient: "};
float tempC, tempF, tempK, tempCA, tempFA, tempKA;
int type=1;// 1=C, 2=F, 3=K,
int showAmbient =1;//1=yes, 0=no
Adafruit_MLX90614 mlx = Adafruit_MLX90614();
#include "BluetoothSerial.h"
#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif
BluetoothSerial SerialBT;
int inData;
char receivedChar;// received value will be stored as CHAR in this variable
void setup() {
Serial.begin(115200);
SerialBT.begin("ESP32_Robojax"); //Bluetooth device name
Serial.println("The device started, now you can pair it with bluetooth!");
Serial.println("Search for ESP32_Robojax device and Pair your phone to ESP32_Robojax");
mlx.begin();
//Robojax.com MLX90614 with ESP32 Bluetooth
}
void loop() {
getTemp();
//Robojax.com MLX90614 with ESP32 Bluetooth
if (Serial.available()) {
// SerialBT.write(Serial.read());
}
while (SerialBT.available() ) {
receivedChar =(char)SerialBT.read();
inData += receivedChar;
if (receivedChar == '\n')
{
// SerialBT.print("Received:");// write on BT app
//SerialBT.println(inData);// write on BT app
//Serial.print("Received:");//print on Serial Monitor
// Serial.println(inData); //print on Serial Monitor
type = inData;
sendTemp();
inData = 0; // Clear recieved buffer
}//if (receivedChar
}// while
//Serial.println(servo1Angle);
delay(20);
//Robojax.com MLX90614 with ESP32 Bluetooth
}//loop ends here
void sendTemp()
{
//Robojax.com MLX90614 with ESP32 Bluetooth
if(type ==24)
{
SerialBT.print(typeName[0]);
SerialBT.print(tempC);//object Temperature
SerialBT.println("°C");
Serial.print("Temperature:"); //print on Serial Monitor
Serial.println(tempC); //print on Serial Monitor
if(showAmbient)
{
SerialBT.print(typeName[1]);
SerialBT.print(tempCA);//ambient temperature
SerialBT.println("°C");
}
}
if(type ==25)
{
SerialBT.print(typeName[0]);
SerialBT.print(tempF);//object Temperature
SerialBT.println("°F");
if(showAmbient)
{
SerialBT.print(typeName[1]);
SerialBT.print(tempFA);//ambient temperature
SerialBT.println("°F");
}
}
if(type ==26)
{
SerialBT.print(typeName[0]);
SerialBT.print(tempC);//object Temperature
SerialBT.println("°K");
if(showAmbient)
{
SerialBT.print(typeName[1]);
SerialBT.print(tempKA);//ambient temperature
SerialBT.println("°K");
}
}
//Robojax.com MLX90614 with ESP32 Bluetooth
}//sendTemp ends here
/*
* @brief returns temperature or relative humidity
* @return returns one of the values above
* Usage: to get Fahrenheit type: getTemp('F')
* to print it on serial monitor Serial.println(getTemp('F'));
* Written by Ahmad Shamshiri on Mar 30, 2020.
* in Ajax, Ontario, Canada
* www.Robojax.com
*/
void getTemp()
{
// Robojax.com MLX90614 Code
tempC = mlx.readObjectTempC();//in C object
tempCA = mlx.readAmbientTempC();
tempF = mlx.readObjectTempF(); //Fah. Object
tempFA = mlx.readAmbientTempF();//Fah Ambient
tempK = tempC + 273.15;// Object Kelvin
tempKA = tempCA + 273.15;//Ambient Kelvin
// Robojax.com MLX90614 Code
}//getTemp
资源与参考
尚无可用资源。
文件📁
没有可用的文件。