搜索代码

Using Melexis Non-Contact MLX90614 Infrared Thermometer with ESP32 over Bluetooth

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

资源与参考

尚无可用资源。

文件📁

没有可用的文件。