Darlingtonia Zeer Pot canonical Li-ion build

Solar Recirculating Evaporative Cooling — ESP32 Controlled

Design Overview

Darlingtonia californica grows beside cold mountain streams in northern California and Oregon. The single biggest cultivation challenge is keeping roots cool (ideally below ~25°C, with 15–22°C being the sweet spot) while the plant enjoys full sun. A zeer pot — the ancient pot-in-pot evaporative cooler — is a passive-first solution: evaporation from wet fill between two terracotta pots drops the inner pot's temperature by 5–12°C below ambient.

This build uses a wide, low 35 cm outer pot with a 25 cm inner pot (5 cm gap on the sides, level rims, ~10 cm of fill below the inner pot). The inner pot sits on a deep bed of sand — the fill wraps the inner pot on all sides and below, cooling through both the walls and the sealed base. A solar-charged ESP32-C3 SuperMini controls a 5V pump that re-wets the fill on demand via a ring drip tube sitting on the fill surface between the two level rims. Two waterproof DS18B20 probes — one at root depth, one in ambient shade — measure the delta-T: the real metric of cooling performance, while a capacitive moisture probe adds root-zone telemetry.

Design Principles

Pump wets the fill, never the plant. Water is delivered via a ring drip tube into the gap between pots. The Darlingtonia's substrate receives moisture only by capillary wicking through the unglazed terracotta walls — pre-cooled by evaporation. Warm reservoir water never contacts roots directly.
Inner pot side drain at 2 cm — "Dutch pot" reserve. Original bottom hole sealed. A new side drain at ~2 cm from the inner pot's base provides free drainage above (top-watering, rain) while maintaining a permanent moisture reserve below. With the level-rim configuration, this drain exits straight into the deep fill bed — water draining from the inner pot adds to the fill's evaporative mass. Drain uses a barbed hose fitting through the wall with a mesh cap on the inside to retain substrate.
Thermally optimized fill: well-graded quartz sand (0.5–3 mm). The wide grading means fine grains nest into the voids between coarse ones — tighter packing, fewer air gaps, better thermal contact than any uniform grade. Excellent capillary wicking and thermal conductivity (~2–3 W/mK wet), chemically inert (TDS-safe for Darlingtonia), and costs almost nothing.
Solar charges Li-ion; battery powers system 24/7. 5W USB-C panel → TP4056 USB-C charger (with DW01 protection) → 18650 Li-ion cell (3.7V nom) → ESP32-C3 SuperMini via 5V pin (onboard LDO → 3.3V). Pump runs through an IRLZ44N MOSFET to a 5V water pump, with MT3608 kept only as an optional add-on if your chosen pump will not start reliably from the raw battery rail. Two separate IP65 enclosures still make sense: one for electronics (dry), one for the pump side. The two DS18B20 probes track root-vs-ambient cooling, and a capacitive moisture probe adds extra telemetry from the root zone.

Water Paths

Cooling Loop (pump-driven)

Reservoir → pump → feed tube → ring drip tube in fill gap → water saturates sand → evaporates from outer pot surface (= cooling) → excess drains from outer pot side drain via barbed fitting → back to reservoir.

Root Zone Moisture (passive capillary)

Cold wet fill → wicks through unglazed inner pot walls → into sphagnum substrate. The terracotta acts as both thermal bridge and moisture delivery system. Sand packed tight against the pot walls makes excellent thermal contact.

Top-watering & Rain (direct gravity)

Water poured onto sphagnum or rain → percolates down → excess exits through inner pot side drain at 2 cm (barbed fitting + mesh cap) → into fill gap → helps keep fill wet → overflows via outer pot drain → reservoir. Below the 2 cm hole: permanent moisture reserve (Dutch pot buffer).

Why Sand

What the fill must do

Three jobs simultaneously: conduct heat from the inner pot walls and base to the outer pot wall (thermal bridge on all sides), hold water in its mass between pump cycles (reservoir), and wick water upward to the outer pot surface for evaporation (capillary engine). With ~10 cm of fill below the inner pot, the sealed terracotta base becomes an additional cooling surface — heat is drawn out downward as well as laterally. The fill must also be chemically inert for Darlingtonia's zero-mineral requirement.

Sand — well-graded quartz, 0.5–3 mm

Well-graded quartz sand (0.5–3 mm) is the ideal fill. The wide grading is key: fine grains nest into the voids between coarse ones, giving tighter packing than any uniform grade — fewer air gaps means better thermal conductivity and capillary continuity. The fine fraction holds water and wicks, the coarse fraction keeps drainage channels open. Effective wet thermal conductivity ~2–3 W/mK. SiO2 is completely inert (TDS-safe for Darlingtonia). Sold in 25 kg sacks at any building/pool supply — one sack is more than enough (~16 L, you need ~8 L). Rinse well before use to remove dust.

CROSS-SECTION — CANONICAL BUILD — LEVEL RIMS — 35cm / 25cm POTS OUTER POT 35cm Ø, low/wide unglazed terracotta SAND FILL evaporation INNER POT 25cm Ø rims level bottom sealed ~10cm fill bed 5cm mesh INNER DRAIN 2cm Dutch pot reserve moisture reserve (Dutch pot) mesh outer drain ~2cm wicking reserve below outer reserve — sustains wicking between pump cycles wick → ← wick ↑ wick through base SPHAGNUM long-fibre sphagnum drip tube drip tube DS① root DS② amb in shade feed tube drain return RESERVOIR 3–5 L shaded, opaque, lidded PUMP 5W USB-C SOLAR USB-C OV + reverse TP4056 Li-ion 3.7V / VTC6 3.1Ah MOSFET → 12V pump MOSFET drain → pump GND source → GND → 5V pin verify your board's 5V pin path ESP32 → 5V pin → LDO → 3V3 ☾ 24/7 from battery USB-C solar charges LEGEND Water flow Capillary wick Sensor Power Sand fill Reserve Barbed fitting

Drain Assembly Detail

Both pots use the same approach: a barbed hose fitting through the wall at ~2 cm from the base, sealed with silicone, with a mesh cap on the inside to prevent fill/substrate from clogging the drain. Two assemblies total — one for the outer pot (returns excess water to reservoir while maintaining a saturated reserve below for sustained wicking) and one for the inner pot (the Dutch pot drain with a moisture reserve below for the plant).

Components per drain

One 8 mm barbed hose fitting (plastic or brass, straight or 90°), a tube of aquarium-safe silicone, and a ~3 cm square of stainless steel mesh or perlon filter wool, secured with a small cable tie or wrap of stainless wire.

Outer Pot Drain — At 2 cm (Wicking Reserve)

1

Seal the original bottom hole with a terracotta shard and aquarium-safe silicone, inside and out. Let cure 24h.

2

Drill a side hole at ~2 cm from the base. Use a 8–10 mm masonry/tile bit at low speed with water cooling. Go slow to avoid cracking — terracotta is forgiving but impatient drilling isn't. The hole should match or slightly exceed the barbed fitting's outer diameter.

3

Push the barbed fitting through from the outside. The barbed (ridged) end faces out — that's where the drain tube connects. The smooth inner nub protrudes 1–2 cm into the pot interior.

4

Seal both faces with a generous ring of aquarium-safe silicone around the fitting, on both the outside and inside pot surfaces. This waterproofs the fit and anchors the fitting.

5

Mesh cap on the inner nub. Wrap a small piece of stainless mesh or perlon over the protruding inner end. Secure with a cable tie cinched tight around the nub. This prevents sand from entering the fitting.

6

Let cure 24h. Then connect an 8 mm silicone drain tube to the barbed end outside. Route to reservoir.

Both drains at 2 cm — same height, different purposes. The outer pot's reserve keeps the bottom fill permanently saturated between pump cycles, sustaining capillary wicking to feed evaporation from the pot walls even when the pump hasn't run for hours. If the reservoir empties or the pump fails during a heat wave, this reserve buys you hours of continued passive cooling. The inner pot's reserve keeps the sphagnum's bottom layer moist via wicking through the terracotta walls — the Dutch pot effect. Same geometry, same height, no hydrostatic shortcut between them (equal water levels = equilibrium).

Inner Pot Drain — At 2 cm (Dutch Pot Reserve)

1

Seal the original bottom hole — same method as outer pot.

2

Drill a side hole at ~2 cm from the base. Same bit, same patience. Slightly smaller hole is fine here (6–8 mm) since flow rate is lower.

3

Barbed fitting from outside (the "outside" of the inner pot faces the sand gap). Barbed end points into the fill gap; smooth nub protrudes into the sphagnum.

4

Silicone seal both faces.

5

Mesh cap on the inner nub to keep sphagnum from washing out.

6

No tube needed on the barbed end — it drains directly into the surrounding fill gap. Water exiting the inner pot goes straight into the sand fill, which is a bonus: it helps keep the fill wet from the inside too.

The inner pot barbed end has no tube — it's just an open nub sticking into the sand gap. Water flows out freely when you top-water the plant or when rain overfills the inner pot. It joins the fill, adds to the evaporative mass, and eventually exits via the outer pot drain. Elegant and simple.

Drain Cross-Section

pot wall silicone silicone mesh cap cable tie OUTSIDE tube connects here INSIDE (fill side) fill presses against mesh water flow → ~2cm from pot base (both pots)

Bill of Materials

ComponentSpecificationNotes
POT
Outer terracotta pot
35 cm Ø, low/wide, unglazed Seal original bottom hole. Drill side drain at ~2 cm from base.
POT
Inner terracotta pot
25 cm Ø, unglazed Seal original bottom hole. Drill side drain at ~2 cm from base (Dutch pot reserve). 5 cm side gap, level rims with outer pot, ~10 cm fill below.
POT
Inner pot supports
3× terracotta feet or flat stones, ~10 cm tall Set inner pot at correct height for level rims. Fill packs around and below them. Or: build up compacted fill bed to ~8 cm, place inner pot on it, continue filling around sides.
DRAIN
Barbed hose fittings ×2
8 mm, plastic or brass One per pot. Straight or 90°. Push through drilled holes.
DRAIN
Stainless mesh or perlon ×2
~3 cm squares Mesh caps on inner nubs. Secured with cable ties.
DRAIN
Aquarium-safe silicone
1 tube, clear Seals fittings, plugs original bottom holes. Must be 100% silicone (no anti-mould additives).
FILL
Sand
Well-graded quartz sand, 0.5–3 mm, 25 kg sack Wide grading (fines nest into coarse voids) gives tight packing, good capillary retention, and drainage. One 25 kg sack (~16 L) is more than enough — budget ~8 L. Rinse 2–3× with RO water before use.
MEDIA
Long-fiber sphagnum
Pure long-fibre sphagnum Inner pot substrate. Retains moisture, wicks cold from terracotta walls, zero minerals.
WATER
Reservoir
3–5 L, opaque, lidded Shaded. Receives drain return from outer pot.
WATER
12V water pump
R385 DC 12V diaphragm pump, low-duty cooling loop Powered from the MT3608 boost converter (set to 12V) through the MOSFET low-side switch. Draws ~450 mA at 12V.
WATER
Ring drip tube
6 mm silicone, ring shape Sits in fill gap between pot rims. Needle-punched holes every 3–4 cm.
WATER
Feed tube
6 mm silicone, ~1 m Pump to ring tube.
WATER
Drain tube
8 mm silicone, short Outer pot fitting to reservoir.
ELECTRONICS
ESP32-C3 SuperMini
USB-C, RISC-V 160 MHz, WiFi + BLE 5.0 Deep sleep ~43 µA (desolder red LED → ~5 µA). Powered via 5V pin from the Li-ion cell, subject to board-by-board verification. Native USB-CDC for programming.
ELECTRONICS
DS18B20 waterproof ×2
1 m cable, stainless steel probe Both share the same OneWire bus on GPIO4. One sits at root depth in sphagnum, the other outside the zeer pot in shade for ambient reference.
ELECTRONICS
Capacitive moisture probe
3.3V analog output type Telemetry input on GPIO2/ADC. Useful for calibration and logging; not the primary pump decision input in the default firmware.
ELECTRONICS
IRLZ44N MOSFET
Logic-level N-channel Low-side pump switching from GPIO3.
ELECTRONICS
Schottky flyback diode
Across pump terminals Cathode to pump positive, anode to pump negative.
POWER
Solar panel
5W / 5V USB-C, IP65 Monocrystalline, outdoor-rated, with direct USB-C lead into the TP4056 module.
POWER
TP4056 USB-C
5V 1A Li-ion charger + protection 4.2V charge cutoff, over-discharge protection, B+/B- to battery and OUT+/OUT- to the system rail.
POWER
Li-ion 18650 cell
3.7V nominal, around 3000 mAh In a holder with spring contacts. Feeds the ESP32 5V pin and the MT3608 boost converter input.
POWER
MT3608 boost converter
2A, adjustable output Standard. Boosts the 3.0–4.2V Li-ion rail to 12V for the R385 pump. Adjust trimpot to 12V before connecting the pump.
MISC
4.7 kΩ resistor
DS18B20 pull-up One resistor for the whole OneWire bus.
MISC
10 kΩ resistor
MOSFET gate pull-down + float pull-up Use two total in the canonical wiring.
MISC
IP65 enclosure (electronics)
~100×68×50 mm ESP32, TP4056, battery holder, connectors, and breadboard. Shade-mounted and kept dry.
MISC
IP65 enclosure (pump side)
~100×68×50 mm or similar Pump wiring and MT3608 boost converter. Keep water fittings isolated from the controller enclosure.
MISC
Float switch
NC elbow float switch Mounted through the side of the reservoir bucket. NC float switch: float up (water present) → switch opens → GPIO5 = HIGH → pump OK. Float down (low water) → switch closes → GPIO5 = LOW → pump blocked.

Wiring

Power Path

  • 5W USB solar panel TP4056 USB-C input
  • TP4056 B+ 18650 holder +
  • TP4056 B− 18650 holder −
  • TP4056 OUT+ VBAT rail / ESP32 5V pin / MT3608 VIN+
  • TP4056 OUT− Common GND

This project is now standardized on a single Li-ion 18650, not LiFePO4. Feeding the ESP32-C3 SuperMini from the raw Li-ion rail into its 5V pin is still board-dependent, so verify your exact clone before sealing the enclosure.

DS18B20 Probes (shared OneWire bus)

  • VCC (both) ESP32 3.3V rail
  • GND (both) Common GND
  • DATA (both) ESP32 GPIO 4
  • 4.7kΩ resistor DATA ↔ 3.3V rail (one pull-up for the whole bus)

Both probes are off-board waterproof cable sensors. In the Fritzing view they are shown as DS18B20 package stand-ins so the harness routing is easy to read. SHT35/SHT4x-style breakout boards are great ambient sensors, but they are poor substitutes here because they are not waterproof insertion probes and long outdoor I2C runs are fussier than a single OneWire cable. If you want a higher-end temperature sensor, look at a waterproof 10k NTC or PT1000 probe instead. If you know the 64-bit addresses of each DS18B20 probe, paste them into the sketch and skip the cooler-probe auto-identification fallback.

Capacitive Soil Moisture Probe

  • VCC ESP32 3.3V rail
  • GND Common GND
  • SIG / AO ESP32 GPIO 2 (ADC)

The moisture probe is telemetry-only by default. It is useful for calibration, logging, and spotting unexpected drying, but the pump logic still keys primarily off root temperature and the float-switch interlock. Use a capacitive 3.3V analog probe here, not a resistive fork sensor.

Pump Control

  • GPIO 3 MOSFET gate
  • 10kΩ resistor Gate ↔ GND (pull-down)
  • MOSFET source Common GND
  • MOSFET drain Pump negative lead
  • MT3608 VIN+ VBAT rail
  • MT3608 GND GND rail (input and output ground shared on module)
  • MT3608 VOUT+ Pump positive lead (set trimpot to 12V)
  • Schottky diode Cathode to pump +, anode to pump − (flyback protection)

The MT3608 boost converter provides a stable 12V to the R385 pump from the 3.0–4.2V Li-ion rail. Adjust the trimpot until a multimeter reads 12V on VOUT before connecting the pump.

Float Switch (NC, side-mount, on reservoir bucket)

  • Float terminal ESP32 GPIO 5
  • Float terminal GND
  • 10kΩ resistor GPIO 5 ↔ 3.3V rail (pull-up)

Float up (water present) → switch opens → GPIO5 = HIGH → pump runs. Float down (low water) → switch closes → GPIO5 = LOW → pump blocked. Note: firmware should use waterOk = (digitalRead(5) == HIGH).

Canonical Electrical Layout

The current canonical build is: 5W USB solar panel → TP4056 → 18650 Li-ion → ESP32-C3 SuperMini, with an MT3608 boost converter providing stable 12V to the R385 pump, switched by a logic-level MOSFET (low-side). Two waterproof DS18B20 probes share GPIO4, the capacitive moisture probe feeds GPIO2/ADC, and the NC float switch lands on GPIO5.

The primary circuit reference is the 6-page sectioned schematic (PDF), which covers power supply, sensors, pump driver, and pin reference with full annotations.

Project files: schematic-sections.pdf · zeer-pot-v24.fzz (Fritzing) · darlingtonia-zeer-pot.ino · platformio.ini · WIRING-GUIDE.md

Wiring Diagram

For the full annotated circuit, see the 6-page sectioned schematic PDF — it covers power supply, temperature sensors, pump driver, float switch, moisture sensor, and a complete pin reference with component table.

The Fritzing breadboard view below shows the physical layout with all off-board components (probes, TP4056, battery, pump, MT3608).

Editable Fritzing project: zeer-pot-v24.fzz · Detailed step-by-step: WIRING-GUIDE.md

ESP32-C3 SuperMini Firmware

The project now includes a real sketch file in the folder: darlingtonia-zeer-pot.ino. The firmware keeps pump decisions tied to root temperature, treats the capacitive moisture probe as telemetry-only by default, and publishes root/ambient delta, low-water state, and moisture readings over MQTT.

If you know the exact 64-bit ROM addresses of your two DS18B20 probes, paste them into the sketch. If you leave the manual address arrays at zero, the code falls back to a first-boot heuristic that assumes the cooler probe is the root probe.

darlingtonia-zeer-pot.ino // ESP32-C3 SuperMini pin map const int PIN_DS18B20 = 4; const int PIN_PUMP = 3; const int PIN_FLOAT_SW = 5; const int PIN_MOISTURE = 2; // Moisture probe is telemetry-only by default. const int MOISTURE_DRY_RAW = 3000; const int MOISTURE_WET_RAW = 1500; // Optional manual DS18B20 addresses. const DeviceAddress ROOT_ADDR_MANUAL = {0,0,0,0,0,0,0,0}; const DeviceAddress AMB_ADDR_MANUAL = {0,0,0,0,0,0,0,0};

Supporting project files: darlingtonia-zeer-pot.ino · platformio.ini · zeer-pot-v24.fzz

platformio.ini

platformio.ini [env:esp32-c3-supermini] platform = espressif32 board = esp32-c3-devkitm-1 framework = arduino lib_deps = paulstoffregen/OneWire@^2.3.8 milesburton/DallasTemperature@^3.11.0 knolleary/PubSubClient@^2.8 monitor_speed = 115200

Build & Cultivation Notes

Pot Preparation (Do First, 48h Before Assembly)

Both pots need their bottom holes sealed and new side drains drilled. Do all the silicone work at once and let everything cure for 24–48 hours before any water contact.

Drilling terracotta: use a 8–10 mm diamond or carbide masonry bit. Tape an X of masking tape over the drill point to prevent skipping. Start at low RPM with light pressure. Keep the bit wet — a spray bottle or a friend dripping water works. Don't rush. Terracotta is soft but brittle — let the bit do the work. For the inner pot (25 cm), a 6–8 mm hole is sufficient.

Preparing the Sand

Use well-graded quartz sand (0.5–3 mm) — sold in 25 kg sacks at building and pool supply shops. The wide grading packs tighter than uniform pool-filter grades because fines fill the voids between coarse grains. Rinse it 2–3 times with distilled or RO water to wash out dust and fines — tip the sand into a bucket, flood with water, stir vigorously, pour off the cloudy water, repeat until the rinse water runs mostly clear. Then pre-wet thoroughly before packing: the sand should feel heavy and uniformly damp with no dry pockets. You need roughly 8 litres (one 25 kg sack gives ~16 L, so you'll have plenty left over for topping up after settling).

Assembly Sequence

1

Install barbed fitting in outer pot side drain at 2 cm. Silicone seal. Let cure.

2

Install barbed fitting in inner pot side drain. Silicone seal. Mesh cap on inside nub. Let cure.

3

Fill outer pot with pre-wetted sand to ~8 cm, compacting gently. This is the base bed.

4

Place inner pot supports (terracotta feet or flat stones) on the fill bed, then set the inner pot on them so the rims are level. Alternatively, just compact the fill bed firmly and sit the inner pot directly on it.

5

Centre the inner pot — 5 cm gap all around. Pack pre-wetted sand into the side gap, tamping gently every few centimetres. Leave the top 2 cm free for the drip tube.

6

Place the ring drip tube in the top 2 cm of the gap. Connect feed tube.

7

Connect outer pot drain fitting → 8 mm tube → reservoir.

8

Place the R385 12V pump in the reservoir and connect the feed tube. The MT3608 boost converter must be set to 12V (adjust trimpot, verify with multimeter) before connecting the pump.

9

Fill inner pot with pure long-fibre sphagnum. Plant Darlingtonia. Insert the DS18B20 root probe at root depth in sphagnum, place the ambient DS18B20 outside the zeer pot in a shaded spot, and insert the capacitive moisture probe into the root zone where it will stay damp but not submerged. At the electronics end, both DS18B20 probes share the same OneWire bus (VCC+VCC, GND+GND, DATA+DATA), while the moisture probe gets its own 3.3V, GND, and GPIO2/ADC line.

10

Saturate the fill by pouring water into the gap from above. Let stabilise 24h before powering on the system.

Water Quality

Rainwater, distilled, or RO only. TDS < 50 ppm. Top up reservoir as evaporation depletes it — expect 0.5–1.5 L/day in peak summer depending on conditions and the 35 cm pot's larger evaporative surface.

Placement

Full air exposure on all sides of the outer pot. The 35 cm pot has significantly more evaporative surface than a 30 cm — this is an advantage. East-facing for morning sun, shaded from ~14:00 in July/August. Don't push the pot against walls or into corners.

Power Budget

With realistic 21°C thresholds, the pump runs mainly during the hottest 4–5 hours of a peak August day rather than all 10. The R385 pump draws ~450 mA at 12V, which translates to ~1.7A from the 3.7V Li-ion cell through the MT3608. At 20-second bursts every 2–5 minutes during hot hours, daily pump energy is modest. The ESP32 + sensors remain a small load compared with the pump, and a 5W USB solar panel still gives you a comfortable margin through a Ligurian summer as long as the pump duty cycle stays modest.

Winterization

Drain reservoir, disconnect pump, let fill dry. The inner pot's side drain ensures winter rain exits rather than drowning the dormant crown. Resume in late April.

Node-RED / MQTT

Topic: zeer/darlingtonia/status { "root": 18.3, "ambient": 29.1, "delta": 10.8, "pump": true, "water": true, "sleep_min": 2, "boot": 412 }

Delta = ambient − root = the zeer pot's cooling performance in °C. Expect 5–12°C on a hot Ligurian afternoon with wet fill. Messages arrive only when something happened: pump activity, temperature shift >1°C, low water alarm, or a ~30-minute heartbeat. Feed into InfluxDB + Grafana for root vs. ambient over time, delta-T trends, pump duty cycle, and water level.