PJON (Padded Jittering Operative Network) is an experimental, arduino-compatible, multi-master, multi-media network protocol.
PJON v9.0 is orders of magnitude more reliable and secure than older versions because of some key changes made in its network protocol stack. Its compatibility has been vastly expanded now covering TCP or UDP standard networking on Windows and Linux real time operative systems.
New specifications:
Changelog:
0x8c
polynomial used in 1-Wire and PJON older versions has been changed with 0x97
, this polynomial has the largest possible length (119 bit) at which HD=4 can be achieved with 8-bit CRC, offering higher reliability on longer stringssend_from_id
added id parameter to support async ack packet routingBugfix:
receive
length check bugfix (https://github.com/gioblu/PJON/commit/e1b97e2a0c8456b54f042e9953a1ea4fcf7ebf1a)PJONMaster
RID condition bugfix (https://github.com/gioblu/PJON/commit/0f1d26504fbdd0fb6fc5e01fe17a33664206124d)receive
acknowledge condition bugfix (https://github.com/gioblu/PJON/commit/92dcdcdae7fe976e0d8302b014160299a2e121e2)This version is not backward compatible, all devices must be updated!
It is recommended to use VPN and/or other security measures when allowing devices to communicate across the internet.
Changelog:
architecture/mode/data-link/example
or ARDUINO/local/SoftwareBitBang/Blink
devices
directorydispatched
method to avoid async ack response duplications in buffer (https://github.com/gioblu/PJON/commit/58c46724bb6e1453dc7d6ca772695efd347256e4)ThroughSerial
thanks to @Girgitt (https://github.com/gioblu/PJON/commit/bfe935c68413c1a1ef4d5f986f03895fb45b5c1c)flush
method to wait for transmission and so enable the nominal use of RS485 transceivers; wiringPi flush
method seems broken, not waiting for transmission end, thanks for testing to @ekarlso (https://github.com/gioblu/PJON/commit/30b94d8820e3a3bab0a5b639f4dd374d9b3312a9)Bugfix:
begin
method sparing some bytes of memorydelay
call in begin
of AnalogSampling
, OverSampling
and SoftwareBitBang
, using interfaceChangelog:
ThroughSerial
strategy) thanks to the WINX86 interface, proposed and developed by @GirgittBugfix:
PJON protocol specification v1.1 PJDL data-link specification v1.1 PJDLR data-link specification v1.1
Changelog:
ThroughSerial
strategy see wiki example
receive_byte
has been changed to receive_string
to support both a single byte or a byte stream reception, eliminating the need of internal buffers in strategies and reducing program memory. Proposed and implemented by @fredilarsenPJON_CONNECTION_LOST
error data
contains the id of the packet see error handling
send_from_id
to enable the most basic form of routing or tunneling. Proposed and implemented by @fredilarsenBugfix:
Changelog:
SoftwareBitBang
Arduino Mega and Leonardo timing optimization in mode SWBB_FAST
(https://github.com/gioblu/PJON/commit/0a1c77e8ab28cdab3b32303bbff295d26cfc9d86)Bugfix:
ThroughSerial
configuration constants predefinitions (https://github.com/gioblu/PJON/commit/dacdd637efc9171c1abbfc0a3d0c600a7d1ea656)Changelog:
OverSampling
now supports long range half-duplex communication (https://github.com/gioblu/PJON/issues/91)SoftwareBitBang
(https://github.com/gioblu/PJON/commit/c3a77c85fa3b06405ef4c4f46dd2a4513dc25374)OverSampling
(https://github.com/gioblu/PJON/commit/9507cfc1f05bb5b45c2704445cad7d416baa7542)PJON_
prefix added to constants and types to avoid naming collision with third-party codebasesdigitalWriteFast
renamed in PJON_IO
to avoid collision with older or different versionsBugfix:
send_repeatedly
async_ack no error bugfix (https://github.com/gioblu/PJON/commit/f573f996d5a158fbdee241d3f0d9de6a4f3c5090)This release brings stable the new asynchronous acknowledgment feature, also used in combination with the synchronous acknowledgment (recursive acknowledgment pattern). A lot of work has been done testing, bug fixing and extending documentation. The next phase of development is the abstraction of what is still related to timing in the protocol layer, move it to the strategy or data link layer.
Changelog:
SoftwareBitBang
, thanks to optimizations made in older versions, is able now to run OVERDRIVE
mode on ATmega328 at 4.87kB/s (mandatory update for all devices transmitting in this mode with older versions because timing is changed)ThroughSerial
optimized default configuration and can_start
method, thanks for the support and extended tests over RS485 to franketto (italian arduino forum user).OverSampling
, SoftwareBitBang
and ThroughSerial
documentation and codebase comments extendedBugfix:
SIMPLEX
mode examples (https://github.com/gioblu/PJON/issues/104) thanks to @pacproductPJONMaster
reset if not receiver or error defined (https://github.com/gioblu/PJON/issues/106) thanks to @elusive-codePJON protocol specification released v1.0 PJON acknowledge specification released v0.1 PJON is a trademark.
PJON has been developed at a fast pace, with 15 releases in a little more than a year, but version 6 contains many of the features PJON will have when complete, what will be added in the next releases is the asynchronous acknowledgment and for sure some bug fixes. With this release it is described more clearly how the PJON network protocol stack is organized.
Changelog:
documentation
directorySoftwareBitBang
updated to handle latency and CRC computation timeSoftwareBitBang
specification update
Bugfix:
EthernetTCP
and LocalUDP
inclusion and typecasting for portabilityThroughSerial
complete Stream
abstraction and correct inclusionOverSampling
can_start
bugfixIf using OverSampling
or SoftwareBitBang
it is suggested to use pull down resistors on data pins to obtain the best performance.
PJON acknowledge specification fixed v0.1 PJON recursive acknowledgment pattern implemented
Changelog:
Bugfix:
PJON dynamic addressing specification released v0.1
Changelog:
PJONMaster
and PJONSlave
classes to preserve PJON
class low memory footprint.Bugfix:
(EthernetTCP
and LocalUDP
have to be included before PJON.h
or pull master for automatic inclusion)