Sous Vide cooking with ESP8266

sousvide controller breadboard

We have a couple of members interested in the geeky side of cookery, and our experimental foods day a little while ago was a great success.

Along these lines, I wanted to try sous vide cooking, a style of cooking in which foods are held at an accurately regulated temperature in order to favour some cooking reactions over others. It’s most commonly used when cooking meats, resulting in amazingly tender, juicy meat even from the toughest cuts. People with an interest in food chemistry — as a biologist by training, I’m definitely one of them — can also have a fascinating time experimenting with the cooking of, for example, the humble egg.

This project was to turn my slow cooker into a sous vide water bath. Along with several other SHH&M members, I’ve been playing with the ESP8266 microcontroller: a great little chip with easy WiFi connectivity, a decent number of GPIO pins and, fairly recently, support in the Arduino IDE, making it very easily accessible to anyone with some passing familiarity with using Arduino. As part of our hackspace renovation project we’re setting up a system of sensors and effectors that communicate using the excellent MQTT messaging protocol; there’s a great Arduino libraries for MQTT, so getting my sous vide controller to report its heating activity and my food’s temperature over WiFi was simple.

On the breadboard, you can see a ESP8266-12E with a silvery enclosure and the etched WiFi antenna. It takes input from a waterproof DS18B20 temperature probe using the standard Arduino library, which works perfectly with the ESP despite some warnings thrown up by the compiler. The ESP gets its power from a switch-mode (“bucky”) voltage regulator set to 3.3v; a second voltage regulator next to it provides 5v to the 240v AC relay. Both are fed from a 12v, 1A wall wart, not shown here. The relay, isolated from touch and moisture in its lunchbox housing, controls the power running through a short extension lead and happily accepts the 3.3v control signal from one of the ESP’s GPIO pins. The cluster of unused wires in the top right of the breadboard are in place to connect with my USB->serial board, in case I need to reflash firmware or debug over serial.

In use, the slow cooker is turned to “high” and plugged into the modified extension lead. The ESP8266 monitors the temperature in the slow cooker via the waterproof temperature probe and, by switching the relay, controls the heating. The logic is managed by a popular Arduino PID library, based heavily on their example code for relay-controlled systems.

Temperature data from about 20 hours of sous vide cooking

Temperature data from about 20 hours of sous vide cooking

PID algorithm output -- in each 10 second chunk of time, for how many seconds the heating element was receiving power, over about 20 hours of sous vide cooking

PID algorithm output — in each 10 second chunk of time, for how many seconds the heating element was receiving power, over about 20 hours of sous vide cooking

Data from the sous vide controller is reported over WiFi via MQTT, meaning that I could keep an eye on the two critical parameters (current temperature and how hard it was working to increase the temperature) using my laptop, phone, or, in principle, other ESP or Arduino devices connected to my flat’s WiFi. The excellent MQTT Spy even generates handy graphs from your incoming data in real time, bringing the food geekery to new heights. In future, also sending the data to something like data.sparkfun, to easily monitor and graph data when I’m out of the flat, should be straightforward.

The most important part of the post: The resulting food is amazing! So far I’ve only used it for meat, although there are plenty of interesting things like eggs and custards that I’m keen to try. Traditionally tough cuts of meat — shoulder of lamb, beef brisket — come out rare, tender, and juicy, with their distinctive flavours intact. More tender cuts, like sirloin steak, are done to perfection every time and, really, have to be tried to be believed. This was a quick and hacky project, but the results are fantastic. Definitely a success, and well worth making yourself.

The PID algorithm needs tweaking to improve temperature regulation to within a degree or two (easy but time consuming, and in the current warm weather I’m trying to avoid having a bath of hot water sitting in my well-insulated flat for hours on end), it needs to go in a case, and it needs a better control mechanism than re-flashing the firmware to change the target temperature. Getting the ESP to host a simple web page displaying controls — or even to just accept commands over MQTT — should be simple enough.

If you’re interested in learning to make this sort of project — or already know how, and want to meet up or work with others who do — come along to SHH&M! Get in touch with us here, or look at our calendar and just turn up to one of our scheduled meetings and introduce yourself.