Skip to content

techniker/smartmicro_ummr_0a_radar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

UMRR-0A Type 29 Radar Sensor — Parser & GUI

Python tools for parsing and visualizing live data from the smartmicro UMRR-0A Type 29 (24 GHz FMCW) Stop + Advance radar sensor over RS485.

Setup

python3 -m venv venv
source venv/bin/activate
pip install pyserial PyQt6

Usage

GUI (radar display + all decoded parameters)

python3 umrr0a_gui.py --port /dev/tty.usbserial-6 --baud 115200

CLI parser

# Live decoded output
python3 umrr0a_parser.py --mode parse --port /dev/tty.usbserial-6

# Raw hex dump
python3 umrr0a_parser.py --mode raw --duration 10

# Baud rate scan
python3 umrr0a_parser.py --mode scan

Protocol

The sensor uses Legacy RS485 framing at 115200 baud (not 230400 as documented):

Start: CA CB CC CD | CAN messages | XOR checksum | End: EA EB EC ED

Each frame contains multiple CAN messages packed as: [2-byte CAN ID (BE)] [1-byte length] [N-byte data]

Decoded CAN Messages

CAN ID Name Description
0x02FF High-Res Timer 125 kHz hardware clock (8 µs resolution)
0x0500 Sensor Control Uptime (ms), status, network ID, interface mode, diagnostics
0x0501 Object Control Cycle count, duration (50 ms), object count, data format
0x0502+ Object Data Per-object: x/y position, speed, heading, length, vehicle class
0x0782 Trigger Params Measurement zone parameters
0x0783 Trigger Data Trigger sub-messages (3 variants: 6-byte, 2-byte, 5-byte)
0x0785 Uptime Split Uptime as seconds + milliseconds (cross-validates with 0x500)

UMRR-0A vs UMRR-11 Differences

The UMRR-0A byte layout differs from the UMRR-11 data communication manual:

  • Byte order: big-endian (UMRR-11 documents little-endian for some fields)
  • 0x0500: Uptime u32 at bytes 0-3, status/diag at bytes 4-7 (reversed from UMRR-11)
  • 0x0501: Cycle count u32 at bytes 0-3, metadata at bytes 4-7 (reversed from UMRR-11)
  • Baud rate: 115200 (documented as 230400)
  • CAN ID 0x02FF: UMRR-0A specific, not in UMRR-11 docs

Object Data (Format 7)

Bit-packed Intel (little-endian) encoding in 8 bytes:

Field Bits Resolution Offset Unit
mode_signal 1
x_point 13 0.128 -4096 m
y_point 13 0.128 -4096 m
speed 11 0.1 -1024 m/s
heading 11 0.177 -1024 deg
obj_length 7 0.2 0 m
obj_id 8

Vehicle classification by length: pedestrian (≤1.0m), bicycle (≤1.6m), motorcycle (≤2.6m), passenger car (≤5.4m), delivery/pickup (≤8.8m), short truck (≤13.8m), long truck (>13.8m).

GUI Features

  • PPI radar view with range rings, target blips (color-coded by speed), heading arrows, trails
  • All decoded CAN message parameters displayed in real-time
  • Sensor status with diagnostic flags (blind, error, interference, rain)
  • Object table with full detail (ID, position, speed in m/s and km/h, heading, length, class)
  • Three cross-validated uptime sources (0x500 ms counter, 0x785 split, 0x2FF 125 kHz timer)
  • Protocol statistics (frame rate, byte count, message type counts)
  • Dark theme, scrollable panel layout

Files

  • umrr0a_parser.py — CLI parser and protocol library (no GUI dependencies)
  • umrr0a_gui.py — PyQt6 radar display application (imports from parser)

Platform Support

  • macOS
  • Linux (PyQt6 + pyserial)

About

Some tooling for interfacing and displaying data from a SmartMicro UMMR 0A Type 29 24GHz Stop+Advance Traffic Radar

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages