Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

Arduino Mega 2560-Based Smart Hydroponic System with Wi-Fi Control

View and Edit Project In Cirkit DesignerImage of Arduino Mega 2560-Based Smart Hydroponic System with Wi-Fi Control

Circuit Documentation

Summary

This circuit is designed to monitor and control various environmental parameters such as temperature, humidity, pH levels, and water levels. It uses an Arduino Mega 2560 microcontroller to interface with sensors and control relays for actuating devices like water pumps, fans, and floodlights. The system also includes an LCD display for real-time data visualization and a Bluetooth module for wireless communication.

Component List

  1. Water Sensor

    • Pins: Signal, VCC, GND
    • Description: Detects the presence of water.
  2. 40 Fan 12v

    • Pins: +12V, -12V
    • Description: Provides cooling by circulating air.
  3. 1-Channel Relay (5V 10A)

    • Pins: NC, signal, C, power, NO, ground
    • Description: Controls high-power devices using a low-power signal.
  4. Flood Lights 12v

    • Pins: 12V, GROUND
    • Description: Provides illumination.
  5. Arduino Mega 2560

    • Pins: IOREF, RESET, 3V3, 5V, GND, VIN, A0-A15, D0-D53, AREF, SDA, SCL
    • Description: Microcontroller for interfacing with sensors and actuators.
  6. DHT11 Humidity and Temperature Sensor

    • Pins: VDD, DATA, NULL, GND
    • Description: Measures humidity and temperature.
  7. Water Pump

    • Pins: VCC, GND
    • Description: Pumps water.
  8. 12v 7ah Battery

    • Pins: 12v +, 12v -
    • Description: Provides power to the circuit.
  9. 16x2 I2C LCD

    • Pins: GND, VCC, SDA, SCL
    • Description: Displays data.
  10. Socket

    • Pins: earth, life, neutral
    • Description: Provides AC power.
  11. AC Source

    • Pins: +, -
    • Description: Provides AC power.
  12. Water Pump

    • Pins: positive, negative
    • Description: Pumps water.
  13. ph4502c

    • Pins: VCC, G1, G2, Po, Do, To
    • Description: Measures pH levels.

Wiring Details

Water Sensor

40 Fan 12v

1-Channel Relay (5V 10A)

Flood Lights 12v

Arduino Mega 2560

DHT11 Humidity and Temperature Sensor

Water Pump

12v 7ah Battery

16x2 I2C LCD

Socket

AC Source

Water Pump

ph4502c

Documented Code

#include <CRC_AudioManager.h>
#include <CRC_DistanceSensor.h>
#include <CRC_Hardware.h>
#include <CRC_IR_AnalogDistance.h>
#include <CRC_IR_BinaryDistance.h>
#include <CRC_Lights.h>
#include <CRC_Motor.h>
#include <CRC_PCA9635.h>
#include <CRC_PingDistance.h>
#include <CRC_Sensors.h>
#include <CRC_Simulation.h>
#include <DHT.h>  // Para el sensor de humedad y temperatura
#include <ESP8266WiFi.h>  // Módulo Wi-Fi
#include <SoftwareSerial.h>  // Comunicación Bluetooth
#include <LiquidCrystal_I2C.h>  // Librería para LCD I2C

// Definimos los pines de los sensores y relés
#define DHTPIN 2  // Pin del sensor DHT22
#define DHTTYPE DHT22  // Tipo de sensor DHT
#define PH_PIN A0  // Pin para leer el sensor de pH
#define WATER_LEVEL_PIN 3  // Pin del sensor de nivel de agua

// Pines de los relés para controlar las bombas y coolers
#define RELAY_WATER_PUMP 7  // Relé de la bomba de agua
#define RELAY_ACID_PUMP 8  // Relé de la bomba de ácido
#define RELAY_SUBSTRATE_1 9  // Relé de la bomba de sustrato 1
#define RELAY_SUBSTRATE_2 10  // Relé de la bomba de sustrato 2
#define RELAY_COOLERS 11  // Relé de los coolers

// Definimos el sensor DHT
DHT dht(DHTPIN, DHTTYPE);

// Configuramos el módulo Bluetooth en pines 10 y 11
SoftwareSerial BTSerial(10, 11);  // RX, TX para Bluetooth

// Inicializamos la pantalla LCD con dirección I2C
LiquidCrystal_I2C lcd(0x27, 16, 2);  // Dirección y tamaño de la LCD (ajusta según tu pantalla)

// Variables para los sensores
float temperatura;
float humedad;
float ph;
int nivelAgua;

// Umbrales de control
const float PH_MAX = 7.0;  // Si el pH supera este valor, se añade ácido
const float PH_MIN = 5.5;  // Si el pH baja de este valor, se considera agua mala
const float TEMPERATURE_THRESHOLD = 20.0;  // Umbral de temperatura para activar los coolers

// Temporizador de la bomba de agua
unsigned long tiempoEncendido = 5000;  // Bomba encendida por