//Libary for temp and humidity sensor
#include <DHT.h>
// Pin definitions
#define SOIL_MOISTURE_PIN A0 // Analog pin for soil moisture sensor
#define LIGHT_SENSOR_PIN A1 // Analog pin for light sensor
#define DHT_PIN 2 // Digital pin for DHT22 sensor
#define PUMP_PIN 3 // Digital pin to control water pump
// Threshold values for different plants
const int MINT_SOIL_MOISTURE_THRESHOLD = 400;
const int OREGANO_SOIL_MOISTURE_THRESHOLD = 350;
const int CORIANDER_SOIL_MOISTURE_THRESHOLD = 450;
const float TEMPERATURE_MIN = 20.0;
const float TEMPERATURE_MAX = 25.0;
// DHT sensor setup
#define DHTTYPE DHT22
DHT dht(DHT_PIN, DHTTYPE);
// Variable to store selected plant
int selectedPlant = 0; // 1 = Mint, 2 = Oregano, 3 = Coriander
void setup() {
Serial.begin(9600);
pinMode(PUMP_PIN, OUTPUT);
digitalWrite(PUMP_PIN, LOW); // Ensure pump is off initially
dht.begin();
// Display menu for plant selection
Serial.println("Select the plant you want to grow:");
Serial.println("1. Mint");
Serial.println("2. Oregano");
Serial.println("3. Coriander");
while (selectedPlant == 0) {
if (Serial.available()) {
char input = Serial.read();
if (input == '1') {
selectedPlant = 1;
Serial.println("You selected Mint.");
} else if (input == '2') {
selectedPlant = 2;
Serial.println("You selected Oregano.");
} else if (input == '3') {
selectedPlant = 3;
Serial.println("You selected Coriander.");
} else {
Serial.println("Invalid selection. Please enter 1, 2, or 3.");
}
}
}
Serial.println("Smart Flowerpot System Initialized.");
}
void loop() {
// Read sensors
int soilMoisture = analogRead(SOIL_MOISTURE_PIN);
int lightLevel = analogRead(LIGHT_SENSOR_PIN);
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Determine soil moisture threshold based on selected plant
int soilMoistureThreshold = 0;
if (selectedPlant == 1) {
soilMoistureThreshold = MINT_SOIL_MOISTURE_THRESHOLD;
} else if (selectedPlant == 2) {
soilMoistureThreshold = OREGANO_SOIL_MOISTURE_THRESHOLD;
} else if (selectedPlant == 3) {
soilMoistureThreshold = CORIANDER_SOIL_MOISTURE_THRESHOLD;
}
// Soil moisture check
Serial.print("Soil Moisture: ");
Serial.println(soilMoisture);
if (soilMoisture < soilMoistureThreshold) {
Serial.println("Soil moisture is low. Activating water pump...");
digitalWrite(PUMP_PIN, HIGH);
delay(5000); // Pump runs for 5 seconds
digitalWrite(PUMP_PIN, LOW);
} else {
Serial.println("Soil moisture is sufficient.");
}
// Environmental conditions check
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println("°C");
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.println("%");
Serial.print("Light Level: ");
Serial.println(lightLevel);
if (temperature < TEMPERATURE_MIN || temperature > TEMPERATURE_MAX) {
Serial.println("Warning: Temperature out of optimal range.");
}
// Delay before the next cycle
delay(60000); // 60 seconds
}