Picture of Arduino Sous-Vide Cooker
Sous-vide cooking allows you to precisely control the temperature of cooked food (how "doneness" is measured) by immersing it in a carefully controlled water bath. It's possible, but seriously difficult, to do this just with a thermometer and a pot on the stove... but if you have an Arduino do all the hard work for you, you can literally "set it and forget it."


- Arduino microcontroller (I use the Uno... any will do)
- thermistor, or other temperature sensor (I used this one from Sparkfun )
- 3/16" diameter aluminum or copper tube, about 6" long
- shrink tubing
- clear silicone caulk
- relay controller (this one from Sparkfun is nice, but you can make your own pretty easily)
- 9V battery or 9V power adapter
- AC oulet
- AC power cord with bare leads
- project box (I used an old cigar box)
- Crock-Pot or similar slow cooker (must have "On" setting... the dumber, the better)
- display (optional, but nice to have)
- various hookup wires
- Ziploc bags or vacuum sealer

Disclaimer: this project involves household current, which is dangerous if you don't know what you're doing. If you've never dealt with household current and don't want to mess with it, go with the Powerswitch Tail II from the Makershed or Sparkfun instead of using the relay controller and AC outlet. Please be careful, and don't hurt yourself.
sjev1 year ago
I have taken a very quick look at your relay schematic, The thing I'm missing there is galvanic isolation.
When working with high voltages which are potentially lethal, you should ALWAYS use galvanic isolation, a simple opto-isolator between arduino and the relay will do fine.

srw777 sjev9 months ago

A relay, pretty much by definition, provides galvanic isolation. The only reason you might need to use an opto is if you're building your own solid-state relay using a TRIAC.

achupick642 years ago
I set up everything exactly how the instruction does it, sans the relay, just hooked up to my pc for testing. However I get unusually high reading when it powers on and i know its not 116 degrees in my room. I'm a total noob and was wondering how i could remedy this issue.

When you are writing your code, initialize your variable to room temp. You can also include a delay before it starts outputting the temperature. Like, wait ten seconds before first read.

czeigler1 year ago
I really appreciated the step by step on this project as it helped me with a few ideas I have. I am trying to convert a 17gal. beer cooler and so, will need to somehow attach my own heating element(s) to the top or the side without burning the cooler. How could I adjust the arduino code to compensate for this added function?