IR Thermometer, Stopwatch, Cooking Timer, Inactivity Tracker Using Arduino

IR Thermometer Stopwatch Cooking Timer Inactivity Tracker

Hardware components:A000066 iso both

Arduino UNO & Genuino UNO


Adafruit MLX90614


Atmel AVR for Arduino

×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


30 mm Red Push Switch
any big red push switch


22 mm White Push Switch

×1 Adafruit industries ada1536 image



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

×1 Software apps and online services:Ide web

Arduino IDE

IR Thermometer Stopwatch Cooking Timer Inactivity Tracker



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 TrackerCircuit of IR Thermometer Stopwatch Cooking Timer Inactivity Tracker


Test Code Ver 0.1C/C++
// 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

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() {
  attachInterrupt(0, SW1, FALLING);// Interrupt for Swithc 1

  attachInterrupt(1, SW2, FALLING);// Interrupt for Swithc 2
    digitalWrite(PIN_PWR_SENESOR,HIGH); // powers the regulator + IR sensor
  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 for options
  sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);

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

Leave a Comment

Your email address will not be published. Required fields are marked *