BBQ Aid
Many people can't tell the difference between barbeque and grilling. Heck, we almost always made a fire that put some blacksmiths to shame, just to grill those pork chops under 3 nanoseconds!
(no, really, we used an industrial air compressor to fan the fire up until all the coal was red and no one could get near the grill, literally)
I was introduced to proper BBQ just a few years ago, and fell in love with low and slow. It's now a sunny saturday task to ignite the fire, grill a round of chevap to keep people from starving, and after that, BBQ some pork spare ribs or collar for 6-8 hours, about 120°C (250°F). Of course, it wasn't THAT good on the first and second try, and it failed because of the temperature. It went occasionally too high. How hot was it? You don't know without proper measurement!
Yes, you can buy a smoker with builtin thermometer, but I would like to introduce you to DIY electronics. (or proper cooking if you already know how to program an Arduino, you should try this) It's much fun to tinker and it's always a possibility to upgrade - like adding an audible warning signal or changing the splash screen.
The key to success is controlling the temperature for very long. But since my stuff runs on coal and wood (I find gas BBQ a bit heretic), putting enough solid fuel for 8-10 hours is not an option. I ended up with a small heap of coal and I check it every 20-30 minutes, but we both need a proper thermometer to check the actual temperature. That's what we make today!
Supplies
Arduino Pro Micro
A box
USB cable to sacrifice
MAX31855 module with a thermocouple
SSD1306 128*32 pixel OLED display
Proto PCB
Some capacitors (10 and 1000 uF, at least 10V electrolytic)
(optional) extra pin headers if resoldering
Tools: solder iron, solder, wires
Measuring Hot Stuff
Sensing room temperature? No big deal! Measuring the temperature of the fire? Well, it gets tricky.
First, since the guy with the big white beard invented thermodynamics to punish engineers, hot air tends to go higher. The air thermometer on your smoker measure a different temperature, not Mr. Bacon's cooking temperature. So, we need to measure the temperature as near as possible.
Plan A: get an average NTC thermistor, Pt100/Pt1000 (used for example in 3D printers) or similar. The problem: I don't like the taste of burned plastic, and that's what you get when you put insulated wires in a fire.
Plan B: get a pyrometer (that's the fancy name of those remote infrared stuff), open the smoker, and there goes the heat... Even those builtin air temperature meters are better choice. Also, tricky to measure the flames.
Plan C: Thermocouples. What do you get when you weld 2 metals together? A tiny, and temperature dependent voltage, and we measure this. It's widely used, reasonably priced, and can measure over 1000°C (1800°F) easily. (well, we hopefully don't go that hot since some metal parts would already melt) The sensor leads can handle high temperatures unlike average plastic, and you can buy integrated circuits that do all the magic, you just ask for the measured temperature! Neat. So that's why we use thermocouples.
Mechanical Tasks
After so much theory, be more useful. Get some tools and start tinkering.
Get the USB cable and chop one end off. (obviously not the one you plug in the power bank / charger / whatever)
The box will need some holes. Not very much, only 2 small ones on the side (one for the sensor, one for the power), and one elongated one for the display - of course on the top. Get the drill spinning!
And also cut the proto PCB to fit inside the box.
Positioning
I chose a pretty tight box, so I had some constraints. But at least it's not bulky.
The display comes on the outside, so the pins must be long enough to reach outside of the box. But not too much! The pins are not glued in place, they can be pushed in and out, so fine-tune.
The USB port of the Arduino is used for uploading the software, we will power it from the VCC pin. If you won't forget to flash the firmware before soldering and promise not to update it later, you can block the port, otherwise make it accessible. Those surface-mounted microUSB ports break pretty easily, forcing the plug is forbidden!
Arrange your stuff so you can easily solder the components.
Wiring
If you got a microcontroller without pin header, solder it first.
Place the components on the copper-free side of the protoPCB, and don't forget: if the pins are too long, they will push the PCB away, and maybe you can't solder the OLED properly!
Some parts (like the OLED and the temp sensor module) have those pin headers presoldered, but facing "the wrong direction". It may sound too advanced to desolder and resolder those, but those are pretty big parts, it's not that hard even for beginners. Watch a tutorial how to do it!
The wires. Don't worry: those copper wires I have are coated, regular ones would make lovely short-circuits (and possibly, fire). You may use "regular" wires (and color coding like black = 0V, red = 5V) like everyone else. I just like these.
The wiring is the following:
All VCC goes to the power supply 5V in, all GND to the GND in. In most cases the red is the 5V and black is 0V/ground in the USB cable too. If you are lucky enough to get such a cheap cable that has different colors (I had once) don't assume, measure.
Capacitors helps stabilizing the power, without them funny stuff can happen. And by funny I mean it can be funny for a bystander, but not for you, when it freezes like old computers or randomly restarts. I put one 1000 uF and 10 uF to the main power input, and one extra 10 uF for the OLED. The negative side/lead of an electrolytic capacitor is marked.
Warning! If you have a different Arduino model (not Pro Micro but Pro Mini for example) the pins may not match!
Arduino <-> Temperature sensor
4 <--> CS
14 <--> DO
15 <--> CLK
Arduino <--> display
2 <--> SDA
3 <--> SCL
Software
Now, get Arduino to program Arduino! Confusing?
The board AND the software environment are both called Arduino. The latter one is the Arduino IDE (Integrated Development Environment) and that's what you can download from their homepage.
After installing it and the drivers, your computer can upload new programs to the physical boards.
But first, download the software you will upload to this! Go to my GitHub repo and download the codebase, open the bbqAid.ino with the Arduino IDE, and it's time to fine tune!
Configuration
Go to the highlighted areas. You can easily fine-tune the warning temperature thresholds just by writing new values there. And if you still use Fahrenheit, just put that little word "true" between the parentheses. So simple!
Upload the code. It would be pretty redundant (and boring) to write a whole "how to upload code to Arduino" tutorial, if millions of them exist, even official ones.
Let It Smoke!
If everything went fine, your very own BBQ Aid greets you and starts to display the temperature. Put the thermocouple near those pork chops or chicken wings, and I hope your dinner turns out great!