Software System (source code)
The Brewnode software needs to:
- Provide low level control of the hardware.
- Provide high level control of the brew process.
- Allow remote control and monitoring of the system.
- Be fully autonomous.
- Manage a database of recipes and brews.
- Record data from all sensors.
All software is written using Javascript . Why? Well …
- Simple server creation
- Natural interface to Web Clients
- Raspberry Pi drivers available on NPM
- Simple Sockets implementation allows data to be pushed from server to client.
Drivers
Each of the transducers have an associated driver that sends or receives data.
- Motorized Valves
- Open/Close
- Monitor status.
- Pumps
- Switch On & Off.
- Temperature Sensors
- Read temperature
- Flow Sensors
- Sample data.
- Calculate flow rate.
- Weigh Scales
- Sample ADC
- Convert to weight.
- Temperature compensation.
- Heating Element
- Switch On & Off
- Modulate power.
- Extractor Fan
- Switch On & Off
The Brew Process
Built on top of the drivers are the routines necessary to make beer. Brewnode needs to extract recipes from an remote database and perform a series of steps involving the following actions:
- Fill kettle with desired quantity.
- Preheat kettle to strike temp.
- Transfer kettle contents to Mash Tun
- Mash
-
- Continuous transfer between Mash Tun and Kettle.
- Maintain a predefined temperature profile over time.
-
- PreBoil
- Transfer Mash Tun contents to Kettle
- Boil
- Boil the kettle contents
- Chill
- Transfer Kettle contents to fermenter via chiller.
- Ferment
- Monitor the alcohol content during fermentation.
- This is done by knowing the volume of wort transferred to the fermeneter along with its weight.
- OG = OriginalMass / Volume
- FG = FinalMass / Volume
- ABV = ((76.08*(OG-FG)/(1.775-OG))*(FG/0.794))
Brew Data
Recipes shall be selected from a database for brewing. During the brew process data from all sensors shall be recorded. This data shall be stored in a remote database. A web app shall present this data for user perusal and analysis.
Monitor
This will be a simple control panel used to only monitor the current process. Basically a graphical interface displaying data from all sensors. This will be publicly available on this website for the world to see and join in the fun.
Controller
The controller shall allow semi-automatic control of the entire process. This means providing a graphical interface to allow control of all inputs to the system. This provides a remote mechanism