Engineering & Research

GreenUpp Climate & Weather Research Station

From local conditions to useful farm intelligence.

A modular ESP32 station exploring how air, rain, wind, soil and sunlight measurements can support better-informed farming in Zambia—even when connectivity is intermittent.

Design documented · hardware validation pending

1.50 m3 m0.5 mM03M06M01M07M04M05M02Conceptual elevation · proposed dimensions · not CAD

Project status

What exists today — and what doesn’t.

Engineer a maintainable home prototype, validate each measurement channel, then learn what is required for a dependable farm deployment and GreenUpp integration.

  • Seven module design guides
  • Bench sketches and browser demonstrations
  • Integrated firmware — specified, not yet completed or validated
  • Fabrication-ready CAD / STL / STEP and a manufactured PCB
  • Public live station feed and deployed ingest endpoint
  • Demonstrated accuracy, agronomic outcomes, weatherproof rating, field reliability

System overview

Seven modules, one station.

Sensors feed local processing on an ESP32, records go to durable storage on the station, and — once built — upload to GreenUpp. Select a module in the model or the list.

1.50 m3 m0.5 mM03M06M01M07M04M05M02Conceptual elevation · proposed dimensions · not CAD
Conceptual model · not CAD

Module chapters

How each part works.

M01

The sensing core

Design: DocumentedHardware: Proposed

Goal

Measure local air temperature, relative humidity and station pressure while limiting bias from direct sunlight and electronics heat.

How it works

  • An SHT45 sits centrally in the ventilated white screen, away from walls that heat in the sun.
  • The BMP390 and the ESP32 sit in a separate shaded, pressure-vented hub so electronics heat stays out of the air sample.
  • Both sensors share a short 3.3 V I²C bus: 3V3, GND, SDA on GPIO21 and SCL on GPIO22.

Where it sits

Sensor suspended in the centre of the screen at a proposed 1.50 m air sensing point; hub mounted lower on the stand, shaded.

Station pressure display

Illustrative / not live data
Display870 hPa

Station pressure at the sensor — not converted to sea-level pressure.

Components, outputs, limits and validation
Components
  • 1 × ESP32-DevKitC V4 (WROOM-32E)
  • 1 × Adafruit SHT45 (PTFE-membrane variant preferred)
  • 1 × Adafruit BMP390
  • 1 × Vented electronics hub, terminals and nylon supports
Outputs
  • Air temperature · °C
  • Relative humidity · %RH
  • Station pressure · PaShown in hPa by dividing by 100. Not sea-level pressure.
Limitations
  • Long I²C runs need validation or a redesign.
  • The SHT45's built-in heater affects observations while it runs.
  • Station pressure is not automatically sea-level pressure.
Validation plan
  • Side-by-side comparison with a reference instrument
  • Heat-bias test in sun and shade
  • Error test on the final cable length

M02

Rainfall

Design: DocumentedHardware: Proposed

Goal

Measure local rainfall accumulation and investigate its relevance to irrigation context.

How it works

  • Rain fills a commercial tipping bucket; each tip closes an isolated contact once.
  • The pulse is cleaned by an SN74LVC1G17 non-inverting Schmitt buffer and counted on GPIO27.
  • Rain = tips × calibration factor (nominal 0.2794 mm per tip until calibrated).

Where it sits

On its own level mount with the rim at a proposed 0.5 m, clear of splash and overhangs.

Tipping bucket

Illustrative / not live data
0 tips
Interval rain0 mm
Interval-mean rate0 mm/h
Calibration
Expected rain20 mm
Components, outputs, limits and validation
Components
  • 1 × Rain gauge from the SparkFun Weather Meter Kit (shared with wind)
  • 1 × SN74LVC1G17 Schmitt pulse conditioner
  • 1 × Independent level mount
Outputs
  • Raw tips · count
  • Interval rain · mm
  • Interval-mean rate · mm/h
  • Coverage · %Share of the interval actually observed.
Limitations
  • Contact bounce, blockage, wind undercatch and outage loss.
  • Zero pulses does not prove the wiring is healthy.
  • Calibration needs the gauge's actual catch area — the example area is not the product specification.
Validation plan
  • 20 manual tips must produce 20 counts
  • Repeated controlled-volume tests to fit the tip coefficient

M03

Wind

Design: DocumentedHardware: Proposed

Goal

Characterise local airflow exposure and explore how it relates to field conditions.

How it works

  • Cup rotation produces pulses on GPIO26 through its own pulse conditioner; speed is provisionally 0.667 m/s per Hz.
  • The resistive vane is read on ADC1 GPIO32 with a 15 kΩ bias and is classified into calibrated voltage windows.
  • Direction is averaged on the circle, so 350° and 10° average to north — never south.

Where it sits

On a 3 m home mast with the vane aligned to true north.

Cups and vane

Illustrative / not live data
Provisional speed (Hz × 0.667)0.667 m/s

Mean direction wind comes from (true north)

0° · N

Components, outputs, limits and validation
Components
  • 1 × Cups, vane and crossarm from the same SparkFun Weather Meter Kit
  • 1 × Separate pulse conditioner (SN74LVC1G17)
  • 1 × 15 kΩ bias and specified vane-return / filter network
Outputs
  • Mean wind speed · m/s
  • Maximum rolling 3-second speed · m/sPrototype definition.
  • Direction wind comes from · °Unknown when the average has no clear direction.
  • Raw counts, vane voltage and quality · —
Limitations
  • The vendor speed coefficient needs validation.
  • Start with eight validated directions — no 16-direction accuracy claim.
  • A 3 m home mast does not produce standard 10 m open-terrain wind data.
Validation plan
  • Pulse-generator test
  • Measure each vane voltage window
  • Comparison against calibrated reference airflow (a desk fan is only a function check)

M04

Soil and leaf

Design: DocumentedHardware: Proposed

Goal

Study root-zone conditions and surface wetness at representative locations.

How it works

  • Two DS18B20 probes measure soil temperature at depth.
  • Two TEROS 10 probes report analog soil signals through a switched excitation circuit.
  • A PHYTOS 31 represents leaf-surface wetness; hysteresis keeps the previous state between calibrated thresholds.
  • Volumetric water content is shown only after soil-specific calibration.

Where it sits

Probes at proposed 10 cm and 30 cm depths; leaf sensor on a stake at a 45° starting angle.

Soil reference sample and leaf state

Illustrative / not live data
Reference VWC0.25 m³/m³
Leaf wetness hysteresis
Leaf: unknown

Between thresholds the previous state is kept; it starts unknown until a threshold is crossed.

Components, outputs, limits and validation
Components
  • 2 × DS18B20 temperature probe
  • 2 × TEROS 10 soil moisture probe
  • 1 × PHYTOS 31 leaf wetness sensor
  • 1 × Switched excitation circuit
Outputs
  • Soil temperature by depth · °C
  • Raw soil signal · mV
  • Calibrated VWC · m³/m³Empty until a soil-specific calibration exists.
  • Leaf state · wet / dry / unknown
  • Valid wet duration · h
Limitations
  • Two probes cannot characterise an entire farm.
  • Leaf wetness does not diagnose disease or prescribe chemicals.
Validation plan
  • Match each probe's ROM ID to its depth
  • Soil reference samples
  • Held-out calibration points
  • Compare against observed dew and wetness

M05

Radiation and plant light

Design: DocumentedHardware: Proposed

Goal

Quantify incoming solar energy and, optionally, photosynthetic light exposure.

How it works

  • Self-powered sensor heads output millivolts into an ADS1115 ADC at address 0x48.
  • Each channel has its own gain and factor: solar mV × 5, PAR mV × 100, UV-A mV × 10 (nominal, selected models).

Where it sits

Level heads on a separate boom, clear of shade from the mast, screen and panel.

Wiring safety

  • No excitation voltage to these self-powered heads.

Millivolts to light

Illustrative / not live data
Solar (mV × 5)1,000 W/m²
PPFD (mV × 100)2,000 µmol/m²/s
UV-A (mV × 10) — not UV Index40 W/m²
Over an interval
Solar energy21.6 MJ/m²
Solar energy6 kWh/m²
Light integral for this interval38.88 mol/m²

Called DLI only when the interval covers the whole day — a partial interval is not a full-day DLI.

Components, outputs, limits and validation
Components
  • 1 × SP-110-SS pyranometer
  • 1 × SQ-500-SS PAR sensor(optional)
  • 1 × SU-200-SS UV-A sensor(optional)
  • 1 × ADS1115 ADC (0x48)
Outputs
  • Solar irradiance · W/m²
  • Solar energy · MJ/m²
  • PPFD · µmol/m²/s
  • Light integral · mol/m²Called DLI only when the interval covers the whole day, with coverage shown.
  • UV-A irradiance · W/m²Not a UV Index.
Limitations
  • Never convert lux to PAR universally.
  • UV-A is not the UV Index.
  • A partial-interval light integral is not a full-day DLI.
Validation plan
  • Levelling and shadow checks
  • Millivolt comparison
  • ADC loading and noise test
  • Comparison with a calibrated instrument

M06

Autonomous power

Design: DocumentedHardware: Proposed

Goal

Investigate sustained operation through nights and cloudy periods.

How it works

  • A proposed 50 W panel charges a factory 12.8 V / 20 Ah LiFePO₄ battery through an MPPT controller.
  • The controller's LOAD output feeds a fused buck regulator that supplies 5 V to the ESP32.
  • Battery and load branches are each fused and can be disconnected.

Where it sits

Separate power enclosure and panel bracket; the panel is not the pyranometer.

Wiring safety

  • Battery never connects to a GPIO pin.
  • LOAD− must not be bypassed externally to BAT−.
  • ESP32 power sources are mutually exclusive — never USB and the 5 V rail at once.

Power budget (assumptions)

Illustrative / not live data
Daily demand31.84 Wh/day
Battery needed for the no-sun days11.66 Ah
Autonomy from installed battery5.15 days
Energy-balance panel minimum16.3 W

The panel minimum only replaces each day's use — it leaves no surplus to recover the battery after cloudy days. Autonomy is not guaranteed.

Components, outputs, limits and validation
Components
  • 1 × 50 W PV panel (proposed)
  • 1 × SmartSolar 75/10 MPPT controller
  • 1 × D24V22F5 5 V buck regulator
  • 1 × 12.8 V 20 Ah LiFePO₄ battery with BMS
  • 1 × 15 A battery fuse
  • 1 × 1 A load fuse (proposed)
  • 1 × Disconnects and rated cabling
Outputs
  • Daily demand · Wh/dayFrom the calculator's assumptions until measured.
  • Autonomy · days
Limitations
  • Sunshine and load inputs are assumptions; autonomy is not guaranteed.
  • Battery model and charge profile are pending.
  • GPIO33 stays disconnected until safe battery monitoring is designed.
Validation plan
  • Measured 24-hour consumption
  • Rail transients
  • Thermal behaviour
  • Tested low-voltage cutoff and recovery

M07

Reliable records

Design: DocumentedHardware: Proposed

Goal

Retain traceable observations during intermittent connectivity and avoid duplicate server records.

How it works

  • Acquisition, aggregation, storage and upload are separate responsibilities.
  • Each record has an immutable identity — device_id + boot_id + sequence — and identical bytes on retry.
  • Records go to an append-only, framed journal on microSD; the station drops a record from its queue only after the server confirms the commit.
  • Same identity with the same content is acknowledged as a duplicate; same identity with different content is kept and reported as a conflict.
  • Unknown UTC stays empty; server receipt time is never used as measurement time.

Where it sits

Firmware on the hub's ESP32; journal on the hub's microSD card.

Record path

Illustrative / not live data
  1. 1AcquireSensors sampled on schedule
  2. 2AggregateInterval values + quality + coverage
  3. 3JournalAppend-only framed record on microSD
  4. 4UploadSame bytes on every retry
  5. 5CommitServer stores, then acknowledges

id = device_id : boot_id : sequence

Try the offline delivery simulator
Components, outputs, limits and validation
Components
  • 1 × ESP32 (shared with the sensing core)
  • 1 × 3.3 V-compatible microSD interface
  • 1 × High-endurance microSD card
Outputs
  • Timestamped, quality-aware records · —
  • Coverage · %
  • Offline queue state · records
  • Idempotent delivery · —
Limitations
  • Integrated firmware and the backend are not implemented yet.
  • SD writes can be lost or corrupted on power failure.
  • Counts can be lost before they are committed.
Validation plan
  • Outage
  • Lost server response
  • Power interruption
  • Corrupt frame
  • Full card
  • Clock jump
  • Cross-tenant rejection

Build and fabrication

Buy, print, fabricate.

Buy

  • Sensing heads and mechanisms
  • Battery and BMS
  • Charge controller and regulator
  • Rated enclosures, glands and protection

Print

  • Sensor cradle and board trays
  • Cable combs and labels
  • Low-load adapters
  • Test jigs

Fabricate

  • Radiation screen
  • Structural stand, mast and boom
  • Rain gauge plate
  • Panel bracket

Proposed dimensions

Labelled assumptions — subject to real fit and testing.

Screen body
450 × 450 × 500 mm
Air sensing point
1.50 m above ground
Soil probe depths
10 cm and 30 cm
Rain gauge rim
0.5 m above ground
Wind mast (home)
3 m
Electronics hub
≈ 300 × 250 × 150 mm starting allowance
Power enclosure
TBD

The screen uses white outdoor material, open airflow, rain-shedding louvers and thermal isolation from the electronics. Printed parts start as test coupons, use threaded hardware and protected wiring. No production CAD or print files exist yet, and the web model is not fabrication CAD.

Assembly sequence

Proposed order. Full steps live in the fabrication guide (not yet published).

  1. 01Bench-validate each module's sensor and wiring on its own.
  2. 02Fit out the electronics hub: ESP32, BMP390, ADC, pulse conditioners, terminals.
  3. 03Build the screen and stand; suspend the SHT45 at the centre.
  4. 04Raise the mast and boom; align the vane to true north; level the radiation heads.
  5. 05Install the power enclosure and panel; fuse both branches before connecting the load.
  6. 06Route and label the cable harness; check each net before power-up.
  7. 07Run the integrated outage, power and comparison tests.

Bill of materials

One weather-meter kit serves rain and wind. Optional sensors are marked. No prices until sourced quotes exist.

ItemQtyModulesBasis
ESP32-DevKitC V4 (WROOM-32E)1M01, M07Exact model
Adafruit SHT45 (PTFE variant preferred)1M01Exact model
Adafruit BMP3901M01Exact model
SparkFun Weather Meter Kit — rain gauge, cups, vane, crossarmOne kit serves both modules.1M02, M03Exact model
SN74LVC1G17 Schmitt bufferOne per pulse channel.2M02, M03Exact model
15 kΩ vane bias and return / filter network1 setM03Allowance
DS18B20 temperature probe2M04Exact model
TEROS 10 soil moisture probe2M04Exact model
PHYTOS 31 leaf wetness sensor1M04Exact model
Switched excitation circuit1M04Allowance
SP-110-SS pyranometer1M05Exact model
ADS1115 ADC1M05Exact model
SQ-500-SS PAR sensoroptional1M05Exact model
SU-200-SS UV-A sensoroptional1M05Exact model
50 W PV panelProposed rating.1M06Allowance
SmartSolar 75/10 MPPT controller1M06Exact model
D24V22F5 5 V buck regulator1M06Exact model
12.8 V 20 Ah LiFePO₄ battery with BMSModel and charge profile pending.1M06Allowance
15 A battery fuse, 1 A load fuse, disconnects1 setM06Allowance
Rated cabling, glands, terminals, nylon supports—AllMeasure on build
3.3 V microSD interface + high-endurance card1M07Exact model
Vented electronics hub (~300 × 250 × 150 mm)Starting size, subject to real fit.1M01, M07Allowance
Power enclosureDimensions TBD.1M06Measure on build

Research plan

Questions first. Evidence next.

QuestionProposed methodEvidence to collect
Does the screen reduce radiative and thermal bias?Compare against a trusted reference across daylight, airflow and radio statesBias, spread, conditions, reference uncertainty
Are rain measurements repeatable?Repeated controlled-flow volumes and count testsTip coefficient, residuals and flow dependence
Are wind classifications reliable?Reference speed comparison and repeated vane positionsCalibration windows, ambiguity and sampling limits
Can soil signals support interpretation?Soil-specific reference sampling with held-out pointsCalibration curves, residuals, texture and salinity context
Are radiation channels stable?Level and shadow checks and reference comparisonOffset, noise, loading and comparison error
Is power sufficient?Battery-side 24-hour energy logging and recovery testsActual Wh/day, temperature, rail dips, outage duration
Does offline delivery preserve records?Controlled outages, replay and power-loss testsUnique records, queue recovery and explicit loss bounds

Results

Awaiting bench and field validation

No datasets yet. Charts appear here only when real measurements exist.

Reference instruments needed

  • Trusted reference thermometer / hygrometer and barometer
  • Graduated volume source for rain calibration
  • Calibrated reference airflow (wind tunnel or reference anemometer)
  • Oven, scale and sampling rings for soil reference samples
  • Calibrated pyranometer / quantum sensor for comparison
  • Battery-side energy logger

Each evidence entry will record

  • Date
  • Firmware / calibration revision
  • Test procedure
  • Instrument
  • Dataset
  • Limitations

Still unknown: real accuracy, agronomic usefulness, weatherproofing and field reliability.

Data journey

Records that survive a bad connection.

Connectivity on farms is intermittent. The station is designed to keep recording offline and deliver each record exactly once when the link returns.

  1. 01

    Sense

    Sensors sample air, rain, wind, soil, leaf and light.

  2. 02

    Process

    The ESP32 aggregates readings with quality flags and coverage.

  3. 03

    Store

    Each record is appended to a framed journal on the microSD card.

  4. 04

    Deliver

    When online, records upload; the server commits before it acknowledges.

  5. 05

    Ingest (future)

    Eventually, records feed GreenUpp — not built yet.

Quality. Every value carries flags; missing or suspect readings stay empty instead of being guessed.

Coverage. Each interval reports how much of it was actually observed, so a partial day is never presented as a whole one.

Time. Unknown UTC stays empty; the server's receipt time is never used as measurement time.

Offline delivery simulator

Illustrative / not live data
Link
Online
Boot
1
Queued
0
Server records
0
  1. Add a sample, go offline, upload, lose a reply — then retry.

Identity is device_id : boot_id : sequence. The journal survives the simulated reboot; this does not model real SD-card durability.

Resources

Guides, sources and revisions.

Guides

  • Module 01 guide — The sensing coreNot yet available
  • Module 02 guide — RainfallNot yet available
  • Module 03 guide — WindNot yet available
  • Module 04 guide — Soil and leafNot yet available
  • Module 05 guide — Radiation and plant lightNot yet available
  • Module 06 guide — Autonomous powerNot yet available
  • Module 07 guide — Reliable recordsNot yet available
  • Parts, fabrication and assembly guideNot yet available

Revision history

  • Revision A · 15 October 2026

    Case study published from the seven-module design brief. Hardware validation pending.

Build or test it with us.

Research partners, engineers and farms with reference instruments or test sites — tell us what you can bring.

Get in touch