Sharjah, UAE GST
Intermediate90-150 minutes; calibration and repeat tests extra6 parts7 projectsCode for 6

Start here: ESP32 Plant Monitoring Learning Kit

Everything for the bench, in the order you need it. Keep this page open while you build.

7 projects in this kit

Every one is built from the parts in the box, plus the basics listed under You'll also need.

Free with this kit · print or PDF The complete kit manual Everything on this page, ready for the bench: a parts checklist, wiring tables and step-by-step instructions for every project. 5 step-by-step guides Parts checklist QR to every project Open the manual
Sensing Intermediate 01

Calibrated Plant-Monitoring Lab

The kit's main build. Soil moisture, water level, temperature, humidity and air pressure stream to your computer every 2 seconds. You calibrate the two analog sensors yourself with four simple captures, and the sketch flags DRY_SOIL or LOW_WATER from your own reference points.

ESP32U DIY-002 capacitive soil sensor DIY-025 water sensor DIY-018 BME280 full-size breadboard jumper wires
Step-by-step guide, code & parts →
Sensing Beginner 02

Soil-Moisture Calibration Study

Discover why a soil sensor never gives a 'real' percentage. Record the raw reading in air and in water, then test dry, damp and wet soil, probe depth and packing — and graph how much those choices change the number.

ESP32U DIY-002 capacitive soil sensor breadboard jumper wires user-supplied dry and wet soil references
Step-by-step guide, code & parts →
Sensing Beginner 03

Short-Duration Water-Level Experiment

Lower the water sensor step by step into a container and watch the reading climb. The sketch learns the empty and full readings as you go, reports a level, and prints LOW WATER and water OK events — then you study how repeatable it really is.

ESP32U DIY-025 conductive water sensor breadboard jumper wires user-supplied shallow non-metallic container and clean water
Step-by-step guide, code & parts →
Basics Beginner 04

BME280 Room Environment Station

One small chip, four readings: temperature, humidity, air pressure and estimated altitude every 2 seconds, with the day's minimum and maximum temperature. Then test how fast it reacts and where it reads most honestly.

ESP32U DIY-018 BME280 breadboard jumper wires
Step-by-step guide, code & parts →
Basics Beginner 05

Serial Data Logger and Charts

Use the whole kit as a data logger: one CSV row of soil, water, temperature, humidity and pressure every few seconds. Paste it into a spreadsheet and chart what happens to a plant pot over an afternoon of watering and drying.

Completed main build computer USB data cable spreadsheet software
Step-by-step guide, code & parts →
Basics 06

Optional audible-alert investigation

Characterize the buzzer's current, trigger threshold, and active level before choosing a transistor or driver. Write and compile a separate alert sketch only after the interface is reviewed. This project is not wired or implemented by the supplied main firmware.

Optional DIY-016 5 V buzzer ESP32U and additional user-supplied driver/protection parts selected after measurement
Parts, guide & add to cart →
Network 07

Future Wi-Fi dashboard

Add networking only after the USB/Serial build is stable. Keep credentials out of shared code and review privacy, reconnection behavior, power, enclosure, and unattended-operation risks. No cloud service or dashboard is included.

Completed local main build and user-supplied Wi-Fi network
Parts, guide & add to cart →

ESP32 Type-C — 38 pin

Board: DIY-342, classic ESP32 38-pin USB Type-C development board. This replaces ESP32U in the shared kit guide.

USB and software: use a known-good USB Type-C DATA cable to your computer. The cable is customer-supplied unless it is explicitly listed in the kit contents. Use the Arduino-ESP32 board package and the matching classic ESP32 board profile (ESP32 Dev Module for a generic compatible board), select its serial port, and open Serial Monitor at 115200 baud with newline enabled. The catalog photo shows a CP2102 USB-UART bridge; install the Silicon Labs CP210x VCP driver if that bridge needs a driver. Match the driver to the chip on the delivered revision.

Wiring by GPIO LABEL, not header position: DIY-002 VCC to 3V3, GND to GND, AOUT to GPIO34 (IO34 / D34). DIY-025 +/VCC to 3V3, -/GND to GND, S/AO to GPIO35 (IO35 / D35). DIY-018 BME280 VIN/VCC to 3V3, GND to GND, SDA to GPIO21 (IO21 / D21), SCL to GPIO22 (IO22 / D22). Join all grounds. GPIO34 and GPIO35 are input-only ADC1 channels. Disconnect USB before changing wires; never apply 5 V to a GPIO.

Firmware: use the shared PlantMonitorLearningLab.ino unchanged with SDA=21, SCL=22, SOIL=34 and WATER=35. A Type-C connector alone does not require a code override. Install Adafruit BME280, Adafruit Unified Sensor and Adafruit BusIO. Confirm exactly one BME280 at 0x76 or 0x77, capture soil-dry, soil-wet, water-empty and water-full, then use status and run. If automatic upload fails, use the board's BOOT/EN download procedure.

Fit and use: verify the exact board labels and breadboard fit. If the wide board leaves no usable breadboard rows, place it beside the breadboard and use female-to-male jumpers. Leave the optional 5 V buzzer disconnected during the main build. Keep all electronics dry; briefly wet only the water sensor's sensing tracks, then power down, rinse and dry the tracks. The diagram is a logical connection plan, not a physical header-position drawing. Physical testing of this exact board/sensor combination is still required before marking it verified.

References: https://documentation.espressif.com/esp-dev-kits/en/latest/esp32/esp32-devkitc/user_guide.html ; https://www.silabs.com/software-and-tools/usb-to-uart-bridge-vcp-drivers

Build guide - ESP32 - Intermediate
ESP32 Plant Monitoring Learning Kit

Build a USB-powered learning prototype that calibrates two analog sensors, identifies a BME280, stores reference points, and reports local plant and room data in Serial Monitor.

7 learning projects6 required catalog items90-150 minutes3.3 V logic
01What you will build
Main learning build

The ESP32 reads a capacitive soil sensor on GPIO34, a short-duration conductive water sensor on GPIO35, and a 3.3 V BME280 on the GPIO21/22 I2C bus. The supplied program averages measurements, guides calibration, stores four endpoints in non-volatile memory, and prints data every two seconds.

Clear scope

This is not an automatic irrigation controller, weatherproof product, calibrated scientific instrument, plant-care guarantee, or unattended alarm. No pump, valve, relay, enclosure, battery, cloud service, Wi-Fi dashboard, or verified buzzer driver is part of the main build.

Verification level. The firmware was compiler-checked for the ESP32 target in normal and diagnostic modes. The exact catalog parts, physical pin labels, board fit, signal voltages, sensor accuracy, and assembled wiring have not been bench-tested together. Complete the release checklist before describing the kit as physically verified.
02What is included
QtyCatalog itemPurpose
1ESP32U development boardMain controller, USB programming, two ADC1 inputs, and I2C.
1DIY-002 capacitive soil moisture sensor v2.0Analog soil reference. Calibrate it in your own dry and wet materials.
1DIY-025 conductive water-level sensorBrief supervised water-contact experiment only; rinse and dry after use.
1DIY-018 BME280 module3.3 V I2C temperature, humidity, and pressure readings.
1DIY-295 full-size 830-point breadboardMore working room than a half-size board for the wide ESP32 and sensor wiring.
1 packDIY-212 assorted jumper wiresMale-to-male, male-to-female, and female-to-female connections.
Optional extension: DIY-016 5 V active buzzer. It is not driven by the checked main firmware. Before connecting it, measure or confirm module current, trigger threshold, active-high/active-low behavior, and a suitable transistor or driver stage. Never put 5 V on an ESP32 GPIO.
03What you also need
Computer and software

Computer with Arduino IDE 2.x, Arduino-ESP32 board support, Adafruit BME280, Adafruit Unified Sensor, and Adafruit BusIO libraries, plus permission to install them.

USB and test references

A known-good USB-C data cable, dry and wet soil references, a shallow non-metallic container, a small amount of clean water, labels, notebook, and spreadsheet software if you want charts.

Safety and cleanup

Dry work tray, paper towels, clean rinse water, eye protection, and adult supervision for learners under 14.

Recommended test tool

A digital multimeter for checking 3.3 V, ground continuity, rail breaks, and analog signal voltage before an ESP32 GPIO is connected.

A soldering iron, solder, stand, ventilation, and supervision are needed only if a supplied module arrives with loose headers. Never solder a powered circuit.

04Reviewed pin plan

Disconnect USB before changing wires. Verify the labels printed on the exact modules because pin order can vary between revisions. Power all three required sensors from the ESP32 3V3 pin and join every ground.

Part pinESP32UPurpose and check
DIY-002 VCC3V3Keeps the analog output in the ESP32 voltage domain.
DIY-002 GNDGNDCommon reference.
DIY-002 AOUTGPIO34Input-only ADC1 pin; verify signal remains 0-3.3 V.
DIY-025 + / VCC3V3Use 3.3 V for this ESP32 experiment, not 5 V.
DIY-025 - / GNDGNDCommon reference.
DIY-025 S / AOGPIO35Input-only ADC1 pin; verify signal remains 0-3.3 V.
DIY-018 VIN / VCC3V3The linked module is specified for 1.8-3.6 V logic.
DIY-018 GNDGNDCommon reference.
DIY-018 SDAGPIO21I2C data used by the sketch.
DIY-018 SCLGPIO22I2C clock used by the sketch.
Stop before power if you cannot identify a pin, a wire can touch water, a sensor output may exceed 3.3 V, an ESP32 header is misaligned, or a rail is connected to both 5 V and 3.3 V. Do not immerse the ESP32, breadboard, jumper ends, BME280, USB connector, or the electronics above a sensor's marked sensing area.
05Step-by-step main build

Work in this order. Disconnect USB before every wiring change and add one subsystem at a time.

  1. Inspect and identify every part. Match physical labels to the included list and photograph both sides. Do not guess an unlabeled power or signal pin.
  2. Check the breadboard rails. Determine whether each long rail is split in the middle. Bridge only the 3.3 V and GND sections you intend to use.
  3. Test the ESP32 alone. Keep all sensors disconnected. Use a data-capable USB-C cable, choose the matching ESP32 profile and port, and confirm a basic serial upload.
  4. Position the ESP32. Straddle the center gap only if both header rows enter freely and usable rows remain. If this revision is too wide, place it beside the breadboard and use female-to-male jumpers.
  5. Create the 3.3 V rails. Connect 3V3 and GND. Power briefly with no sensors and measure approximately 3.3 V across the intended rails, then disconnect USB.
  6. Add the BME280 first. Connect 3V3, GND, SDA to GPIO21, and SCL to GPIO22. Upload the supplied firmware and open Serial Monitor at 115200 baud. Continue only when exactly one BME280 is found at 0x76 or 0x77.
  7. Add the soil sensor. Disconnect USB. Connect DIY-002 VCC to 3V3, GND to GND, and AOUT to GPIO34. Keep the connector and electronics dry.
  8. Check soil raw values. Compare readings in air, a documented dry reference, and a documented wet reference. Values must change consistently and must not remain fixed near 0 or 4095.
  9. Add the water sensor while dry. Disconnect USB. Connect DIY-025 VCC to 3V3, GND to GND, and S/AO to GPIO35. Take the dry baseline first.
  10. Perform a brief water test. Lower only the exposed sensing tracks to a marked depth for a few seconds. Keep the connector and every other electronic part dry. Power down, rinse only the tracks, and dry after capture.
  11. Capture four calibration points. At stable references, send soil-dry, soil-wet, water-empty, and water-full.
  12. Validate calibration. Send status. The program requires all four endpoints and a span of at least 150 ADC counts on each sensor.
  13. Start monitoring. Send run. Confirm DATA lines include raw values, relative percentages, BME readings, and a status. The program must refuse run when calibration is invalid.
  14. Repeat and document. Run at least three dry/wet and empty/marked-depth transitions. Record direction, raw range, percentage, settling time, BME address, resets, and repeatability.
  15. Power down and store dry. Disconnect USB before moving wires. Remove soil gently, rinse and dry the conductive tracks, and keep all electronics away from moisture.
06Firmware setup
Arduino settings

Select the exact matching ESP32 development-board profile and port. Use Serial Monitor at 115200 baud with newline enabled. Install Adafruit BME280, Unified Sensor, and BusIO.

Built-in checks

The sketch discovers one BME280 at 0x76/0x77, averages 24 ADC samples, saves calibration in ESP32 preferences, rejects small calibration spans, and enters a fault after three invalid BME readings.

CommandWhen to use itResult
soil-drySoil probe is in your documented dry reference.Saves the 0% soil endpoint.
soil-wetProbe is stable in your documented wet reference.Saves the 100% soil endpoint.
water-emptyConductive tracks are clean and completely dry.Saves the 0% water endpoint.
water-fullTracks are at your marked short-test depth.Saves the 100% water endpoint.
statusAfter wiring, calibration, or troubleshooting.Shows mode, BME address, endpoints, and fault reason.
runAll four endpoints are valid.Starts calibrated monitoring.
calibrateYou need raw readings again.Returns to calibration mode.
reset-calYou changed soil, sensor depth, supply, or setup.Erases saved endpoints.
helpAny time.Prints the command list.
Understand the percentages. They are relative to your two reference endpoints, not absolute volumetric water content or a laboratory water-level measurement. The 30% dry-soil and 20% low-water thresholds are teaching examples, not advice for a particular plant.
07How to judge a successful build
  1. Stable boardThe ESP32 uploads reliably and does not reset when required sensors are added one at a time.
  2. One BME280The program finds exactly one module at 0x76 or 0x77 and reports plausible room readings.
  3. Usable analog rangeNeither channel stays near 0 or 4095, and each calibrated span is at least 150 counts.
  4. Correct control flowrun is rejected before valid calibration and accepted afterward.
  5. RepeatabilityThree trials show the same direction of change and reasonably similar endpoints.
  6. Dry, cool hardwareNo corrosion, heat, smell, loose connection, or water exposure appears on the electronics.
P1
Main project
Calibrated plant monitoring lab

Uses: all six required catalog items, plus the customer-supplied USB cable and test references.

Complete the staged build, capture four local endpoints, and stream soil, water, temperature, humidity, pressure, and status data. This is the supported core lesson. Physical verification of the exact catalog assembly is still required.

P2
Experiment
Soil moisture calibration study

Uses: ESP32U, DIY-002, full-size breadboard, jumpers, and dry/damp/wet references.

Graph raw ADC readings across repeatable samples. Compare probe depth, compaction, and settling time. Explain why copied thresholds are unreliable when soil, position, sensor coating, or supply changes.

P3
Experiment
Short-duration water-level study

Uses: ESP32U, DIY-025, breadboard, jumpers, shallow non-metallic container, and clean water.

Record several marked depths, then rinse and dry after each run. Study non-linearity, residue, drift, and corrosion risk instead of treating this exposed-track board as a permanent tank sensor.

P4
Environment project
BME280 room station

Uses: ESP32U, DIY-018, breadboard, and jumpers.

Measure temperature, humidity, and pressure near the plant while keeping the sensor dry, shaded, and away from fingers and warm electronics. Compare with a trusted room reference after settling; do not claim laboratory accuracy.

P5
Data project
Serial data logger and charts

Uses: completed main build, computer, USB data cable, and spreadsheet software.

Capture the machine-readable DATA lines, add timestamps on the computer side, and graph how a sample changes after watering or while drying. The kit does not contain a real-time clock.

P6
Optional investigation
Audible alert interface

Uses: optional DIY-016 plus additional measured driver/protection parts selected after testing.

Characterize the 5 V module's current, trigger threshold, and active level before choosing a transistor or driver. Write and compile a separate alert sketch after interface review. The main firmware intentionally does not wire or drive this module.

P7
Future extension
Wi-Fi dashboard

Uses: completed local build and a customer-supplied network.

Add networking only after the USB/Serial prototype is stable. Keep private credentials out of shared code and review privacy, reconnection behavior, enclosure, power, and unattended-operation risks. No cloud service or dashboard is included.

08Troubleshooting
SymptomChecks
No port or upload failsUse a data USB cable, install the correct ESP32 core/driver, select the correct port, close other serial tools, and retry with sensors disconnected.
Need exactly one BME280Check 3.3 V, GND, SDA, SCL, soldered headers, and address. A response at a different address may be a different sensor.
BME values are invalidKeep the module dry and away from fingers or board heat; check address, supply, and wiring, then allow time to settle.
ADC reads 0 or 4095Power down. Check signal and ground continuity, confirm 3.3 V supply, and measure the analog output before reconnecting GPIO34/35.
Calibration span under 150Use more distinct and stable references, keep position consistent, clean/dry the sensor, send reset-cal, and repeat.
Percentage moves backwardEndpoints were captured in reverse or under unstable conditions. Reset and recapture; the firmware accepts either raw direction when endpoints are correct.
ESP32 resets after adding a partRemove all parts, inspect for shorts or 5 V connections, measure the 3.3 V rail, and add one required sensor at a time. Leave the optional buzzer disconnected.
Water baseline driftsResidue and retained moisture conduct. Power down, rinse only the sensing tracks, dry fully, and recalibrate if baseline changed.
09Safety and intended use
Low-voltage educational prototype only. Keep mains electricity, pumps, high-current loads, and lithium battery wiring outside this build. Work with USB disconnected while changing wires. Power required sensors from 3.3 V. Never apply 5 V to an ESP32 GPIO.

Keep water physically separated from the breadboard, ESP32, BME280, USB connector, computer, and jumper ends. Use the conductive sensor only for brief supervised experiments because continuous DC exposure accelerates electrolysis and corrosion. The capacitive soil sensor's electronics are not guaranteed waterproof. Stop using any cracked, corroded, hot, or unstable part.

10Release checklist
  1. Exact assemblyBuild with the exact linked catalog items and photograph the final layout.
  2. Mechanical fitConfirm ESP32 header spacing and usable breadboard rows without forcing pins.
  3. Electrical limitsVerify labels, continuity, 3.3 V rail, and every required signal at or below 3.3 V.
  4. Sensor identityRecord the BME280 address and compare readings with a trusted room reference.
  5. Repeat trialsComplete three soil and water transitions, record endpoints, drift, and settling time.
  6. Media reviewReplace any photo showing a half-size breadboard or implying the optional buzzer is part of the checked main build.
Compiler-check record. The supplied 289-line source was compiled for ESP32 core 3.3.11 in normal and PLANT_DIAGNOSTIC=true modes with Adafruit BME280 2.3.0, BusIO 1.17.4, and Unified Sensor 1.1.15. Compilation confirms source/toolchain compatibility, not physical wiring or sensor performance.

Images are visual representations only. Component appearance, pin order, connector style, and board revision may vary. Always follow labels and specifications on the supplied part.

Build steps (14)

Tick steps off as you go — your place is kept on this device.

0 / 14
ℹ These steps come from the build reference recorded for this kit. The firmware is in the Code section below.

Code (6 files)

One sketch per project, written for the boards in this kit. Open a project to read it with its wiring, or copy it there.

6
577
arduino
ℹ Pin numbers and thresholds are written for the board in this kit. Change the board and the pin map changes with it — ask and we'll adjust it.

Stuck?

Most problems are one wire in the wrong hole. Check the wiring against the guide, then message us with a photo of your board and the step you are on.

Message us on WhatsApp
Bot
ECHO
Online — usually replies instantly
Catalog assistant: verify final stock/price on the product page before checkout.