Engineering the Tools of Scientific Discovery

Handheld Subsurface Imaging for Field Research

A portable geophysical sensor that fuses Electrical Resistivity Tomography and 24 GHz FMCW Radar to locate buried objects — at 1/200th the cost of commercial ground-penetrating radar.

View on GitHub Learn More ↓
$67
Total Hardware Cost
16-bit
ADC Resolution (ADS1115)
24 GHz
FMCW Radar Frequency
4 Hz
Scan Acquisition Rate

Paleontology Is Stuck in the Past

Field researchers still rely on manual excavation techniques that haven't changed in a century. Professional GPR systems cost tens of thousands of dollars. We built something better — and cheaper.

Electrical Resistivity Tomography

A 4-electrode Wenner array injects current through the soil and measures potential difference to map subsurface resistivity — revealing material boundaries, moisture gradients, and buried anomalies.

📡

FMCW Radar (24 GHz)

An HLK-LD2410C module emits continuous-wave radar into the ground. Reflected energy and distance estimates reveal density changes, voids, and metallic inclusions beneath the surface.

🔀

Sensor Fusion

Cross-referencing both modalities produces a fused anomaly score. When ERT and radar agree, confidence soars — reducing false positives and pinpointing targets before excavation begins.

System Design

An Arduino Uno R3 orchestrates the ADS1115 ADC (I²C) and LD2410C radar (UART), streaming fused CSV data at 115200 baud for real-time visualization.

🎛️

16-bit Precision

The ADS1115 provides 65,536 discrete voltage levels (125 µV/bit) — critical for detecting the millivolt-scale signals in ERT measurements that Arduino's built-in 10-bit ADC would miss entirely.

🔧

Modular Bases

A 3D-printed dovetail mechanism lets users hot-swap between the ERT probe rail and FMCW radar sled — or combine them. Seven interlocking print sections assembled with Velcro retention.

Embedded Software

The Arduino firmware runs a tight 250 ms acquisition loop with real-time binary frame parsing, baseline calibration, and exponential smoothing.

firmware/ert_fmcw_sensor.ino C++ / Arduino
// ── Signal Conditioning Pipeline ──
// 1. Baseline calibration (first 20 radar frames)
if (!baselineDone) {
  baselineSum += latestScore;
  baselineCount++;
  if (baselineCount >= 20) {
    baselineScore = baselineSum / baselineCount;
    baselineDone = true;
  }
}

// 2. Subtract ambient baseline
int usableScore = latestScore - baselineScore;
if (usableScore < 0) usableScore = 0;

// 3. Exponential moving average (α = 0.25)
smoothScore = 0.75f * smoothScore + 0.25f * (float)usableScore;
Serial Output Format CSV
ADC,142,0.565500,0.564375,0.552375,0.553750,-0.000125
RADAR,142,2,87,14,110

Five Prototypes to Final

Iterative design driven by testing, peer feedback, and manufacturing constraints.

Prototype 1

Dovetail Concept Validation

Proved the interchangeable base system works mechanically. Identified the need for a third coupling piece (female dovetail counterpart) to simplify swapping.

Prototype 2

Electrical Integration

Wired the ADS1115 + LD2410C onto a perfboard. First successful dual-modality data capture. Discovered thumb screws were impractical for field use.

Prototype 3

Radar Sled Redesign

Removed the top half of the radar sled and replaced it with the ERT rail, saving print volume. Added the hollow center channel for unobstructed radar propagation.

Prototype 4

Firmware Polish

Implemented baseline calibration, EMA smoothing, and stale-data timeouts. Added CSV column headers for automated parsing.

Final

Production Build

Seven interlocking 3D-printed sections. Velcro retention system. Full field test with 180-scan data capture validating both modalities.

Built With

Arduino IDE C / C++ MATLAB Python SciPy Matplotlib SolidWorks ADS1115 (I²C) LD2410C (UART) 3D Printing (PLA)