Arduino Projects   |   Raspberry Pi   |   Electronic Circuits   |   AVR   |   PIC   |   8051   |   Electronic Projects

Internet-of-Things-Sous-Vide Cooker Project

Submitted By: 

Shalini Verma

Attention cuisine lovers, this project by Chuck Tung, is an embedded micro-controller project, named as "Internet-of-Things Sous-Vide Cooker". Inspired by the book called "Modernist Cuisine", acquainted him with sous-vide, which offers a high-end crock pot and every time cooks your food effortlessly with perfection, without fail. But the machine is costly and take hours to cook. So, Tung decided to build his own sous-vide machine and completely turned it into a smart, internet-connected device.

The list of items required for this project are Crock pot, solid-state-relay to control power to the crock pot, Arduino using the PID library to control the solid state relay, waterproof DS18B20 to measure the water temperature, Ethernet shield to provide internet connectivity, MQTT client protocol running on the Arduino for M2M communication, raspberry pi running a MQTT broker, node.js, Apache and PHP, node.js script that subscribes to the MQTT broker, and logs all temperature data to a file, Google charts API to render real-time plots of the sous-vide in operation and an aquarium air pump to blow bubbles into the water to help circulate the water.


The code for Arduino is responsible for measuring the water temperature using the DS18B20 temperature setting. This is fed into a Proportional-Integral-Derivative (PID) controller forcomputing the optimal duty cycle for the pulse-width-modulated (PWM) signal. The signal is sent to the relay, where the PWM cycle is 5 seconds. Hence, in every PWM cycle, 20% duty cycle would turn the relay on for 1 second and off for 4 seconds.

LCD is controlled via LiquidCrystal.h library, which helps in watching the temperature setpoint (S) the actual temperature (A) and the PWM output (O) measured in milliseconds. The temperature is set using a 10k potentiometer wired into one of the analog pins.

For communication with the Ethernet shield, Ethernet.h library is used, which is appropriate for v1.0 and supports DHCP. This means that an IP address can be obtained through plug and play. In order to interface with the DS18B20 one-wire temperature sensor, OneWire.h and DallasTemperature.h libraries are used while PubSubClient.h library is to implement the Multiple-Queue-Telemetry-Transport (MQTT) protocol.

Check out the following link for codes and other details.