amc:ss2025:group-f:start
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
amc:ss2025:group-f:start [2025/07/22 14:38] – paul-christian.thoma | amc:ss2025:group-f:start [2025/07/24 09:07] (current) – elham.mohammadi | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== | ====== | ||
+ | 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. | ||
- | --- | + | |
+ | {{ : | ||
| | ||
Line 24: | Line 28: | ||
- | | Component | + | | **Component** |
- | | ------------------------------------------ | --------------------------------------------------------------------------- | + | | **ESP32-S3** |
- | | **ESP32-S3 | + | |
| **Capacitive Soil Moisture Sensor** | | **Capacitive Soil Moisture Sensor** | ||
| **DFRobot Peristaltic Pump (DFR0523)** | | **DFRobot Peristaltic Pump (DFR0523)** | ||
| **2-Coil Latching Relay (HF0D2/ | | **2-Coil Latching Relay (HF0D2/ | ||
- | | **Flexible PVC Tubing** | + | | **Flexible PVC Tubing** |
| **LED and resistor (optional)** | | **LED and resistor (optional)** | ||
| **External Power Supply** | | **External Power Supply** | ||
+ | |||
==== 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)**: | ||
+ | * **Python (optional)**: | ||
+ | * **Telegram Bot (optional)**: | ||
+ | * **Power Profiler Kit (optional)**: | ||
- | * **Arduino IDE**: For ESP32 programming | ||
- | * **MQTT Broker (HiveMQ Public Broker)**: For communication between devices | ||
- | * **Node-RED (optional)**: | ||
- | * **Python (optional)**: | ||
- | * **Telegram Bot (optional)**: | ||
- | * **Power Profiler Kit (optional)**: | ||
- | --- | ||
- | |||
==== 2.3 System Overview ==== | ==== 2.3 System Overview ==== | ||
The system operates in two parts: | The system operates in two parts: | ||
+ | |||
| | ||
- | * Reads analog soil moisture value using GPIO35. | + | |
- | * Publishes sensor data periodically to MQTT topic `plant/ | + | * Publishes sensor data periodically to MQTT topic `plant/ |
- | * Locally lights up LED if moisture is below threshold. | + | * Locally lights up LED if moisture is below threshold. |
- | * Could optionally be extended with temperature/ | + | * Could optionally be extended with temperature/ |
| | ||
- | * Subscribes | + | |
- | * 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/ | + | * Could publish status back (e.g., `plant/ |
- | --- | ||
===== 3. Results ===== | ===== 3. Results ===== | ||
Line 72: | Line 76: | ||
- | | + | **Sensor Node Highlights:** |
- | * Uses `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:** |
- | * Subscribes | + | |
- | * 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/ | + | |
- | * `plant/ | + | * `plant/ |
- | * `plant/ | + | * `plant/ |
- | | + | **Optional Python Logic:** |
+ | * Subscribes to `plant/ | ||
+ | * If value > 2800 → publishes `" | ||
+ | * Sends email or Telegram alert | ||
- | * Subscribes to `plant/ | + | === 3.2 Testing and Observations === |
- | * If value > 2800 → publishes `" | + | |
- | * Sends email or Telegram alert | + | |
- | 3.2 Testing and Observations | + | |
- | + | * 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 | + | |
- | * **Remote access**: MQTT allows external control or monitoring | + | * **Remote access**: MQTT allows external control or monitoring |
- | * **Extendibility**: | + | * **Extendibility**: |
=== 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:// | + | |
- | * [DFRobot Peristaltic Pump Wiki](https:// | + | |
- | * [HiveMQ MQTT Broker](https:// | + | |
- | * [Node-RED Documentation](https:// | + | |
- | * [Telegram Bot API](https:// | + | |
- | * [ESP32 ADC Tutorial – Random Nerd Tutorials](https:// | + | |
- | - |
amc/ss2025/group-f/start.1753187932.txt.gz · Last modified: 2025/07/22 14:38 by paul-christian.thoma