I built this project because I wanted a greenhouse that could operate with the same level of autonomy and reliability as a 3D printer: load it, configure it, and let it run.
The goal was to design a modular, fully automated greenhouse capable of monitoring and controlling every major environmental variable: temperature, humidity, airflow, lighting, and watering.
More than just a single enclosure, I wanted a system architecture that could scale. The electronics are designed so that multiple independent greenhouse “zones” can be controlled from a shared central controller. That means I could run separate climates for different plant species—or even combine multiple modules into a larger enclosure for plants that need more vertical space.
This project combines several areas I enjoy working in:
Embedded systems design
Custom electronics and PCB development
Environmental sensing and control
Full-stack software development
System architecture and automation
All source schematics, code, and CAD models can be found on the GitHub page.
Overall System Design
The greenhouse is designed as a distributed control system.
A main controller handles high-level logic, scheduling, and future app connectivity, while one or more box controllers manage real-time environmental control for individual greenhouse zones.
Each greenhouse can operate independently, with its own:
Grow lights
Watering system
Heating
Cooling fan
Humidification
Temperature and humidity sensing
This modular architecture allows the system to scale naturally:
Single greenhouse setup for standard apartment growing
Multiple independent enclosures with separate climates
Combined larger enclosures using multiple box controllers
That flexibility was important to me. I wanted the ability to experiment with different plant types and eventually support larger or more demanding species that require long-term environmental stability.
Electronics Subsystem
The electronics are divided into two custom control boards.
Main Controller
The main controller acts as the central coordinator for the system.
Responsibilities include:
Global scheduling
High-level automation logic
Greenhouse configuration management
Communication with box controllers
Remote interface integration (future)
Grow light switching
The main controller distributes power and communicates with each box controller over RS485, allowing reliable expansion to multiple greenhouse modules.
Box Controller
Each greenhouse has a dedicated box controller responsible for local environmental control.
Responsibilities include:
Sensor polling
Temperature regulation
Humidity regulation
Watering control
Fan control
Safety monitoring
By separating local control from system-level logic, the greenhouse can continue operating safely even if communication with the main controller is interrupted.
Sensors and Environmental Monitoring
Current sensing includes:
Air temperature
Relative humidity
Environmental Control Hardware
Each greenhouse can independently control the following systems:
Lighting
Dedicated grow lights provide consistent photoperiod control and remove dependence on apartment lighting conditions.
Watering
Automated irrigation supports scheduled or condition-based watering.
This is especially useful for maintaining consistent moisture without daily intervention.
Heating and Cooling
Temperature regulation is handled through a combination of:
Heating element
Cooling fan
This allows the enclosure to maintain stable temperatures regardless of room conditions.
Humidity Control
A misting system raises humidity when needed, enabling growth of plants that normally require tropical environments.
This is one of the most important capabilities of the system, especially in Tucson’s extremely dry climate.
Power Design
The greenhouse is powered from a central AC-to-DC supply, with distributed power routed to controllers and environmental hardware.
Key design goals included:
Safe operation around water
Modular wiring
Expandability
Easy maintenance and debugging
Hardware Subsystem
Beyond the control electronics, a major part of this project was designing a physical enclosure capable of supporting a fully controlled growing environment inside an apartment.
The enclosure needed to balance several competing requirements:
Maintain environmental isolation
Support airflow and humidity control
Provide easy access for maintenance
Integrate electronics cleanly
Look intentional enough to live indoors
I designed the greenhouse around a modular aluminum frame with transparent panels, creating a rigid but easily reconfigurable structure. This approach allows the enclosure dimensions to be adjusted depending on the plants being grown or the type of experiment being run.
I also designed fixtures to connect the additional components (i.e. grow lights, pump, cooling fan) to the main enclosure, and I designed some corner covers for the main enclosure to cover the visible seams and lift the enclosure off the ground for easy lifting.
Custom Board Enclosures
To keep the electronics protected and organized, I designed custom 3D-printed cases for each control board.
Software Subsystem
Embedded Firmware
The firmware is responsible for translating sensor data into real-world environmental control.
Core functionality includes:
Sensor acquisition
Control loop execution
Device state management
Inter-controller communication
Fault handling
The system is designed around autonomous operation. Once configured, it should be able to maintain environmental conditions with minimal user involvement.
Communication
The main and box controllers communicate over RS485, which provides a simple and reliable physical layer for modular expansion.
This architecture makes it straightforward to add additional greenhouse zones without redesigning the control system.
User Interface (In Progress)
I’m developing a lightweight dashboard for monitoring and configuration.
Planned features include:
Live environmental readings
Historical data visualization
Device control
Alert notifications
Climate profile configuration
The goal is not to constantly manage the greenhouse, but to provide visibility and occasional intervention when needed.
So far, I have made a simple test application using MIT App Inventor for quick and dirty functionality tests.
Current Status
Roadie Approved!
Completed
Enclosure design
Core system architecture
Electronics design
Sensor integration
Controller communication
Environmental hardware integration
In Progress
Control tuning
Software dashboard
Long-duration reliability testing
Future Plans
Multi-greenhouse deployment
Larger modular enclosures
Advanced climate profiles
Historical analytics
Exotic plant experiments