BBQ Thermostat

A board-controlled temp probe and fan to maintain temperature during a long smoke or BBQ

Similar projects worth following
I'd like to make my own version of something like the CyberQ ( There are many commercial products out there that will act as a thermostat for a smoker or BBQ, but if they have a web component it's dependent on the "cloud" and proprietary apps. So I want to make my own so that I control all the data.

Currently, here's what I'm considering for the design stage while I try and figure out what board I want to use:

Version 1: BBQ Temp

Version 2: Fan

Version 3: Also measure food temp

  • Store temps as CSV
  • Web server to display
    • Table of CSV values
    • Current temp
    • Graph?
    • Fan speed (how to quantify?)
    • Button to download current CSV table
    • Ability to set target temps
  • Hardware display
    • Current temp
    • Wifi connected or not
  • Small
  • Wifi
  • Preferably can code in Python
  • Save the data for some amount of time? (survive a reboot/power loss)
  • Message when reaches target temp?
  • Use same temp probes as

JPEG Image - 2.95 MB - 09/14/2019 at 20:16


  • Calibration

    eric09/14/2019 at 16:53 0 comments

    Today I did a calibration test with the thermocouple and on the boiling test it came 3° C short. Strangely on the cold water test (couldn't quite get the water to 0° C), it was over 2° C. I would have expected it to be 3° C short all along the range. However, coming up 2-3° C short was consistent with the room temp it tends to read compared to the reference temp. ALSO, for a BBQ thermostat, a 2-3° C different from actual temperature doesn't matter. Usually we're talking about being OK if your smoker or BBQ temps are between 225°F and 260°F for a low and slow cook. So I plan to edit my Arduino code to compensate.

    One thing I am curious about how to solve is the random spike or dip in temperature. I don't want that to affect the fan until the next time a reading is taken. I wonder if I should just expect only a certain delta in temperature within a minute and throw out anything over that range. I'll have to continue to think about it.

  • Making great progress

    eric08/25/2019 at 20:40 0 comments

    After being stuck forever because I didn't realize the noise on the 5V line was causing me trouble, things seem to be going much more quickly now. I've now got the code setup to send data to my MQTT broker. I can see it in Home Assistant and in Python's Eclipse Paho client. Next step is calibration (I think I need roughly a +2C adjustment) and then a test from out in the smoker. At that point I'll know that everything up to the point of controlling the fan works.

  • Some code!

    eric08/22/2019 at 23:37 0 comments

    You can now go to to see the code for the project. First step was to get THERM and WiFi code together and make sure it compiles. Next up is to get MQTT code compiling.

  • When debugging it's never what you think it is

    eric08/22/2019 at 00:39 0 comments

    In the previous project log I mentioned that I was getting nonsense values from the thermocouple. I tried everything to figure out what was wrong. I even bought a different thermocouple ( Still the same issue. I posted to reddit and the Arduino forums. What I learned on the Arduino forums is that there's another library I can use for the therm chip (separate from the official Arduino one) that makes it easy to see what errors one is getting. But still no success. I was getting really bummed - I was still in one of the easiest parts of the development phase.

    I tried different USB cables and got some slightly different, but inconsistent results. Maybe it was the USB ports on my computer? So I installed Arduino IDE on my laptop, got the code on there, and .... it was exactly the same. I had read that full E/M environment could mess with the sensor. So I unplugged my laptop and took it to my bedroom. There..... it worked! REALLY? Was it the wifi router in the office?

    So I came back into the office. It was still working! I plugged in my laptop and things went screwy again. I took this to the net and it seems the consensus is that the voltage is very noisy on the 5V line and that screws with the tiny measurements being made on the thermocouple. So it looks like I'll be doing debugging on a battery-powered laptop. Also, I may have to make sure the final project runs on battery power rather than AC power. We'll see.

  • The Real Making Begins

    eric08/09/2019 at 01:05 0 comments

    All the parts have arrived. Unfortunately, when I plug in the thermocouple, while I get a correct reference temp of 24.19 °C, I get a nonsensical 1073741760.00 °C as the thermocouple reading. Now, it arrived with a damaged-looking sheath, so maybe the cable is messed up. But maybe not? And this is why I gave this post the title I did. I've done a lot of software debugging in the past, but this is the first time doing hardware debugging. I'm GUESSING that since the reference temperature coming in makes sense for the temp I have the house A/C set for, that the connections between the MKR THERM shield and the MKR WiFi 1010 are fine. I'm also assuming that means the Arduino_MKRTHERM.h that I'm importing is fine.

    Of course, it's possible that something is wrong with the inputs on the THERM shield, but unless it's a wiring error on the board, I don't think so because I get the same readings whether I use the screw mounts or the k-couple inputs (although that requires some futzing around since I don't have a k-connector on this wire). 

    Adafruit was great about an RMA for the wire since (again) it came with what looked like a damaged sheath, but I'm left not yet knowing at this point where the problem lies and how much of an issue this is for my project.

    Of course, there's always the possibility of shelling out for some Thermoworks k-couples - then I'd be a lot more certain if the issue persisted that it wasn't with the cable.

    That's where hardware debugging is a lot more expensive than software debugging.

    But that's why this is where the real making begins....

  • Selected and Purchased a board

    eric08/04/2019 at 15:26 0 comments

    After a lot of research and deliberation, I went with an Arduino MKR 1010 board since it's got both WiFi and Bluetooth. I also got the MKRTHERM shield. I had been considering the breakout board the Adafruit sells that has the same controller on it (the MAX31855), but rather than have to have a messy breadboard for no reason, I figured the shield would work better. I *did* end up ordering the K-thermocouple from Adafruit as they had a decent one for $10. I think it goes up to 500F and I plan to use this for my smoker, so I wouldn't need it to go any higher than 375F and they tend to be more accurate in the middle of their range.

    So that's pretty neat! Next step will be the get the board and flash it with the example code and test it against ambient temp, ice water, and boiling water. After that I'll probably work on the WiFi and server code. Then I'll worry about local display. Once all that is working correctly it'll be time to tackle the fan chunk of this project - which I think is probably going to be the hardest part. (Although I haven't done too much searching, maybe someone out there has some code I can use as a starting point) I'm pretty excited!

View all 6 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates