User Tools

Site Tools


amc:ss2025:group-f:start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
amc:ss2025:group-f:start [2025/07/22 14:38] paul-christian.thomaamc:ss2025:group-f:start [2025/07/24 09:07] (current) elham.mohammadi
Line 1: Line 1:
 ======  Automated Plant Watering System with MQTT and ESP32-S3 ====== ======  Automated Plant Watering System with MQTT and ESP32-S3 ======
 +Paul-Christian Thoma(32436)-Elham Mohammadi(32475)-Deniz-Zeynep Adem(33784)
  
  ===== 1. Introduction =====  ===== 1. Introduction =====
Line 8: Line 8:
  
 This project presents a smart plant watering system designed to operate semi-autonomously. It monitors the soil moisture and automatically activates a peristaltic pump via a latching relay to deliver water when needed. The system uses two ESP32-S3 microcontrollers connected over Wi-Fi, communicating through MQTT protocol to exchange sensor data and control messages. This project presents a smart plant watering system designed to operate semi-autonomously. It monitors the soil moisture and automatically activates a peristaltic pump via a latching relay to deliver water when needed. The system uses two ESP32-S3 microcontrollers connected over Wi-Fi, communicating through MQTT protocol to exchange sensor data and control messages.
 +
  
 The architecture is split into two subsystems: The architecture is split into two subsystems:
  
-**Sensor Node:** Measures soil moisture and publishes data to an MQTT broker. +**Sensor Node:** Measures soil moisture and publishes data to an MQTT broker. 
-**Actuator Node:** Receives watering commands via MQTT and controls the pump.+ 
 +**Actuator Node:** Receives watering commands via MQTT and controls the pump.
  
 Users can integrate remote notifications or dashboards via tools such as Node-RED, Telegram bots, or email alerts. Users can integrate remote notifications or dashboards via tools such as Node-RED, Telegram bots, or email alerts.
  
----+ 
 +{{ :amc:ss2025:group-f:c24bef46-3e98-49e7-a7a7-43a95f6fb40a.jpeg?direct&400 |}} 
  
  ====== 2. Materials and Methods ======  ====== 2. Materials and Methods ======
Line 24: Line 28:
  
  
-| Component                                  | Description                                                                 | +**Component**                              **Description**                                                             
-| ------------------------------------------ | --------------------------------------------------------------------------- +| **ESP32-S3**                               | Microcontroller with built-in Wi-Fi used for both sensor and actuator nodes |
-| **ESP32-S3 DevKit**                        | Microcontroller with built-in Wi-Fi used for both sensor and actuator nodes |+
 | **Capacitive Soil Moisture Sensor**        | Provides analog output corresponding to soil moisture                       | | **Capacitive Soil Moisture Sensor**        | Provides analog output corresponding to soil moisture                       |
 | **DFRobot Peristaltic Pump (DFR0523)**     | Waters the plant when triggered                                             | | **DFRobot Peristaltic Pump (DFR0523)**     | Waters the plant when triggered                                             |
 | **2-Coil Latching Relay (HF0D2/005-S-L2)** | Used to control the pump with minimal power consumption                     | | **2-Coil Latching Relay (HF0D2/005-S-L2)** | Used to control the pump with minimal power consumption                     |
-| **Flexible PVC Tubing**                    | Connects pump to plant pot                                                  |+| **Flexible PVC Tubing**                    | Connects pump to plant pot and water source                                 |
 | **LED and resistor (optional)**            | Indicates system status (e.g., dry soil)                                    | | **LED and resistor (optional)**            | Indicates system status (e.g., dry soil)                                    |
 | **External Power Supply**                  | Powers the pump and relay (e.g., 5V/12V DC adapter)                         | | **External Power Supply**                  | Powers the pump and relay (e.g., 5V/12V DC adapter)                         |
 +
  
  ==== 2.2 Software and Tools ====  ==== 2.2 Software and Tools ====
  
 +  * **Arduino IDE**: For ESP32 programming 
 +  * **MQTT Broker (HiveMQ Public Broker)**: For communication between devices
 +  * **Node-RED (optional)**: For visualization, control, or automation
 +  * **Python (optional)**: For logic and notifications
 +  * **Telegram Bot (optional)**: Sends alerts to user
 +  * **Power Profiler Kit (optional)**: For measuring energy consumption
  
-* **Arduino IDE**: For ESP32 programming 
-* **MQTT Broker (HiveMQ Public Broker)**: For communication between devices 
-* **Node-RED (optional)**: For visualization, control, or automation 
-* **Python (optional)**: For logic and notifications 
-* **Telegram Bot (optional)**: Sends alerts to user 
-* **Power Profiler Kit (optional)**: For measuring energy consumption 
  
---- 
-  
 ==== 2.3 System Overview ==== ==== 2.3 System Overview ====
  
  
 The system operates in two parts: The system operates in two parts:
 +
  
  **Sensor Node (ESP32-S3 + Soil Sensor)**  **Sensor Node (ESP32-S3 + Soil Sensor)**
  
-* Reads analog soil moisture value using GPIO35. +  * Reads analog soil moisture value using GPIO35. 
-* Publishes sensor data periodically to MQTT topic `plant/soilMoisture`. +  * Publishes sensor data periodically to MQTT topic `plant/soilMoisture`. 
-* Locally lights up LED if moisture is below threshold. +  * Locally lights up LED if moisture is below threshold. 
-* Could optionally be extended with temperature/humidity sensors.+  * Could optionally be extended with temperature/humidity sensors. 
  
  **Actuator Node (ESP32-S3 + Latching Relay + Pump)**  **Actuator Node (ESP32-S3 + Latching Relay + Pump)**
  
-Subscribes to MQTT topic `plant/waterCommand`. +  Unordered List ItemSubscribes to MQTT topic `plant/waterCommand`. 
-* Activates the peristaltic pump via latching relay when commanded. +  * Activates the peristaltic pump via latching relay when commanded. 
-* Could publish status back (e.g., `plant/pumpStatus`) for monitoring.+  * Could publish status back (e.g., `plant/pumpStatus`) for monitoring. 
  
---- 
  
  ===== 3. Results =====  ===== 3. Results =====
Line 72: Line 76:
  
  
- Sensor Node Highlights:+ **Sensor Node Highlights:**
  
-Uses `analogRead()` to read GPIO35. +  Unordered List ItemUses `analogRead()` to read GPIO35. 
-* Publishes moisture readings every 5 seconds. +  * Publishes moisture readings every 5 seconds. 
-* LED indicates dryness when value > threshold (e.g., 2500).+  * LED indicates dryness when value > threshold (e.g., 2500).
  
- Actuator Node Highlights:+ **Actuator Node Highlights:**
  
-Subscribes to MQTT command `plant/waterCommand`. +  Unordered List ItemSubscribes to MQTT command `plant/waterCommand`. 
-* Activates one coil of the latching relay to start pump, and another to stop it. +  * Activates one coil of the latching relay to start pump, and another to stop it. 
-* Provides quick response and avoids continuous current draw.+  * Provides quick response and avoids continuous current draw.
  
- MQTT Topic Examples:+ **MQTT Topic Examples:**
  
-* `plant/soilMoisture` – Publishes sensor readings. +  * `plant/soilMoisture` – Publishes sensor readings. 
-* `plant/waterCommand` – Accepts values `"ON"` or `"OFF"`. +  * `plant/waterCommand` – Accepts values `"ON"` or `"OFF"`. 
-* `plant/pumpStatus` – (Optional) Publishes `"WATERING"` or `"IDLE"`.+  * `plant/pumpStatus` – (Optional) Publishes `"WATERING"` or `"IDLE"`.
  
- Optional Python Logic:+ **Optional Python Logic:** 
 +  * Subscribes to `plant/soilMoisture` 
 +  * If value > 2800 → publishes `"ON"` to `plant/waterCommand` 
 +  * Sends email or Telegram alert
  
-* Subscribes to `plant/soilMoisture` +===  3.2 Testing and Observations ===
-* If value > 2800 → publishes `"ON"` to `plant/waterCommand` +
-* Sends email or Telegram alert+
  
- 3.2 Testing and Observations +  * In dry air, soil moisture value > 3300 
- +  * Wet soil: 1800–2000 
-* In dry air, soil moisture value > 3300 +  * Saturated soil (in water): < 1700
-* Wet soil: 1800–2000 +
-* Saturated soil (in water): < 1700+
  
 Pump successfully turns on when soil is dry and stops when moisture reaches target range. Pump successfully turns on when soil is dry and stops when moisture reaches target range.
  
----+
  
 ====  4. Discussion and Conclusion ==== ====  4. Discussion and Conclusion ====
Line 113: Line 116:
 Key advantages: Key advantages:
  
-* **Low power**: Latching relay prevents continuous power usage +  * **Low power**: Latching relay prevents continuous power usage 
-* **Remote access**: MQTT allows external control or monitoring +  * **Remote access**: MQTT allows external control or monitoring 
-* **Extendibility**: Easily extendable with humidity sensors, temperature sensors, water tank monitoring, etc.+  * **Extendibility**: Easily extendable with humidity sensors, temperature sensors, water tank monitoring, etc.
  
  === 4.1 Improvements and Future Work ===  === 4.1 Improvements and Future Work ===
  
  
- 
---- 
  
 =====  5. Media and Demonstration ===== =====  5. Media and Demonstration =====
- 
- 
->  \[Link to demo video] 
->  Fritzing sketch of the circuit 
-> Photos of the prototype and setup 
->  Screenshot of MQTT dashboard and Telegram messages 
  
 --- ---
Line 136: Line 131:
  
  
-* [ESP32 Official Documentation](https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/+
-* [DFRobot Peristaltic Pump Wiki](https://wiki.dfrobot.com/Gravity_Peristaltic_Pump_SKU_DFR0523) +
-* [HiveMQ MQTT Broker](https://www.hivemq.com/public-mqtt-broker/+
-* [Node-RED Documentation](https://nodered.org/docs/+
-* [Telegram Bot API](https://core.telegram.org/bots/api) +
-* [ESP32 ADC Tutorial – Random Nerd Tutorials](https://randomnerdtutorials.com/esp32-adc-analog-read-arduino-ide/)+
  
 - -
amc/ss2025/group-f/start.1753187932.txt.gz · Last modified: 2025/07/22 14:38 by paul-christian.thoma