A Case for Tinkering
Why I think having fun with microcontrollers is a good business decision
Building production systems is hard the first time around. I’ve made a lot of mistakes and found a lot of solutions. This is not about those lessons, instead it is a case for building a central, redundant control system for the entire physical building.
In short, the goals are
Adjust growing and operation parameters
Respond to events outside of desired ranges
Amplify failure signals
One of the hardest part about growing mushrooms is learning how to build production systems. The reality is that parts break and often those parts have been single points of failure. I’ve lost more batches than I can count. The rate of entropy in a mushroom shop is high. Fans failing, leaking AC coolant lines, temperature sensors unplugging, water lines forgotten off and many more.
The equipment I’ve used to build my production systems over the past 7 years has been piecemeal and for the most part has done their jobs. When a critical piece fails, however, the impacts have been disastrous.
One time, the temperature sensor on my exhaust fan of the incubation room unplugged slightly and the room overheated. I lost everything in that room.
Another time, the exhaust fan in the grow room failed while I was away for a couple of days. This caused the grow room to go into positive pressure which means dirty, spore and mold-filled air to leak back into the rest of the shop.
Pipes coming apart, drains backing up, pressure cookers over pressuring. You get the idea. Let me explain how I’m going to solve this.
I’m going to use inexpensive components, open-source software, a 3D printer and some fumbling to create a central control system for the entire growing operation. Humans will be able to see, control and tweak all the growing parameters as needed. We will also get notified right away whenever something goes wrong.
The system will need to collect data about
CO2
Relative Humidity
Temperature
Air Quality
Data will be viewable via mobile app, or on-site with any device.
The operating system will be HomeAssistant OS (HAOS) running on a Raspberry Pi 4. This device is internet-facing and will communicate with a cluster of nodes on the local network.
Nodes will use Raspberry Pico microcontrollers to gather data from sensors and toggle equipment on and off to maintain a suitable growing environment. These nodes receive instructions from the Pi and can run those instructions even if communication between the Pi and any node fails. When connection is available, the node streams data back to the Pi, which in turn exposes data, like Grow room 1 Temperature, to the client through the dashboard.
The equipment I want to control includes
Duct fans
Humidifiers
A/C Unit
Pressure cookers
Steam generator
HEPA fans
Each room and each process will have it’s own settings and nuances to figure out. I will also be able to build and implement each room and process individually, building the a functioning system over time.
All the nodes rely on a common backbone, so this will be the first thing to implement.
The first milestones looks like this:
- Raspberry Pi 4 running HAOS at the shop
- Access dashboard locally and remotely
- Configure 1 node to blink an LED and read 1 temperature sensor
- Some snazzy cases to protect the gear
Let’s see how it goes.

