A microcontroller-based system for automated plant watering with ESP32. Monitor soil moisture and control the watering pump.
Built for LilyGO T-Display-S3 ESP32-S3 development board
Board Features:
- ESP32-S3 dual-core MCU
- 1.9" LCD Display (170x320)
- USB-C connector
- Built-in battery management
- DHT11 Digital (Temperature/Humidity) → GPIO1
- Water Pump Relay → GPIO2
- Battery Voltage → GPIO4
- Moisture Analog → GPIO11
- Moisture Power → GPIO18
- Water Level Analog → GPIO12
- Water Level Power → GPIO21
-
Sensor Integration
- DHT11 temperature/humidity monitoring
- Capacitive soil moisture sensing (analog)
- Water level detection
- Battery voltage monitoring
-
Display Interface
- ST7789 LCD support
- Real-time sensor data visualization
- System status display
-
Network Connectivity
- WiFi connection with DHCP
- MQTT integration with Home Assistant
- Auto-discovery of sensors
- Remote pump control
-
Power Management
- Deep sleep support
- Configurable wake/sleep cycles
- Battery-optimized operation
The project uses several Rust crates to provide functionality:
The built-in 1.9" ST7789 LCD display on the T-Display-S3 has the following pin configuration:
-
Backlight: GPIO38
-
CS: GPIO6
-
DC: GPIO7
-
RST: GPIO5
-
WR: GPIO8
-
RD: GPIO9
-
Data pins: GPIO39-42, GPIO45-48
- heapless
- static_cell
- rand_core
- defmt
- defmt-rtt
- ...and others
git clone https://github.com/yourusername/esp32-homecontrol-no-std-rs.git
cd esp32-homecontrol-no-std-rs
See the ESP-RS book.
Install espup: espup GitHub
Install probe-rs: probe-rs GitHub
espup install
. $HOME/export-esp.sh
cp .env.dist .env
./run.sh
To flash the firmware to your ESP32 device, run:
cargo run --release
This documentation is curated to help you get started with various functionalities, libraries, and examples for ESP32 projects using Rust.