Home > Ideas > Temperature Measurement Project Ideas > IR Thermometer, Stopwatch, Cooking Timer, Inactivity Tracker

IR Thermometer, Stopwatch, Cooking Timer, Inactivity Tracker

Summary of IR Thermometer, Stopwatch, Cooking Timer, Inactivity Tracker


This article details the construction of a portable, USB-stick-style device integrating an IR thermometer, stopwatch, kitchen timer, and inactivity tracker. Built using an Arduino UNO and an MLX90614 sensor, the project features a 7-segment display for output and multiple push buttons for navigation. The creator assembles the hardware on breadboards, soldering components like voltage regulators and LEDs, then encases the layers with hot glue. Software is developed in the Arduino IDE to manage temperature readings via I2C and handle timing functions using interrupts.

Parts used in the Portable IR Thermometer Project:

  • Arduino UNO & Genuino UNO
  • Adafruit MLX90614
  • Atmel AVR for Arduino 328P/168P/8A
  • SparkFun 7-Segment Serial Display - Red
  • Breadboard (generic)
  • 16 MHz Crystal
  • Slide Switch
  • 30 mm Red Push Switch
  • 22 mm White Push Switch
  • Buzzer
  • Colored pin header (generic)
  • MLX90614 IR Temperature Sensor
  • LED Dot Laser (generic)
  • USB A Connector
  • AMS1117 3.3V Voltage Regulator
  • 150 mAH 3.7V LiPo battery
  • Heat shrink tube
  • 0 Ohm resistors
  • 1k resistors
  • Toothpicks
  • Thin tape
  • Hot glue
Hardware components:
A000066 iso both
Arduino UNO & Genuino UNO
× 1
Adafruit MLX90614
× 1
Atmel AVR for Arduino
328P/168P/8A
× 1
11441 01
SparkFun 7-Segment Serial Display – Red
3 digit display used
× 1
12002 04
Breadboard (generic)
8×2 cm
× 2
160 20
16 MHz Crystal
× 1
E switch eg1218 image 75px
Slide Switch
× 1
30 mm Red Push Switch
any big red push switch
× 1
22 mm White Push Switch
× 1
Adafruit industries ada1536 image
Buzzer
× 1
Colored pin header (generic)
× 1
MLX90614 IR Temperature Sensor
× 1
LED Dot Laser (generic)
× 1
USB A Connector
× 1
AMS1117 3.3V Voltage Regulator
× 1
150 mAH 3.7V LiPo battery
cylindrical
× 1
Software apps and online services:
Ide web
Arduino IDE

 

IR Thermometer, Stopwatch, Cooking Timer, Inactivity Tracker

STORY

Idea

This is a story about making an pocket carry-able USB stick like IR Thermometer made using Arduino programming and some other stuff. The device will also have stopwatch function, kitchen timer and inactivity tracker function.

IR Thermometer is an IR radiation-based temperature sensing device which allows for the measurement of the average temperature of a surface it’s facing – most probably with Wien’s displacement law or Stefan–Boltzmann law from highs school physics.

A stopwatch is a basic time measurement device used in sports, scientific experiment, etc. to measure lapsed time. Today, hardware stopwatches (the analog type) are kind of extinct and replaced by a so-called smartphone app. A kitchen timer is a device that alerts cook by buzzing an alarm set such that something being cooked needs checking.

An inactivity tracker is a periodic timer that alerts a person to move after every X amount of time. This helps one to get a minute break from idle state and practice healthy life.

Making The Thing!

Step 1: Gather all the ingredients, imagine and make a mental map of what goes where!

Take measurements, make necessary holes, place components and solder.

Step 2: Use heat shrink tube and 0 Ohm resistors to interconnect things, 1k resistors on display segment pins, and solder according to the schematic.

Step 3: Interconnect both layers.

Step 4: Upload test code and check if everything operates. If so, align top and bottom layer with toothpicks and warp on both ends with thin tape.

Now, fill the gap with the hot glue and wait 5 minutes. Now, your sturdy device is ready to roll.

Writing the Software

Here, we will use our good old friend, Arduino IDE, to write the program.

Before we get into code, let’s get an idea how the hardware connections affect the code. The small white momentary push button is the menu selector switch which is interrupt driven; the same goes for the big red push button – connected for falling edge INT 0 and INT 1 on Digital Pin 2 and 3.

Digital pin 4 is the buzzer driver pin and A0 is the laser driver pin. A1, A2, A3 are display digit pins; pins 5-12 are segment pins. A4, A5 Digital Pins are for I2C communication with the IR sensor.

Finally, thanks to Dean Reading for the Arduino 7-Segment Library and Limor Fridge for the Arduino MXL90614 Library – life made easy! Based on their library example, the basic code is developed – right now only Ambient and Object Temperature detection function is enables.

I will add the other functions soon! So, stay tuned.

Circuit of IR Thermometer, Stopwatch, Cooking Timer, Inactivity Tracker

Circuit of IR Thermometer, Stopwatch, Cooking Timer, Inactivity Tracker

CODE

Test Code Ver 0.1C/C++
Beta
// Thanks to Lady Ada and Read for MLX90614 and Sevseg library !

#include "SevSeg.h"
#include <Wire.h>
#include <Adafruit_MLX90614.h>


#define PIN_PWR_SENESOR 13
#define PIN_PWR_LASER A0
#define PIN_PRESS_SWITCH1 2
#define PIN_PRESS_SWITCH2 3
#define PIN_BUZZER_ALERM 4

Adafruit_MLX90614 mlx = Adafruit_MLX90614();
SevSeg sevseg; //Instantiate a seven segment controller object


volatile int test =0;
volatile int test2 = 0;
float T_amb;
float T_obj;



void setup() {
   pinMode(PIN_PRESS_SWITCH1, INPUT_PULLUP);
  attachInterrupt(0, SW1, FALLING);// Interrupt for Swithc 1

  pinMode(PIN_PRESS_SWITCH2, INPUT_PULLUP);
  attachInterrupt(1, SW2, FALLING);// Interrupt for Swithc 2
  pinMode(PIN_PWR_SENESOR, OUTPUT);
    pinMode(PIN_PWR_LASER, OUTPUT);
       pinMode(PIN_BUZZER_ALERM, OUTPUT);
    digitalWrite(PIN_PWR_SENESOR,HIGH); // powers the regulator + IR sensor
    digitalWrite(PIN_PWR_LASER,LOW);
       digitalWrite(PIN_BUZZER_ALERM,LOW);
  
  byte numDigits = 3;   
  byte digitPins[] = {A1, A2, A3};
  byte segmentPins[] = {11, 9, 7, 6, 5, 10, 8, 12};
  bool resistorsOnSegments = false; // Use 'true' if on digit pins
  byte hardwareConfig = COMMON_ANODE; // See README.md for options
     
  sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
  sevseg.setBrightness(100);
   mlx.begin();
}

void loop() {
  static unsigned long timer = millis();
  static int seconds = 0;
  
  if (millis() >= timer) {
    seconds++; // 100 milliSeconds is equal to 1 deciSecond
    timer += 1000; 
    if (seconds == 100000) { // Reset to 0 after counting for 1000 seconds.
      seconds=0;
      
    }
    sevseg.setNumber(T_obj, 1);
  }
  if(test==0)
  {
// T_amb = mlx.readAmbientTempC();
 T_obj = mlx.readObjectTempC(); 
sevseg.setNumber(T_obj, 0);
  sevseg.refreshDisplay(); 
   sevseg.refreshDisplay(); 
    sevseg.refreshDisplay(); 
     sevseg.refreshDisplay(); // Must run repeatedly
  }
if (test==1)
{
  T_amb = mlx.readAmbientTempC();
//  T_amb=T_amb*10;
  sevseg.setNumber(T_amb, 1);
  sevseg.refreshDisplay(); 
   sevseg.refreshDisplay();
    sevseg.refreshDisplay(); 
     sevseg.refreshDisplay(); // Must run repeatedly
     
}
}

void SW1()
{
  
  test=1;
  digitalWrite(PIN_PWR_Laser,HIGH);
}
void SW2()
{
  test=0;
  digitalWrite(PIN_PWR_Laser,HIGH);}

Read More: IR Thermometer, Stopwatch, Cooking Timer, Inactivity Tracker

 

Quick Solutions to Questions related to Portable IR Thermometer Project:

  • What is the primary function of the Adafruit MLX90614 sensor?
    The sensor allows for the measurement of the average temperature of a surface it is facing using IR radiation.
  • How are the menu selector and red push button connected in the code?
    The white momentary push button is interrupt driven, while the big red push button is connected for falling edge INT 0 and INT 1 on Digital Pins 2 and 3.
  • Which digital pins are assigned to the buzzer driver and laser driver?
    Digital pin 4 is the buzzer driver pin and A0 is the laser driver pin.
  • What library is used to control the seven-segment display?
    The project uses the Arduino 7-Segment Library provided by Dean Reading.
  • Can the device measure both ambient and object temperatures?
    Yes, the code enables both Ambient and Object Temperature detection functions using the readAmbientTempC and readObjectTempC methods.
  • What is the purpose of the AMS1117 3.3V Voltage Regulator?
    The regulator powers the IR sensor and other components requiring 3.3V from the 3.7V LiPo battery.
  • How does the inactivity tracker feature work?
    It acts as a periodic timer that alerts a person to move after a set amount of time to encourage healthy breaks.
  • What materials are used to seal the final device?
    The gap between the top and bottom layers is filled with hot glue after aligning them with toothpicks and wrapping them with thin tape.
  • Which programming environment is required for this project?
    The Arduino IDE is used to write the program for the microcontroller.

About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:
LinkedinTwitter
Scroll to Top