Projects / Cooking

BBQ & Oven Thermometer

A thermocouple probe for the meat and an infrared sensor for the grill surface.

Beginner⏱ 1 hour2 ElectroTrical boards

Overview

A type-K thermocouple handles oven and grill temperatures that would destroy ordinary probes. The ET-S19 reads it with 19-bit resolution, cold-junction compensation and fault detection, so you know if the probe is unplugged or shorted.

The ET-S22 infrared thermometer reads the grill plate or pizza stone without touching it. A buzzer sounds when the meat reaches your target temperature.

  • Thermocouple probe up to 1,000 °C+ (probe-dependent)
  • Non-contact surface temperature
  • Open-probe and short-circuit fault detection
  • Target-temperature buzzer

What you need

ElectroTrical boards

MAX31856 Thermocouple Amplifier
ET-S19MAX31856 Thermocouple AmplifierMAX31856 thermocouple amplifier (SPI)
AED 59.00Out of stock
MLX90614 IR Thermometer
ET-S22MLX90614 IR ThermometerMLX90614 non-contact IR thermometer (I²C)
AED 49.00Out of stock

Boards total: AED 108.00

These boards are being manufactured. Open a board's page to see when it's back, or ask us about a kit.

You'll also need

  • ESP32-S3 DevKitC-1 (or any ESP32-S3 board) with a USB-C data cable. Not sold by ElectroTrical.
  • Type-K food-grade thermocouple probe (stainless, with miniature connector or bare wires)
  • Active 3.3 V buzzer
  • Jumper wires

Wiring

Type-K colours: in the IEC standard + is green and − is white; in the US standard + is yellow and − is red. If the temperature falls when you heat the probe, swap the two wires.

ESP32 → ET-S19 (SPI)

FromToNote
ESP32 3V3VIN
ESP32 GNDGND
ESP32 GPIO12SCK
ESP32 GPIO11SDIMOSI
ESP32 GPIO13SDOMISO
ESP32 GPIO10CS

Thermocouple → ET-S19 screw terminal

FromToNote
Probe + wire+
Probe − wire−

ESP32 → ET-S22 (I²C)

FromToNote
ESP32 3V3VINVIN sets the I²C logic level. Keep it at 3.3 V for the ESP32.
ESP32 GNDGND
ESP32 GPIO8SDA
ESP32 GPIO9SCL

Buzzer

FromToNote
ESP32 GPIO7Buzzer +
ESP32 GNDBuzzer −

Build it

  1. 01

    Set up the Arduino IDE

    Install Arduino IDE 2, add the Espressif ESP32 board package (Boards Manager → “esp32” by Espressif), select “ESP32S3 Dev Module” and turn on USB CDC On Boot so Serial prints over USB. Install the libraries listed above the sketch from Library Manager.

  2. 02

    Check at room and boiling temperature

    With the probe in air it should read room temperature. In boiling water it should read about 100 °C.

  3. 03

    Set the target

    Change TARGET_C in the sketch — for example 63 °C for medium-rare beef or 74 °C for chicken.

  4. 04

    Aim the IR sensor

    The MLX90614 averages a wide cone (about 90°). Hold it 2–5 cm above the surface you want to measure, and keep the board itself out of the heat.

Arduino code

Written for the ESP32-S3 DevKitC-1 with the Espressif Arduino core. Install these libraries from the Arduino Library Manager:

  • Adafruit MAX31856 library
  • Adafruit MLX90614 Library
bbq_thermometer.ino
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_MAX31856.h>
#include <Adafruit_MLX90614.h>

const int   CS_PIN = 10;
const int   BUZZER_PIN = 7;
const float TARGET_C = 63.0;

Adafruit_MAX31856 tc(CS_PIN);
Adafruit_MLX90614 ir;

void setup() {
  Serial.begin(115200);
  pinMode(BUZZER_PIN, OUTPUT);

  SPI.begin(12, 13, 11, CS_PIN);    // SCK, MISO, MOSI, CS
  if (!tc.begin()) Serial.println("MAX31856 not found");
  tc.setThermocoupleType(MAX31856_TCTYPE_K);
  tc.setConversionMode(MAX31856_CONTINUOUS);

  Wire.begin(8, 9);
  if (!ir.begin()) Serial.println("MLX90614 not found (0x5A)");
}

void loop() {
  float probe = tc.readThermocoupleTemperature();
  uint8_t fault = tc.readFault();
  float surface = ir.readObjectTempC();

  if (fault & MAX31856_FAULT_OPEN) {
    Serial.println("Probe not connected");
  } else if (fault) {
    Serial.printf("Thermocouple fault 0x%02X\n", fault);
  } else {
    Serial.printf("Probe %.1f C | Surface %.1f C\n", probe, surface);
  }

  bool done = !fault && probe >= TARGET_C;
  digitalWrite(BUZZER_PIN, done && (millis() / 500) % 2);   // beep
  delay(500);
}

Troubleshooting

“Probe not connected”

The thermocouple wires are loose or the probe is broken. Check the screw terminal and the probe's continuity.

Temperature goes down when heated

The thermocouple wires are reversed. Swap them in the screw terminal.

IR reading lower than expected on a pan

Shiny stainless steel reflects infrared. Measure seasoned cast iron, the food itself, or a strip of matt tape.

Take it further

  • Show both temperatures on a phone page over Wi-Fi
  • Add a second ET-S19 for a second probe (separate CS pin)
  • Drive a fan on a MOSFET board to control charcoal temperature

Turning this into a product?

We design custom boards that combine these sensors on one PCB, with firmware and production.