I must confess that I've got a couple bad habits. The first is that sometimes I'll get hung up on doing something perfectly and let that stall out a project. My other bad habit is that I'm a smoker. It's a filthy habit, but I really like brisket.
Why do I bring this up? When I was planning my data logging app, one of the things I thought it would be cool to log was the temperature in my smoker. It'd be really spiffy to be able to check the temperature in the smoker without traipsing across the back yard. Especially on damp days like today.
It got derailed when I realized I needed a small guage metal tube to protect the temperature probe (otherwise it'll get covered in tar). I started looking around for them, found a couple possible sources that I wasn't 100% thrilled about and never got around to putting everything together.
Until today. It's wet outside and I'm smoking.
This was a quick job, so I didn't bother trying to make it pretty.
It consists of an arduino diecemila, XBee shield, a tiny breadboard, a type K thermocouple and a max6675 thermocouple amplifier on a breakout board. I soldered the leads from the thermocouple to a couple header pins so they'd be easier to work with. I wrapped the tip of the temperature probe in some aluminum foil to keep the smoke off and stuck the tip down the chimney of the smoker.
The software was a straightforward modification of the DS18B20 based sensor code, and it reports into the same logging server as all the household sensors. I used the very nice max6675-arduino-library from Ryan McLaughlin. I just needed to initialize the library and then replace the guts of the read_data() function with a call to his read_temp() method. His read_temp() method will average over multiple readings, so the only functional loss was the retry in case of read error logic. That's an issue - I've already had at least one reading come back entirely bogus, but for a quickie job like this that's OK. The code is on github.
This particular hardware implementation is rather limited - past experience indicates the stock Arduino + XBee shield won't be able to run for more than 24 hours on a set of 4 AA batteries. That's acceptable for this particular use, but if I wanted to productize this more I'd need to replace those parts with something that gets better battery life. Likewise putting it in a weather-proof box (perhaps with some fancy plug for the temperature probe) would be very nice.
I expect to have some fun with this. I'll be able to see if all those dire warnings about never opening the oven or the grill are bunk or not. I may also add the capability to send alerts if readings go outside set parameters (e.g. the smoker getting too hot or cold, or the fridge getting too warm). For now, I'm having fun checking the smoker from the comfort of my living room. Not bad for 20 minutes worth of work.
edit: Ryan McLaughlin (who wrote the Max 6675 library) has thermocouples and breakout boards in his shop. It looks like his thermocouples have metal shields on the end, so the Al foil wouldn't be necessary. They also have plugs (to match sockets on his breakout boards). They certainly look nicer than the analogous items from Sparkfun.