Coder Social home page Coder Social logo

sachinkahawala / pjon Goto Github PK

View Code? Open in Web Editor NEW

This project forked from gioblu/pjon

0.0 1.0 0.0 3.04 MB

PJON™ is an open-source network protocol stack compatible with Arduino, ESP8266, Teensy, Raspberry Pi, Linux and Windows. It is a valid tool to quickly build a network of devices.

License: Other

C++ 80.92% C 14.26% Arduino 4.82%

pjon's Introduction

PJON

PJON v9.0

PJON™ (Padded Jittering Operative Network) is an Arduino compatible, multi-master, multi-media communications bus system. It proposes a Standard, it is designed as a framework and implements a totally software emulated network protocol stack that can be easily cross-compiled on many architectures like ATtiny, ATmega, ESP8266, Teensy, Raspberry Pi, Linux and Windows x86 machines. It is a valid tool to quickly and comprehensibly build a network of devices. Visit wiki and documentation to know more about the PJON Standard.

Get PJON bus id Video introduction Join the chat at https://gitter.im/gioblu/PJON Donate

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

  • New technology: The PJON network protocol layer is a new technology crafted in years of experimentation and testing, that, while supporting TCP, UDP, Serial and RS485, it implements the PJDL data link able to communicate data through a single common conductive element shared by up to 255 devices with up to 50 meters range, PJDLR data link supporting many ASK/FSK/OOK radio modules available on the market, and also, PJDLS data link able to communicate wirelessly through a single LED or a couple of emitters and receivers, easing integration and enabling a lot of applications.
  • Increased security: Ethernet and WiFi are exposing many smart things to ransomware, illegal cyber-warfare activities and putting privacy at risk. 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 covering many use cases.
  • Increased reliability: Many protocols applied worldwide, also in critical use cases, like 1-Wire, i2c and CAN exposes dangerous vulnerabilities, their error detection algorithms are weak and they are not resilient in case of interference. The PJON network protocol specification is based on years of analysis and study not to make the same repeated mistakes present in most alternatives and provide with a simpler and more efficient solution.
  • High flexibility: The PJON network protocol stack is modular enabling the use of the same network protocol implementation on different data links or media and on different architectures, simply changing its configuration. PJON is totally "software emulated" or executed by software without the use of dedicated hardware; this engineering choice and its simplicity makes it easy to be ported on any computer or microcontroller. Its implementation is designed to enable developers to port new architectures in minutes defining a short set of interfaces to system calls.
  • Low cost: Without any additional hardware needed to operate, minimal network wiring requirements and direct pin-to-pin or LED-to-LED low current 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 the PJON foundation and the huge support 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
  • Master-slave or multi-master dynamic addressing
  • 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)
  • Collision avoidance to enable multi-master capability
  • 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

PJON (Padded Jittering Operative Network) Protocol specification

Data links specification

Compliant tools

  • ModuleInterface - easy config and value sync between IoT modules by Fred Larsen
  • PJON-piper - command line wrapper by Zbigniew Zasieczny
  • PJON-python - python interface by Zbigniew Zasieczny
  • PJON-gRPC - gRPC server-client by Oleg Galitskiy

PJON™ is a self-funded, no-profit open-source project created in 2010 and maintained by Giovanni Blu Mitolo with the support of the internet community. If you want to see the PJON project growing with a faster pace, consider a donation at the following link: https://www.paypal.me/PJON

PJON™ and its brand are unregistered trademarks, property of Giovanni Blu Mitolo [email protected]

pjon's People

Contributors

gioblu avatar fredilarsen avatar pantonvich avatar esbensoeltoft avatar michmich avatar girgitt avatar ivankravets avatar jzobac avatar valeros avatar paolop74 avatar mauromombelli avatar aperepel avatar 240974a avatar equinox0815 avatar eiannone avatar ekarlso avatar domonetic avatar pacproduct avatar bryant1410 avatar willie68 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.