Skip to content
Buy 10+ on select items — save 10% auto-applied
Free US shipping on orders $35+
Order by 3pm ET — ships same-day from the US
Skip to main content

ESP32 ADS1115: Monitor 4 Soil Sensors via Wi-Fi | ShillehTek

May 27, 2026 13 views

ESP32 ADS1115: Monitor 4 Soil Sensors via Wi-Fi | ShillehTek
Project

Build an ESP32 + ADS1115 multi-plant soil monitor that reads 4 moisture sensors and serves live Wi-Fi dashboard values for easier watering decisions with ShillehTek.

2 hr Intermediate5 parts

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.
ESP32 multi-plant soil moisture monitor using an ADS1115 ADC and multiple soil sensors
ADS1115 + multiple soil sensors + ESP32 for a scalable grower dashboard.

Parts List

From ShillehTek

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.

ESP32, ADS1115, SSD1306 OLED, and four soil moisture sensors arranged on a breadboard for a multi-plant monitor
ADS1115 + ESP32 + OLED + 4 soil sensors on one breadboard.

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.

Wiring diagram showing ESP32 connected to ADS1115 and SSD1306 OLED over I2C, with four soil sensor analog outputs connected to ADS1115 channels
Each soil sensor analog out goes to an ADS1115 channel; ADS1115 and OLED share I2C.
Four soil moisture sensors installed in four plant pots with long wires routed back to a central ESP32 and ADS1115 controller
4 sensors in 4 pots feeding one central controller.

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.

SSD1306 OLED connected to an ESP32 showing soil moisture readings cycling through four plants
OLED cycles through all 4 plants with current readings.
Phone browser displaying an ESP32 web page with four ADS1115 soil moisture readings labeled Plant 1 through Plant 4
Open the ESP32 IP in any browser to see all 4 readings live.

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.