Vertical Garden with Automatic Irrigation System
Create a smart vertical garden with IoT humidity sensors, solar power, and mobile app control. Perfect solution for small spaces.

Have limited space but want to grow your own herbs or vegetables? A vertical garden with automatic irrigation is the perfect solution for balconies, patios, or small gardens. Our system also uses solar energy and IoT technology for complete automation.
System Components
Basic Structure:
- Wooden frame 6'x2.5'x8"
- PET bottles 1.5L (20-30 pieces)
- PVC drainage pipes 1.25"
- Geotextile fabric
- Garden substrate
Irrigation System:
- 12V DC pump (flow 1-2.5 GPM)
- Distribution tubing 6mm
- Adjustable drippers (20-30 pieces)
- Water tank 13-26 gallons
Electronics:
- Arduino Uno or ESP32
- Soil moisture sensors (5-10 pieces)
- Relay module for pump
- 20W solar panel
- 12V/7Ah battery
- Solar charge controller
Estimated Cost: $120-180
Building the Vertical Garden
1. Basic Frame Construction
- Build frame from 2"x2" lumber measuring 6'x2.5'
- Add horizontal cross-pieces every 12"
- Treat wood with outdoor protective coating
- Secure stability with corner brackets
🌱 Tip: Tilt frame slightly backward (5-10°) for better stability
2. Preparing PET Bottles
Recycling PET bottles as planters:
- Wash bottles and remove labels
- Cut 4"x6" opening on side of bottle
- Make 3-4 drainage holes in bottom
- Insert piece of geotextile in neck as filter
3. Installing Drainage System
- Mount drainage trough at bottom of frame
- Connect to tank for catching excess water
- This water can be reused for irrigation
Automatic Irrigation System
1. Water Distribution
- Run main tubing vertically through center of structure
- Create branches at each level
- Bring dripper to each bottle
- Adjust flow according to plant needs
2. Installing Moisture Sensors
// Example code for Arduino
const int sensorPin = A0;
const int relayPin = 7;
const int threshold = 400;
void setup() {
pinMode(relayPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int moisture = analogRead(sensorPin);
if (moisture < threshold) {
digitalWrite(relayPin, HIGH); // Turn on pump
delay(30000); // Water for 30 seconds
digitalWrite(relayPin, LOW); // Turn off pump
}
delay(3600000); // Check every hour
}
3. Solar Power
- Mount solar panel on top of structure
- Connect charge controller to battery
- Power Arduino and pump from battery
- Add fuse for protection
☀️ Calculation: 20W panel covers system consumption even on less sunny days
IoT Integration and Monitoring
1. Wi-Fi Module (ESP32)
Use ESP32 instead of Arduino for Wi-Fi connectivity:
#include <WiFi.h>
#include <ThingSpeak.h>
const char* ssid = "YourWiFi";
const char* password = "YourPassword";
unsigned long channelID = 123456;
void uploadData(int moisture, float temperature) {
ThingSpeak.setField(1, moisture);
ThingSpeak.setField(2, temperature);
ThingSpeak.writeFields(channelID, apiKey);
}
2. Mobile Application
Options for monitoring:
- Blynk: Simple integration with Arduino/ESP32
- ThingSpeak: Charts and data analytics
- Home Assistant: Advanced automation
3. Notifications
Set up alerts for:
- Low water level in tank
- High/low soil moisture
- Pump failure
- Battery discharge
Plant Selection
Ideal plants for vertical garden:
Herbs:
- Basil
- Oregano
- Thyme
- Mint
- Parsley
Vegetables:
- Cherry tomatoes
- Lettuce
- Spinach
- Radishes
- Strawberries
Ornamental Plants:
- Begonias
- Petunias
- Succulents
- Ferns
System Maintenance
Weekly Check:
- Water level in tank
- Dripper functionality
- Plant condition
Monthly Maintenance:
- Filter cleaning
- Electronics check
- Nutrient replenishment
Seasonal Care:
- Substrate replacement
- System winterization
- Sensor calibration
Troubleshooting
Problem | Possible Cause | Solution |
---|---|---|
Plants wilting | Not enough water | Check drippers |
Overwatering | Too frequent watering | Adjust settings |
Pump not running | Dead battery | Check solar panel |
Sensors not working | Contact corrosion | Clean or replace |
Extensions and Improvements
- LED lighting: For indoor growing
- Automatic fertilizing: Liquid fertilizer dispenser
- Rain protection: Rain sensor to disable watering
- Camera: Time-lapse plant growth recording
Environmental Impact
- PET bottle recycling
- Water savings through drip irrigation
- Emission-free solar energy
- Local food production
Advanced Features
Smart Scheduling
#include <RTClib.h>
RTC_DS3231 rtc;
void smartScheduling() {
DateTime now = rtc.now();
// Morning watering (7 AM)
if (now.hour() == 7 && now.minute() == 0) {
startWatering(MORNING_DURATION);
}
// Evening watering (6 PM) - only if soil is dry
if (now.hour() == 18 && now.minute() == 0) {
if (readMoisture() < DRY_THRESHOLD) {
startWatering(EVENING_DURATION);
}
}
}
Weather Integration
#include <ArduinoJson.h>
#include <WiFiClient.h>
void checkWeatherForecast() {
WiFiClient client;
String payload = getWeatherData();
DynamicJsonDocument doc(1024);
deserializeJson(doc, payload);
float rainProbability = doc["hourly"][0]["pop"];
// Skip watering if rain expected
if (rainProbability > 0.7) {
skipNextWatering = true;
}
}
Nutrient Management
class NutrientManager {
private:
int nutrientLevel;
int phLevel;
public:
void checkNutrientLevels() {
nutrientLevel = readNutrientSensor();
phLevel = readPHSensor();
if (nutrientLevel < MIN_NUTRIENT) {
addNutrientSolution();
}
if (phLevel < 6.0 || phLevel > 7.0) {
adjustPH();
}
}
void addNutrientSolution() {
digitalWrite(NUTRIENT_PUMP_PIN, HIGH);
delay(5000); // 5 seconds
digitalWrite(NUTRIENT_PUMP_PIN, LOW);
}
};
Cost-Benefit Analysis
Initial Investment:
- Frame materials: $40
- PET bottles: $0 (recycled)
- Electronics: $80
- Solar system: $60
- Total: $180
Operating Savings:
- Water savings: 50-70% vs traditional watering
- Solar power: $0 electricity cost
- Herb/vegetable production: $200+ annual value
- Payback period: 10-12 months
Scalability Options
Modular Expansion
class ModularSystem:
def __init__(self):
self.modules = []
self.total_capacity = 0
def add_module(self, width, height, plant_capacity):
module = {
'id': len(self.modules) + 1,
'dimensions': {'width': width, 'height': height},
'capacity': plant_capacity,
'sensors': self.install_sensors(plant_capacity),
'irrigation': self.setup_irrigation(plant_capacity)
}
self.modules.append(module)
self.total_capacity += plant_capacity
def optimize_watering_schedule(self):
for module in self.modules:
plant_needs = self.analyze_plant_requirements(module['id'])
self.adjust_module_watering(module['id'], plant_needs)
Commercial Applications
- Restaurant gardens: Fresh herbs on demand
- Educational facilities: STEM learning projects
- Urban farming: Space-efficient food production
- Therapeutic gardens: Accessible gardening for all abilities
Conclusion
A vertical garden with automatic irrigation is an excellent project that combines ecology, technology, and gardening. The system is modular, so you can start small and gradually expand. Plus, with IoT technologies, you have your garden under control from anywhere.
Have you built a similar system? Share your experiences in the comments! 🌿