// the find
gioblu/PJON
PJON (Padded Jittering Operative Network) is an experimental, arduino-compatible, multi-master, multi-media network protocol.
PJON is a software-defined network protocol stack for microcontrollers that abstracts away the physical layer — you pick a strategy (single-wire, RS485, LoRa, UDP, MQTT, etc.) and get addressing, CRC, optional ACK, and routing on top of it. It targets Arduino-class hardware where you have 4–8 kB of flash and can't run IP. Ten years of active development with real academic citations.
The strategy abstraction is genuinely well-designed — swapping from SoftwareBitBang to LoRa or UDP requires changing one template parameter, not rewriting your application code. PJDL (the single-wire protocol) running 255 devices over 2000m on one wire with no additional hardware is a real capability gap compared to I2C or 1-Wire. The modular packet format that only includes the fields you've configured is a smart call for constrained environments — 5-byte minimum overhead instead of a fixed fat header. Cross-compilation support across ATtiny, ESP32, STM32, Raspberry Pi, and Linux via the interfaces abstraction is solid and actually tested.
The label 'experimental' appears in the license, the README, and the safety warning — after 10 years and academic adoption that's either honest humility or a red flag depending on your risk tolerance. No formal security model: the README explicitly warns that connecting a PJON bus to the internet means treating all devices as potentially compromised, with no built-in encryption or authentication in the base protocol. Throughput numbers are largely absent from the docs — SoftwareBitBang is inherently slow (bit-banged timing), and there's no clear comparison of what you actually get versus a native I2C or SPI bus. The community tooling (Python, gRPC, cython wrappers) is all third-party with varying maintenance status, which matters if you're building a production gateway.