Giter Site home page Giter Site logo

mesh24's Introduction

Mesh24 - Arduino Mesh Network Library for nRF24L01/+ Radio

Table of Contents

Design Goals

  • Ease of use
  • Well-suited for home and office automation
  • Secure and safe communication
  • Reliable
  • Support battery operation

Features

Mesh24 implements a network of nodes communicating through nRF24L01/+. Any two of the nodes can directly communicate with each other if they are in range. If not, another node between them acts as a message routing to forward the messages back and forth. The network requires no configuration as each node dynamically discovers and maintains which other nodes they can communicate with directly and indirectly through another node.

  • Up to 255 nodes
    Mesh24 allows up to 255 nodes to work together in a single network where any two can communicate with each other.

  • Zero configuration of network topology
    Each node automatically keeps track of which nodes are in range and what is the best path to send a message to another node.

  • Encrypted and secure communication
    Not just all messages are protected using AES256 encryption, Mesh24 can secure communication against replay attacks. See documentation for more details.

  • Can run for a year or more on a single coin battery
    Mesh24 can power up and down the radio to conserve battery life. Combined that with putting the processor in sleep mode, a node can run a year or more on a single coin battery, such as, CR2032, while waking up once every few minutes to send sensor readings. See examples and documentation for more details.

  • Built-in heartbeat message sent every 5 minutes
    By default, nodes in the network will send a heartbeat message in every five minutes. (This can be turned off, and the frequency is configurable.) Heartbeat can be used to detect when a node goes off-line. The message contains

    • Uptime of the node in seconds (will not roll over after about 50 days as millis() call does),
    • Voltage using atmega's internal voltage reading, and
    • Temperature using atmega's internal temperature reading.
  • 16-byte messages containing 9-byte payload
    Mesh24's messages are 16-byte long (to make it encryption friendly). 9 out of the 16 bytes carries the payload including the message type (a single byte) whose values of 128 and above are reserved for internal use. The rest of the 7 bytes contains the message header, crc, and bytes to randomize or secure communication.

Dependencies

  • RF24 - Arduino driver for nRF24L01/+
    Testing is done against this fork

  • AESLib - Arduino Library for AES Encryption
    Testing is done against this fork

  • Low-Power - Low Power Library for Arduino
    Optional - Needed for some of the examples only
    Testing is done against this fork

Installation

  • Download the files in this repository and the dependent libraries listed above (using either clone or the download button)

  • Copy the Mesh24, RF24, AESLib, and LowPower folders under arduino/libraries folder

  • Restart Arduino IDE and check out the examples

Examples

TBA

Documentation

TBA - Please see comments in examples for now

mesh24's People

Contributors

j7only avatar

Watchers

James Cloos avatar Sjon de Gast 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.