Projects / Cooking
BBQ & Oven Thermometer
A thermocouple probe for the meat and an infrared sensor for the grill surface.
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
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)
| From | To | Note |
|---|---|---|
| ESP32 3V3 | VIN | |
| ESP32 GND | GND | |
| ESP32 GPIO12 | SCK | |
| ESP32 GPIO11 | SDI | MOSI |
| ESP32 GPIO13 | SDO | MISO |
| ESP32 GPIO10 | CS |
Thermocouple → ET-S19 screw terminal
| From | To | Note |
|---|---|---|
| Probe + wire | + | |
| Probe − wire | − |
ESP32 → ET-S22 (I²C)
| From | To | Note |
|---|---|---|
| ESP32 3V3 | VIN | VIN sets the I²C logic level. Keep it at 3.3 V for the ESP32. |
| ESP32 GND | GND | |
| ESP32 GPIO8 | SDA | |
| ESP32 GPIO9 | SCL |
Buzzer
| From | To | Note |
|---|---|---|
| ESP32 GPIO7 | Buzzer + | |
| ESP32 GND | Buzzer − |
Build it
- 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.
- 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.
- 03
Set the target
Change TARGET_C in the sketch — for example 63 °C for medium-rare beef or 74 °C for chicken.
- 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
#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.