Get the Latest Updates

Receive occasional drops of new designs, components, and random resources. No spam, just the good stuff.

Back to Home

Circular Fiducial Marker

Binary data encoded into concentric circles. Camera-readable, QR-free.

.
.
.

TL;DR — An IP address encoded into concentric circles instead of a QR code.

As an user running PiCube device with a local IP, I want to point my phone camera at the screen and instantly read the address, so that I can connect without typing anything — no QR code, no printed label, no config file.


Why not just use a QR code?

QR codes work. But they're visually ugh. I wanted to explore whether an IP address could be encoded into a shape that's readable by both eye and camera. And writing your own decoder is part of the point.

How it encodes

Four concentric rings, each representing one octet/number (0–255). Each ring is divided into 8 segments — one bit each. Green = 1, dark = 0. A dot at 12 o'clock acts as the rotation anchor.

Example: 192.168.0.200

Ring 1 — octet 192 = 11000000  →  ██ ██ ░░ ░░ ░░ ░░ ░░ ░░
Ring 2 — octet 168 = 10101000  →  ██ ░░ ██ ░░ ██ ░░ ░░ ░░
Ring 3 — octet   0 = 00000000  →  ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░
Ring 4 — octet 120 = 11001000  →  ░░ ██ ██ ██ ██ ░░ ░░ ░░
         └─ MSB at 12 o'clock, clockwise

Why binary segments

Binary contrast (on/off) is far more robust against camera perspective and rotation. And octet 0, an empty ring, still works without any ambiguity.

What's next

The generator is done. The decoder (iOS / Python + OpenCV) is the next step — detect the marker, find the anchor, read 32 bits, assemble the address.

Back to Home