Build a Solder-free BrewPi
Control your fermentation temperatures with professional accuracy using an ESP8266 and jumper wires. No soldering iron required.
What is BrewPi?
What is BrewPi?
BrewPi is an open-source fermentation temperature controller that gives you professional-level control over your brewing process. Originally designed around an Arduino, the modern BrewPi-ESP project uses the affordable ESP8266 or ESP32 microcontroller to manage heating and cooling elements connected to your fermentation chamber.
Why Temperature Control Matters
Consistent fermentation temperature is one of the most important factors in producing great beer. Even small fluctuations can produce off-flavors, stalled fermentations, or inconsistent results batch to batch. BrewPi solves this by continuously monitoring your wort temperature and adjusting heating/cooling to follow a precise temperature profile.
How It Works
The BrewPi-ESP system consists of three main components:
- Temperature sensors (DS18B20) that monitor your wort and chamber temperatures
- An ESP8266/ESP32 microcontroller that runs the control algorithm
- Relay switches that turn your heating and cooling devices on and off
The controller reads sensor data, compares it to your target profile, and activates heating or cooling as needed. You can set simple static temperatures or complex multi-day profiles that ramp up or down over time — perfect for lager fermentation schedules.
What You'll Need
Parts Needed
| Part | Qty |
|---|---|
| ESP8266 NodeMCU | ×1 |
| DS18B20 temperature sensor (waterproof) | ×2 |
| 4.7kΩ resistor | ×2 |
| Relay module (2-channel) | ×1 |
| 5V power supply (micro-USB) | ×1 |
| Jumper wires (assorted) | ×10 |
What You'll Need
Before you start building your BrewPi-ESP, gather all the parts listed above. Most components are readily available from electronics suppliers or online marketplaces. The total cost for the electronics is typically under $25 USD.
Choosing Your ESP8266
The ESP8266 NodeMCU is the recommended board for this project. It includes a built-in USB-to-serial converter, making firmware flashing straightforward. Make sure you get the NodeMCU v1.0 (also called V2 by some sellers) with the CP2102 or CH340 USB chip.
Temperature Sensors
We use DS18B20 sensors in the waterproof probe form factor. You'll need at least two — one for the wort (beer) temperature and one for the chamber (fridge) temperature. These sensors use the OneWire protocol, so they can all share a single data pin on the ESP8266.
Tools You'll Need
- A computer with a USB port (for flashing firmware)
- A micro-USB cable
- Wire strippers (if using bare wire connections)
- A small Phillips screwdriver (for relay terminals)
Since we're avoiding soldering, you'll also need: male-to-female jumper wires (at least 10), a half-size breadboard, and a micro-USB cable.
Wire the ESP8266 on a Breadboard
Parts Needed
| Part | Qty |
|---|---|
| ESP8266 NodeMCU | ×1 |
| Half-size breadboard | ×1 |
| Male-to-female jumper wires | ×6 |
Wire the ESP8266 on a Breadboard
Place the ESP8266 NodeMCU module onto your breadboard so that it straddles the center channel. The pins should fit into the breadboard holes on either side. Press down firmly but gently until the module is seated securely.
Pin Connections
Using your jumper wires, make the following connections:
| ESP8266 Pin | Connects To | Purpose |
|---|---|---|
| D4 (GPIO2) | DS18B20 Data | Temperature sensor data line |
| D1 (GPIO5) | Relay IN1 | Cooling relay control |
| D2 (GPIO4) | Relay IN2 | Heating relay control |
| 3V3 | DS18B20 VCC | Sensor power |
| GND | DS18B20 GND | Sensor ground |
| VIN | Relay VCC | Relay module power |
Important Notes
- Double-check all connections before powering on. Incorrect wiring can damage the ESP8266.
- The 4.7kΩ pull-up resistor goes between the DS18B20 data line (D4) and 3V3.
- Keep the wiring tidy to make troubleshooting easier later.

Set Up the DS18B20 Temperature Sensors
Parts Needed
| Part | Qty |
|---|---|
| DS18B20 waterproof temperature sensor | ×2 |
| 4.7kΩ resistor | ×1 |
Set Up the DS18B20 Temperature Sensors
The DS18B20 is a digital temperature sensor that communicates over a single wire (OneWire protocol). Each sensor has a unique 64-bit address, allowing multiple sensors to share the same data pin.
Wiring the Sensors
Each DS18B20 waterproof probe has three wires:
| Wire Color | Function | Connect To |
|---|---|---|
| Red | VCC (Power) | 3.3V |
| Black | GND (Ground) | GND |
| Yellow/White | Data | GPIO2 (D4) |
Connect the 4.7kΩ pull-up resistor between the Data line and VCC. This resistor is essential for reliable communication — without it, the sensors may give intermittent readings or fail to respond.
Sensor Placement
- Wort sensor: Tape or strap this sensor to the side of your fermenter, about one-third of the way up from the bottom. Insulate it with foam or bubble wrap to ensure it reads the wort temperature, not the chamber air.
- Chamber sensor: Place this sensor inside your fermentation chamber, away from direct contact with the fermenter or any heating/cooling elements.
Testing Individual Sensors
Before connecting everything together, it's a good idea to test each sensor individually. We'll cover this in detail in the sensor verification step later.
Flash the BrewPi-ESP Firmware
Flash the BrewPi-ESP Firmware
The BrewPi-ESP firmware is the software that runs on your ESP8266 and controls the fermentation process. In this step, we'll download the firmware and flash it to your board.
Prerequisites
You'll need one of the following tools to flash the firmware:
- esptool.py (Python-based, works on all platforms)
- NodeMCU Flasher (Windows only, GUI-based)
- PlatformIO (for advanced users who want to compile from source)
Download the Firmware
Download the latest pre-compiled firmware binary from the BrewPi-ESP releases page. Choose the file that matches your ESP8266 board (usually brewpi-esp8266.bin).
Here's a walkthrough of the flashing process:
Flashing with esptool.py
# Install esptool
pip install esptool
# Flash the firmware (replace /dev/ttyUSB0 with your serial port)
esptool.py --port /dev/ttyUSB0 --baud 115200 write_flash 0x00000 brewpi-esp8266.bin
Flashing with NodeMCU Flasher
- Open NodeMCU Flasher
- Select your COM port from the dropdown
- Go to the Config tab and select the firmware binary
- Click "Flash" and wait for completion
Verifying the Flash
After flashing, the ESP8266 will reboot automatically. You should see a new WiFi network appear called "BrewPi-ESP" — this confirms the firmware is running correctly.
Configure WiFi on BrewPi-ESP
Configure WiFi on BrewPi-ESP
Now that the firmware is flashed, you need to connect the BrewPi-ESP to your home WiFi network. The device creates its own access point for initial configuration.
Connect to the Setup Network
- On your phone or computer, look for a WiFi network called BrewPi-ESP (or similar)
- Connect to this network (no password required on first setup)
- A captive portal should open automatically. If not, navigate to
http://192.168.4.1in your browser
Enter Your WiFi Credentials
In the configuration portal:
- Click Configure WiFi
- Select your home WiFi network from the list
- Enter your WiFi password
- Click Save
The ESP8266 will restart and connect to your home network. The setup access point will disappear.
Finding Your BrewPi on the Network
After connecting to WiFi, you can find the BrewPi-ESP's IP address in several ways:
- Check your router's DHCP client list
- Use a network scanner app (like Fing on mobile)
- Look for
brewpi.localif mDNS is supported on your network
Navigate to the IP address in your browser to access the BrewPi-ESP web interface.
Set Up a Fermentation Profile
Set Up a Fermentation Profile
A fermentation profile tells BrewPi-ESP exactly what temperatures to maintain and when to change them. This is where the real power of temperature control shines — you can create complex schedules that would be impossible to manage manually.
Accessing the Web Interface
Open your browser and navigate to your BrewPi-ESP's IP address. You should see the main dashboard showing current temperatures and the control panel.
Creating a Simple Profile
For your first brew, start with a simple static temperature:
- Go to Settings > Temperature Profile
- Set the mode to Beer Profile
- Add a single point: Day 0, Temperature 18°C (64°F) for ales or 10°C (50°F) for lagers
- Click Apply
Creating an Advanced Profile
For more complex fermentation schedules, you can add multiple temperature points:
| Day | Temperature | Purpose |
|---|---|---|
| 0 | 18°C (64°F) | Primary fermentation |
| 4 | 20°C (68°F) | Diacetyl rest |
| 7 | 20°C (68°F) | Hold for cleanup |
| 8 | 4°C (39°F) | Cold crash |
| 10 | 4°C (39°F) | Hold cold |
BrewPi will automatically ramp between temperatures, adjusting the heating and cooling to follow the profile as closely as possible.
Monitoring
The web interface shows a real-time graph of both wort and chamber temperatures overlaid with your target profile. Check in periodically to ensure everything is tracking correctly.
Verify Your Temperature Sensors
Verify Your Temperature Sensors
Before putting everything together, let's make sure your DS18B20 sensors are working correctly and reporting accurate temperatures.
Check Sensor Detection
- Open the BrewPi-ESP web interface
- Go to Settings > Devices
- You should see two OneWire devices listed with their unique addresses
If you don't see both sensors, check your wiring — particularly the pull-up resistor and the data line connection.
Verify Accuracy
Hold both sensors together in your hand or place them in a glass of room-temperature water. After a minute, both sensors should report similar temperatures (within 0.5°C of each other).
If the readings differ significantly:
- Try swapping the sensors to rule out a wiring issue
- Check that the pull-up resistor is properly connected
- Ensure the sensors are genuine DS18B20s (counterfeit sensors are common and often less accurate)
Assign Sensor Roles
In the BrewPi-ESP device settings, assign each sensor to its role:
- Beer Sensor: The sensor that will be attached to your fermenter
- Fridge Sensor: The sensor that measures the chamber air temperature
Label your sensor cables with tape so you don't mix them up later.
Full System Test
Full System Test
With everything wired up, firmware flashed, and sensors verified, it's time to test the complete system before trusting it with your next brew.
Relay Test
- In the BrewPi-ESP web interface, go to Settings > Devices
- Manually toggle the cooling relay — you should hear it click and see the relay LED change
- Repeat for the heating relay
- If using a fridge and heat wrap, plug them into the relay outputs and verify they turn on/off
Control Loop Test
Set a target beer temperature slightly below the current room temperature (e.g., if the room is 22°C, set the target to 20°C). The system should:
- Detect that the beer temperature is above the target
- Activate the cooling relay
- Wait for the minimum off-time before switching again
Then set the target above the current temperature. The system should:
- Detect that the beer temperature is below the target
- Activate the heating relay
- Monitor and cycle as needed
Safety Check
Ensure that:
- Only one relay (heating or cooling) is active at a time
- There is a minimum delay between relay switches (to protect your compressor)
- The web interface updates in real-time
Congratulations!
Your BrewPi-ESP is fully assembled and tested. You're ready to start your first temperature-controlled fermentation. Happy brewing!