logo
Kurashizu Blogwhere ideas flow
  • Home
  • News
  • Blog
  • About
  • Home
  • News
  • Blog
  • About

© 2026 Kurashizu. All rights reserved.

Admin·New Post·Service Status
Powered by Cloudflare·07.11.26
← Back to news

I built a mmWave material classification radar

Original article
gauthier-lechevalier.com|14 points|1 comments|by GL26|Jun 30, 2026

Engineering a mmWave Radar for Material Classification

Building a hardware startup is easy incredibly grueling. I spent half a year diving deep into the trenches of RF and embedded systems to create a radar capable of identifying materials. This project began as my "end of studies" thesis, though it evolved into something more. Unfortunately, due to a lack of funding, the venture remains in a state of limbo.

The Problem: The Asbestos Trap

In Europe, asbestos is a pervasive architectural nightmare. It's hidden in walls, and the only way to know if you're breathing poison is to hire specialists.

The current industry standard is destructive: you cut a sample out of your wall, send it to a laboratory, and wait for a result. Because of heavy regulation and the "fear factor," the pricing is predatory.

Analysis StageActual CostEnd-User Price
Lab Analysis\approx \1$\approx \60$
Multiple SamplesLinear increaseExponentially expensive

The Goal: Create a non-destructive radar that detects asbestos in situ.


🛠️ The Hardware Stack

Since I'm an engineering graduate specializing in wave physics and material science, I knew I needed a rapid prototype rather than starting from scratch with a PCB.

Core Components:

  • Radar Front-end: Texas Instruments IWRL6432 BOOST
  • Controller: ESP32 development kit
  • Software Assistance: Claude Code (which has turned software development into a commodity)

Prototyping Checklist:

  • Integrate TI Boost board with ESP32.
  • Develop a physical test bench for material swapping.
  • Implement a mechanism to test material tightness/compression.
  • Design a mechanical enclosure.

📡 The Digital Signal Processing (DSP) Pipeline

The device utilizes FMCW (Frequency Modulated Continuous Wave) radar. Instead of a static tone, it emits a "chirp"—a frequency sweep that increases over time.

The Signal Flow

  1. Chirp Characterization: I spent two months perfecting the toolchain and fighting the compile →\rightarrow→ flash →\rightarrow→ debug cycle. I had to precisely map the start frequency, slope, and bandwidth.
  2. Mixing: The received echo mixes with the transmitted signal to create a beat tone. The frequency of this tone is proportional to the distance: fbeat∝distancef_{beat} \propto \text{distance}fbeat​∝distance.
  3. Range FFT: A Fast Fourier Transform converts these frequencies into distance bins, providing reflected energy levels at various depths.
  4. Capon Beamforming (AoA): To avoid "blurry" returns, I used Minimum Variance Distortionless Response (MVDR) beamforming across the MIMO array. This resolves the Angle of Arrival (AoA), creating a sharp angular density spectrum.

🧠 The AI Integration

To turn raw electromagnetic data into a label, I implemented a Convolutional Neural Network (CNN).

The network ingests the density spectrum tensor and learns the complex permittivity of materials, specifically:

  • ϵ′\epsilon'ϵ′ (The real part: energy storage)
  • ϵ′′\epsilon''ϵ′′ (The imaginary part: energy loss/absorption)

Under the hypothesis that materials are layered and changes between them are discontinuous, the AI can conclude: "This entire layer consists of material X."


⚡ RF Engineering & Simulation

RF design is black magic highly complex physics involving PDEs and chaotic systems. To optimize my antennas to match the TI specifications, I used OpenEMS.

The Simulation Workflow: I wrote a parametric simulation in Python to calculate antenna characteristics. By extrapolating transfer functions from the TX to the RX MIMO array, I used convolution to simulate the entire path: Emission →\rightarrow→ Reflection →\rightarrow→ Reception.

# Conceptual OpenEMS Parametric Loop
for antenna_shape in range(min_width, max_width, step):
    sim = OpenEMS.run_simulation(antenna_shape)
    if sim.directivity == target_directivity:
        save_optimal_geometry(antenna_shape)
        break

Technical Note on FDTD: I utilized the Finite-Difference Time-Domain (FDTD) method, specifically the Yee method, to model Maxwell's equations.

Warning: OpenEMS does not support GPU acceleration, so I had to aggressively optimize the simulation volume to avoid infinite wait times.

material sensing radar — proof of concept demo

Final Result: The simulated signatures closely matched the real-world measured outputs, paving the way for the final step: testing against actual asbestos-contaminated samples.