Loading files…
24 GHz radar that measures distance (FMCW) and speed (CW Doppler), streams a live spectrum to a touchscreen UI, bridges telemetry over WiFi, and fuses the radar result with camera-based angle-of-arrival detection on a desktop application. ZHAW PM4 team project, spring 2025.
MCU-side signal flow:
Full schematic of the analog / radar board: docs/schematic.pdf.
arm_cfft_f32 with ping-pong double-buffering and SDRAM-backed FFT history — zero dropped samples under FreeRTOS.| Path | What's there |
|---|---|
hardware/kicad/ | KiCad schematic + PCB (V1, V3), exported PDF, component libraries |
hardware/simulations/ | LTSpice MF bandpass filter simulation |
hardware/calculations/ | MATLAB: time-of-flight (tof.m), noise (sigma.m) |
hardware/python-tools/ | Jupyter notebook for tolerance analysis |
hardware/pinout/ | STM32 pin assignments |
hardware/blockdiagram/ | Source files for the system block diagram |
matlab/Bodeplot/ | Frequency-response analysis of the filter chain |
matlab/CW_Doppler/ | Reference signal-chain simulation (synthetic target → FFT → peak) |
firmware/stm32/ | STM32F429 firmware — Core, Drivers, Middlewares, TouchGFX, user modules (measurement.c, vco.c, timing.c, esp.c, ...), STM32CubeIDE project |
firmware/esp32/ | ESP-IDF project (WiFi STA + SPI slave bridge) |
backend/ | FastAPI backend (early stub) |
desktop-app/ | Python fusion app: YOLOv8 detection + Android GPS UDP listener + cv2 live overlay |
tests/hw-concept-tolerance/ | HW tolerance scripts |
docs/ | Concept report (PDF), block diagram, amplifier-stage test notes |
Requires STM32CubeIDE (any recent version). Either:
STM32CubeIDE/ folder as an existing Eclipse project, orfirmware/stm32/Radar_v2.ioc with STM32CubeMX and regenerate the project.Build and flash to an STM32F429 Discovery board. Serial log on UART1.
Requires ESP-IDF (v5.x recommended). From firmware/esp32/:
idf.py set-target esp32
idf.py build
idf.py -p /dev/ttyUSB0 flash monitor
Before flashing, edit main/wifi.c and replace the placeholder WIFI_SSID / WIFI_PASS with your network credentials.
cd backend
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
uvicorn main:app --reload
Note: the backend is an early scaffold.
cd desktop-app
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python collect_main.py
The first run auto-downloads the YOLOv8n weights (~6 MB) via ultralytics. For ground-truth speed reference, run an Android app that streams NMEA-0183 $GPVTG / $GNVTG sentences over UDP to port 5005 on your laptop. The app tolerates the GPS feed being absent.
ZHAW PM4 team project, spring semester 2025. Authors: Dennis Rathgeb, Bryan Uhlmann, Benjamin Tschopp.
The original collaboration took place on ZHAW's internal GitHub instance; this public repository is a slimmed mirror.
MIT — see LICENSE.
No comments yet. Be the first to ask about this board.