Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/ricardomb-tech/surqo/llms.txt

Use this file to discover all available pages before exploring further.

Each Surqo field node is a self-contained IoT device that monitors soil moisture, soil temperature, air temperature and humidity, and solar UV index around the clock. Built around the ESP32 WROOM-32 and five low-cost sensors, a complete node costs approximately $15 USD and achieves roughly two weeks of autonomy on two 18650 Li-Ion cells thanks to deep sleep between readings (~10 µA at rest).

Bill of Materials

ComponentFunctionPrecisionApprox. Cost
ESP32 WROOM-32 DevKitMicrocontroller + WiFi$4 USD
DHT22 (AM2302)Air temp + humidity±0.5°C, ±2% RH$2 USD
DS18B20 waterproofSoil temperature (metal probe)±0.5°C$2 USD
Capacitive soil moisture v2.0Volumetric soil moisture$1.5 USD
ML8511 UV sensorSolar UV index$2 USD
2× 18650 Li-Ion battery~2 weeks autonomy in deep sleep$4 USD
TP4056 with protectionBattery charger$1 USD
IP65 enclosureRain + dust protection$2 USD
Total~$15 USD
Use the DHT22 (AM2302), NOT the DHT11. The DHT11 has ±2°C precision — insufficient for accurate VPD (Vapour Pressure Deficit) calculation. Errors of this magnitude in temperature or humidity can produce incorrect irrigation recommendations from the AI analysis engine.

Sensor Specifications

DHT22 (Air Temperature and Humidity)

The DHT22 uses a capacitive humidity element with an integrated NTC thermistor.
  • Humidity range: 0–100% RH, ±2% RH accuracy
  • Temperature range: -40 to 80°C, ±0.5°C accuracy
  • Max sampling rate: 0.5 Hz (one reading every 2 seconds)
  • Firmware behaviour: The node attempts up to 5 readings and averages the first 3 valid ones to improve reliability.

DS18B20 (Soil Temperature)

The DS18B20 comes in a stainless steel waterproof probe, ideal for direct soil insertion.
  • Protocol: 1-Wire digital (Dallas OneWire)
  • Resolution: 12-bit → 0.0625°C steps
  • Conversion time: ~750 ms at 12-bit resolution
  • Wiring requirement: 10 kΩ pull-up resistor between DATA and 3.3V

Capacitive Soil Moisture Sensor v2.0

The black capacitive sensor measures dielectric permittivity — it does not corrode like resistive sensors.
  • Output: Analog voltage → ADC (GPIO32, ADC1_CH4)
  • Calibration required: You must measure the raw ADC value in completely dry soil (SOIL_DRY_ADC) and in saturated soil (SOIL_WET_ADC) and set both constants in config.h.
  • Default calibration values in firmware: SOIL_DRY_ADC = 3200, SOIL_WET_ADC = 1200

ML8511 UV Sensor

The ML8511 outputs an analog voltage proportional to UV irradiance.
  • Output voltage range: ~0.99V at UV index 0 → ~2.8V at UV index 11
  • UV index formula used in firmware:
    UV_index = (Vout − 0.99) × 17
    
  • ADC pin: GPIO34 (ADC1_CH6) — input-only on ESP32

Battery Voltage Monitor

Battery voltage is read through a resistive voltage divider.
  • Divider: R1 = 100 kΩ, R2 = 100 kΩ → divide-by-2 factor
  • ADC pin: GPIO35 (ADC1_CH7) — input-only on ESP32
  • Formula: battery_mV = (ADC_raw × 3300 / 4095) × 2

Power Consumption

The ESP32 spends the vast majority of its time in deep sleep. The active window — reading all sensors, connecting to WiFi, and publishing via MQTT — lasts approximately 15 seconds per cycle.
ModeCurrent Draw
Deep sleep~10 µA
Active (sensors reading)~80 mA
WiFi transmission~200–300 mA
Active cycle duration~15 seconds
Autonomy (2× 18650, 15 min sleep interval)~2 weeks
Autonomy (2× 18650, 30 min sleep interval)~4 weeks
GPIO34, 35, 36, and 39 on the ESP32 are input-only pins — they have no internal pull-up/pull-down resistors and cannot be used as digital outputs. Do not attempt to drive any load from these pins.

Build docs developers (and LLMs) love