Project Overview
ESP32 + ADS1115 multi-plant soil monitor: Build an ESP32 project that reads 4 soil moisture sensors through an ADS1115 16-bit ADC and serves live readings over Wi-Fi so you can monitor multiple pots from a phone or browser.
A single soil moisture sensor and a simple dashboard is fine for one plant. If you have 8, 20, or 50 plants, you need a scalable way to capture multiple analog signals. With an ADS1115 on a single I2C bus, you can monitor 4 sensors, and you can chain multiple ADS1115 modules to scale up.
- Time: ~2 hours
- Skill level: Intermediate
- What you will build: A multi-plant moisture monitor with web dashboard and a display that cycles readings.
Parts List
From ShillehTek
- ADS1115 16-bit ADC - adds 4 high-resolution analog input channels over I2C
- Soil Moisture Sensor (×4) - one sensor per plant for analog moisture readings
- ESP32-WROOM Dev Board - Wi-Fi microcontroller that hosts the web dashboard
- 0.96 inch SSD1306 OLED - optional local display for cycling moisture readings
- Dupont Jumper Wires - breadboard and module connections
External
- 4 plants in pots
- Long wires to route from each pot to the central ADS1115
Note: The ADS1115 and SSD1306 OLED share the same I2C bus (SDA and SCL). Each soil sensor analog output goes to an ADS1115 channel input.
Step-by-Step Guide
Step 1 - Gather the components
Goal: Prepare the ESP32, ADS1115, OLED, and 4 soil sensors for a single build.
What to do: Lay out the modules so the ESP32 can connect to the ADS1115 and OLED on I2C, and the 4 sensors can run to the ADS1115 analog inputs.
Expected result: All parts are ready to be wired, with a clear plan for routing the four sensor leads back to the ADS1115.
Step 2 - Wire the ADS1115, OLED, and sensors
Goal: Connect the I2C devices and route each soil sensor analog output to an ADS1115 channel.
What to do: Wire the ADS1115 and SSD1306 OLED to the ESP32 on the same I2C bus (SDA and SCL). Then connect each soil sensor output to a different ADS1115 input channel so you can read four plants.
Expected result: The ESP32 can communicate with the ADS1115 and OLED over I2C, and each of the four sensors is wired to a unique ADC input channel.
Step 3 - Upload the web dashboard sketch
Goal: Host a simple web page from the ESP32 that displays raw ADS1115 readings for all 4 channels.
What to do: Upload the sketch below, then connect the ESP32 to your Wi-Fi network by setting your SSID and password.
Code:
#include <WiFi.h>
#include <WebServer.h>
#include <Wire.h>
#include <Adafruit_ADS1X15.h>
Adafruit_ADS1115 ads;
WebServer server(80);
void root() {
String body = "<h1>Plant Moisture</h1>";
for (int ch = 0; ch < 4; ch++) {
int raw = ads.readADC_SingleEnded(ch);
body += "<p>Plant " + String(ch+1) + ": " + String(raw) + "</p>";
}
server.send(200, "text/html", body);
}
void setup() {
Serial.begin(115200);
WiFi.begin("SSID","PASS");
while (WiFi.status() != WL_CONNECTED) delay(500);
ads.begin();
server.on("/", root); server.begin();
}
void loop() { server.handleClient(); }
Expected result: The ESP32 joins Wi-Fi and serves a page that lists four raw values, one per ADS1115 channel.
Step 4 - View readings on OLED and in a browser
Goal: Confirm you can see live measurements for all plants.
What to do: Power the ESP32, then open the ESP32 device IP address in a browser to see all 4 channel values. If you connected the OLED, use it as a local readout while you work near the plants.
Expected result: You can see four readings update, and changes in soil moisture affect the corresponding channel.
Step 5 - Extend the project
Goal: Plan the next upgrades once the basic multi-sensor monitor is working.
What to do: Use these ideas to expand the same architecture.
- Add a Telegram alert when any plant goes below a threshold
- Add 4 relay-controlled pumps for automatic watering per plant
- Stack 4 ADS1115 modules for 16-plant capacity
- Log to ThingSpeak for long-term moisture-curve graphs
Expected result: You have a clear path to scale from monitoring to alerts, automation, and long-term logging.
Conclusion
You built an ESP32 + ADS1115 multi-plant soil moisture monitor that reads four sensors and publishes live values over Wi-Fi, with optional on-device viewing using an SSD1306 OLED.
Want the exact parts used in this build? Grab them from ShillehTek.com. If you want help customizing this project or building something for your product, check out our IoT consulting services.
Credit: Project reference adapted from an Instructables guide.


