Giter Club home page Giter Club logo

pjon's Introduction

PJON

PJON 12.0

PJON® (Padded Jittering Operative Network) is an Arduino compatible, multi-master, multi-media network protocol. It proposes a new Open Standard, it is designed as a framework and implements a totally software-defined network protocol stack that can be easily cross-compiled on many MCUs and architectures like ATtiny, ATmega, SAMD, ESP8266, ESP32, STM32, Teensy, Raspberry Pi, Linux, Windows x86, Apple and Android. PJON is a valid tool to quickly and comprehensibly build a network of devices for free without the need of a cloud service or a centralized platform you don’t fully control. If you want to know more and support the PJON project see the PJON protocol handbook and the PJON 12.0 big box.

Get PJON bus id Join the chat at https://gitter.im/gioblu/PJON Buy PJON products at www.pjon-technologies.com

PJON is used in thousands of devices and its community has spread worldwide because of the following 6 key factors:

  • New technology: PJON is an experimental network protocol stack crafted in 8 years of research and experimentation. It was originally developed as an open-source alternative to i2c and 1-Wire but during development its scope and features have been extended to cover use cases where IP is generally applied. PJON has been engineered to have a variable footprint (4.2-8.2 kB program memory) and overhead (5-22 bytes per packet) depending on its configuration.
  • Multi-media support: PJON packets can be transmitted on a wide range of media and protocols like TCP, UDP, Serial, RS485 and LoRa. The PJON network protocol stack specifies and implements also the PJDL wired data link able to communicate data through a single common conductive element shared by up to 255 devices, PJDLR wireless data link compatible with many ASK/FSK/OOK radio modules, and also PJDLS wireless data link able to communicate through light pulses using off the shelf LEDs and laser diodes easing integration and enabling a lot of applications.
  • Increased security: Devices using Ethernet/WiFi are often vulnerable to ransomware, cyber warfare and private data leak. PJON has been engineered to enhance security not necessarily implementing the standard network protocol stack together with its vulnerabilities where it is not absolutely necessary offering a set of alternatives for many use cases.
  • Increased reliability: Many protocols massively applied worldwide expose dangerous vulnerabilities, have weak error detection algorithms and are not resilient to interference. PJON is based on years of analysis and study not to make the same mistakes present in most alternatives and provide with a set of simpler and more efficient solutions.
  • High flexibility: PJON is totally software-defined and its implementation is designed to be easily extensible. it builds out-of-the-box in all supported devices and operates transparently on top of any supported protocol or medium.
  • Low cost: Without any additional hardware needed to operate, minimal network wiring requirements and direct pin-to-pin or LED-to-LED communication, PJON is extremely energy efficient, cheap to be implemented and maintained. This implementation is kept updated and meticulously tested thanks to the strong commitment of its growing community of end users, testers and developers.

Features

  • Cross-compilation support with the interfaces system calls abstraction
  • Multi-media support with the strategies data link layer abstraction
  • Hot-swap support, no need of system reset or shut down when replacing or adding devices
  • Configurable synchronous and/or asynchronous acknowledgement
  • Configurable 2 level addressing (device and bus id) for scalable applications
  • Configurable 1 or 2 bytes packet length (max 255 or 65535 bytes)
  • Configurable CRC8 or CRC32 table-less cyclic redundancy check
  • Packet manager to handle, track and if necessary retransmit a packet sending in background
  • Error handling

Specifications

Compliant tools

  • ModuleInterface - easy config and value sync between IoT modules by Fred Larsen
  • PJON-cython - cython PJON wrapper by xlfe github user
  • PJON-piper - command line wrapper by Zbigniew Zasieczny
  • PJON-python - python interface by Zbigniew Zasieczny
  • PJON-gRPC - gRPC server-client by Oleh Halytskyi

Academic studies

Researchers are active in many universities worldwide using PJON in different environments. The following list contains all the known published academic studies about PJON:

Contribute

Feel free to send a pull request sharing something you have made that could help, if you want to support this project you can also try to solve an issue. Thanks to support, expertise, kindness and talent of the following contributors, the protocol's documentation, specification and implementation have been strongly tested, enhanced and verified:

Fred Larsen, Zbigniew Zasieczny, Matheus Garbelini, sticilface, Felix Barbalet, Oleh Halitskiy, fabpolli, Adrian Sławiński, Osman Selçuk Aktepe, Jorgen-VikingGod, drtrigon, Endre Karlson, Wilfried Klaas, budaics, ibantxo, gonnavis, maxidroms83, Evgeny Dontsov, zcattacz, Valerii Koval, Ivan Kravets, Esben Soeltoft, Alex Grishin, Andrew Grande, Michael Teeww, Paolo Paolucci, per1234, Santiago Castro, pacproduct, elusive-code, Emanuele Iannone, Christian Pointner, Fabian Gärtner, Mauro Mombelli, Remo Kallio, hyndruide, sigmaeo, filogranaf, Maximiliano Duarte, Viktor Szépe, Shachar Limor, Pantovich, Mauro Zancarlin, Franketto, jzobac, DanRoad, fcastrovilli, Andrei Volkau, maniekq, DetAtHome, Michael Branson, chestwood96 and Mattze96.

License

All the software included in this project is experimental and it is distributed "AS IS" without any warranty, use it at your own risk. Licensed under the Apache License, Version 2.0. PJON® and its brand are registered trademarks, property of Giovanni Blu Mitolo [email protected]

Safety warning

In all cases, when installing or maintaining a PJON network, extreme care must be taken to avoid any danger. When a SoftwareBitBang bus is installed each pin must be protected with a current limiting resistor. When working with an AnalogSampling LED or laser based setup safety glasses must be worn and transceivers must be operated cautiously to avoid potential eye injuries. Before any practical test or a hardware purchase for a wireless OverSampling, ThroughSerial or ThroughLoRa radio setup, compliance with government requirements and regulations must be ensured. When connecting a local bus to the internet using EthernetTCP or GlobalUDP all connected devices must be considered potentially compromised, potentially manipulated or remotely actuated against your will. It should be considered a good practice not to connect to the internet systems that may create a damage (fire, flood, data-leak) if hacked.

pjon's People

Contributors

gioblu avatar fredilarsen avatar xlfe avatar detathome avatar pantonvich avatar sticilface avatar esbensoeltoft avatar michmich avatar girgitt avatar drtrigon avatar mjasny avatar fabpolli avatar chestwood96 avatar ivankravets avatar jzobac avatar matheus-garbelini avatar ibantxo avatar aperepel avatar mauromombelli avatar mxbranson avatar paolop74 avatar valeros avatar 240974a avatar equinox0815 avatar eiannone avatar ekarlso avatar jorgen-vikinggod avatar domonetic avatar pacproduct avatar bryant1410 avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.