
Brew buddy hardware
marcelobarrosufu/brewbuddy
Thermometer, stopwatch, step mash tool, boiling and hop additions controller in a compact instrument !

Thermometer, stopwatch, step mash tool, boiling and hop additions controller in a compact instrument !
Brew buddy hardware is an open-source printed circuit board by marcelobarrosufu, from the marcelobarrosufu/brewbuddy repository on GitHub. It is a 2-layer board of 50 × 50 mm with 45 parts on 29 nets, routed with 403 tracks and 46 vias.
It is built around the STM32F030F4P6, ADR5041BRTZ-R2 and CR2032. Its parts include 14 resistors, 10 connectors, 7 capacitors, 5 switches and 3 ICs. It belongs with the STM32 boards of this library.
BrewBuddy is a compact device for helping homebrewers in their exhausting task of converting malts, hops and yeasts into happiness.
It can be used as a simple thermometer, like any other analog thermometer found in the market but aggregating time control via stopwatch. As you know, time and temperature walk together when brewing a nice beer.
Although BrewBuddy is not a controller, you can program your recipe using a step mash strategy. BrewBuddy will blink a led when an step is finished, indicating that you can heat the mosture again.
When boiling, it is very easy to program your hop additions, waiting for a BrewBuddy indication. Smartphones or additional devices are not required anymore!
BrewBuddy is powered by a regular CR2032 battery, running for 20h! Menus and configurations are simple and intuitive, you will learn all function in minutes.
You can program up to 10 steps/hop additions (time) and the last setup is automatically saved in non volatile memory.
Some videos:
BrewBuddy was created from scracth by me, Marcelo Barros. I am an electrical engineer, professor and home brewer. After some bad experiences with uncalibrated analog thermometers I decided to create my own thermometer, agregating additional functionalities for mashing and boiling.
If you are a 3D expert and wanna help, please contact me. In the next week my new PCBs will arrive and I can ship a complete and working board for those that want to develop or improve the current case.
BrewBuddy firmware was built with low power requirements in mind, generating several actions:
main.c) is only a _WFI (wake for interrupt) call, all code runs in interrupt mode:
Some firmware notes:
bb_scr.c is the main file for OLED screens. OLED screens are a machine state, in fact. Each screen is represented by a function (state) with the prototype bb_scr_list_t bb_screen_function(bool first_time, bb_key_event_t *key), where:
first_time: it is used to indicate when we have a new screen to be presented or the same screen. Static text may be drawn in display using this flag, decreasing the amount of elements that need to be updated at each screen refresh.key: if a key was pressed the information is here.bb_scr_list_t. To include a new state, you must edit the macro XMACRO_SCR_LIST, adding a new state ID and a new function name, like X(BB_SCR_NEW_OP_ID, bb_scr_new_op_boil). After, create a function for bb_scr_new_op_boil and implement the screen and your state changes based on the screen ID and keys pressed.ctrl.c. Again, it is a machine state called at each 1s (see ctrl_sm_run_1s()). Given a proper initialization, steps can be followed by the states implemented in ctrl.c.lmt86.c. Given the current temperature value (in ADC steps) and the amount of steps for a 2.5V reference, the real temperature (in degrees) is calculate (see lmt86_conv_temp_1d()). As we do not use floating point, conversion is based on a mV x degrees table (provided by datasheet). A simple interpolation is performed when the current value is not in the table. The temperature value is multiplied by ten for a minimum precision in integer operations.ssd1306_fonts.c. We are using a small 7x5 font due to flash limits but it is possible to create bigger fonts and better presentation. The SSD1306 driver is minimal as well, a stripped/modified version of original driver provided by stm32f4-discovery.net.persist.c you can find the default value for persistence and the routines to save / restore values from flash. A CRC is provided to check data integrity. The last flash sector (1kB) is used for data storage.At this moment, we do not have flash for anything else, even compiling for release and using size optimization:
| Flash | RAM (data+bss) |
|---|---|
| 15092 of 15360 bytes (98.3%) | 1200 of 4096 bytes (29.3%) |
Some steps to add support for a new language:
bb_locale_ENUS.h and modify the suffix using a combination of ISO-639 Language Codes and ISO ISO-3166 Country Codes. For instance, you can use bb_locale_ESCL.h for Spanish and Chile.BB_DEFAULT_LOCALE inside bb_locale.h (use your localization file name).BB_TEMP_UNIT_IS_CELSIUS and BB_TEMP_UNIT_LABEL for your corresponding temperature unit (0 and 'F' for Fahrenheit and 1 and 'C' for Celsius).Please, install KiCAD for opening schematics and PCB.
BrewBuddy by Marcelo Barros de Almeida is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. If you want to create a commercial device based on BrewBuddy, please contact me for other licenses and prices.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 5 | SW_SPST | mods:EVQ-Q2B02W | SW1, SW2, SW3, SW4, SW5 |
| 4 | Drill | mods:M3_Connector | J8, J9, J10, J11 |
| 3 | 100K | mods:R_1206_CUSTOM | R10, R11, R12 |
| 3 | 2K | mods:R_1206_CUSTOM | R1, R2, R6 |
| 2 | 100nF | mods:C_1206_CUSTOM | C1, C2 |
| 2 | 1uF | mods:C_1206_CUSTOM | C5, C6 |
| 2 | 30K | mods:R_1206_CUSTOM | R7, R8 |
| 2 | PMV65UNER (NMOS_GSD) | TO_SOT_Packages_SMD:SOT-23 | Q2, Q3 |
| 1 | 0R | mods:R_1206_CUSTOM | R14 |
| 1 | 10K | mods:R_1206_CUSTOM | R3 |
| 1 | 10nF | mods:C_1206_CUSTOM | C4 |
| 1 | 1M | mods:R_1206_CUSTOM | R13 |
| 1 | 22uF | mods:C_1206_CUSTOM | C7 |
| 1 | 300K | mods:R_1206_CUSTOM | R9 |
| 1 | 330R | mods:R_1206_CUSTOM | R4 |
| 1 | 3K | mods:R_1206_CUSTOM | R5 |
| 1 | 4.7uF | mods:C_1206_CUSTOM | C3 |
| 1 | ADR5041BRTZ | TO_SOT_Packages_SMD:SOT-23 | U3 |
| 1 | CR2032 | mods:BAT-HLD-001-THM | BT1 |
| 1 | JTAG | Pin_Headers:Pin_Header_Straight_1x05 | J1 |
| 1 | LED | LEDs:LED-3MM | D1 |
| 1 | OLED-DISPLAY-I2C-128X64 | mods:DISPLAY-OLED | U1 |
| 1 | PA5 | mods:TEST-PIN | J7 |
| 1 | PA6 | mods:TEST-PIN | J6 |
| 1 | PA7 | mods:TEST-PIN | J5 |
| 1 | PF1 | mods:TEST-PIN | J2 |
| 1 | PMV48XP (PMOS_GSD) | TO_SOT_Packages_SMD:SOT-23 | Q1 |
| 1 | STM32F030F4 | mods:TSOP-20-STM32F030F4 | U2 |
| 1 | Sensor | Pin_Headers:Pin_Header_Straight_1x03_Pitch2.54mm | J4 |
The 44 most common of 45 parts.

marcelobarrosufu/brewbuddy
Thermometer, stopwatch, step mash tool, boiling and hop additions controller in a compact instrument !




RavenLRS/Flock
Flock is an inter-craft communication system intended mainly for radio controlled vehicles


electroniceel/stm32f0..f-breakout
STM32F0..F (TSSOP20) Breakout Module


pchmura4/BMW-Pioneer_interface
Interface between BMW E46 steering wheel to control Pioneer aftermarket headunits
It measures 50 × 50 mm and has 2 copper layers, 1.6 mm thick.
45 parts, built around the STM32F030F4P6, ADR5041BRTZ-R2 and CR2032. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the marcelobarrosufu/brewbuddy repository on GitHub, at the commit this page was made from: the board is brew_buddy_hardware/R1/bb.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask marcelobarrosufu before reusing the design.