Building the Samovar takes 2–4 hours and requires no soldering of SMD components. The core is an ESP32 board (38 pin), to which you connect: 3–4 DS18B20 temperature sensors (boiler, column, head), an MPX5010D pressure sensor, a 28BYJ-48 stepper motor with a ULN2003 driver (the take-off unit), a 12V peristaltic pump, an SSR-25DA relay (heating) and a 1602 LCD display with I2C. Connections are made with terminal blocks and Dupont connectors. Power comes from a 12V 5A supply. The enclosure is a standard DIN-rail box or a 3D print. The wiring diagram is available on EasyEDA, and the 3D models of the enclosure are on Thingiverse. After assembly, the sketch is uploaded through the Arduino IDE, and the controller is ready to work. The only critical point: the correct connection of the DS18B20 (the data line with a 4.7 kOhm pull-up to 3.3V).
You have the necessary parts, and all that is left is to decide how you will build the Samovar: using a board, point-to-point wiring, or a breadboard, and build the Samovar.
Wiring diagram (click the diagram to open it in a new window).
The diagram shows all the parts and how they connect to the ESP32 pins. If you chose to build on a board (a ready-made one or a breadboard), we recommend mounting the ESP32 and the stepper motor driver on sockets. If you accidentally ruin the driver or the ESP32, or you need them in other projects, you will be able to take them off the board.
When installing the step-down voltage regulator, first set the voltage on it, and only then install it on the board, to avoid applying excess voltage to the ESP32 and the sensors.
For the stepper motor to work correctly, the driver must be configured:
The RST and SLP pins must be supplied with 3 V; the board has a jumper H1 for this, and all three pins must be shorted.
To improve the stability and smoothness of the peristaltic pump, you can short the stepper motor driver pins MS1, MS2 and MS3 (this refers to the driver) to 5 volts (the board has switches SW1 for this).
You can read more about the stepper motor driver here
Values of the capacitors and resistors (see here for where to place them): R4k7 – 4.7KOhm; if a button is installed, you need to install a resistor R10k – 10KOhm. Capacitors C1 and C2 – rated for DC voltage of at least 15 volts, capacitance 100 – 400 µF. Capacitors C3 and C4 can be added but are not required: DC voltage above 5 volts, 100-400 µF.
When installing the capacitors, keep in mind that the total capacitance of the capacitors at the regulator input must be greater than that of the capacitors after the regulator output. That is, the capacitance of C3+C4 must be less than C1+C2. Also, do not connect power to the board without the ESP32.
For how to connect the water pump for cooling, see here
Connecting the reflux level sensor (it connects to the VOLUME or LEVEL connector, depending on the board version, by wire colors and by pin order in the connector): blue is ground, yellow is signal, brown is power. The level sensor has a trimmer resistor. If you use a round sensor, its resistor is hidden under the top cover. The cover must be opened, and by turning the trimmer resistor on a running column you adjust the sensitivity of the sensor (clockwise lowers the sensitivity, counterclockwise raises it). On a rectangular sensor the trimmer resistor is on the side of the housing.

If you need to change the reaction time of the reflux level sensor, it is set here:
In the file logic.h, around line 698
//If we have already reacted, we need to wait 40 seconds, because the process is inertial
alarm_h_min = millis() + 1000 * 40;
40 is the number of seconds after which the power will be cut again when the reflux level sensor trips. With a reflux level sensor installed this works in any mode, since it is part of the safety group, to prevent the column from flooding.
in Samovar.h, around line 193:
#define WHLS_ALARM_TIME 3 //Seconds before the reflux level alarm triggers.
Because of reflux fluctuations the sensor can flicker; this parameter sets how many seconds of continuous level sensor triggering must pass before it is considered to have tripped.
What follows applies only to operation in pre-flood mode:
in Samovar.h, around line 540:
#define TIME_C 5 // Wait time in minutes for the pre-flood mode program
– this is the time after which the Samovar will raise the voltage if the reflux level sensor has not tripped.
Connecting the servo to the SERVO1 connector on the board (by wire colors and by pin order in the connector): brown or black is ground, red is power; yellow or white is signal;
Connecting the water flow sensor to the WATERSENSOR connector on the board (by wire colors and by pin order in the connector): yellow is signal, black is ground, red is power.








