Coder Social home page Coder Social logo

loratestbed's Introduction

LoRa Testbed

An infrastructure-less, arduino-compatible LoRa testbed for PHY and MAC research. The user will simply provide a config file (that contains the experiment configuration details) to the testbed. The controller will communicate with the network to then return the results after the experiment has ended. See below for a high level overview.

Diagram 1: High level overview of the LoRa Testbed.

Run a simple experiment with an example configuration

poetry run python3 ./loratestbed/run_testbed.py -g /dev/ttyACM0 -c /dev/ttyACM1 --config ./configs/example.yaml

You will need to have device ID 33 and 26 active to run this successfully.

Configuration format

The configuration YAML file should necessarily have the following format/fields:

device_list: [33, 26] # List of device IDs
experiment_time_sec: 10 # Experiment time in seconds
offered_load_percent: 80 # Aggregate network offered load
packet_size_bytes: 16
mac_protocol: "csma" # MAC protocol used by the devices
packet_arrival_model: "poisson" # Packet generation model used by the devices.
# PHY layer parameters
transmit_SF: "SF8" # Spreading factor
receive_SF: "SF8"
transmit_BW: "BW125" # Bandwidth: "BW125", "BW250", "BW500
receive_BW: "BW125"
transmit_CR: "CR_4_8" # Code rate
receive_CR: "CR_4_8"

Setup and installation

Setting up the testbed

Click here to go to the documentation on flashing various components in the testbed and bringing them up.

Host software

Install poetry

pip install -U poetry

Navigate to the root directory of this git repository. Run tests:

poetry run pytest

Install:

poetry install

loratestbed's People

Contributors

rsubbaraman avatar rohithreddyvennam avatar abz135 avatar ishjain avatar

Stargazers

Zhang Maiyun avatar  avatar Aditya Arun avatar Shunsuke Saruwatari avatar  avatar Agrim Gupta avatar  avatar Sreevatsank avatar  avatar

Watchers

 avatar Agrim Gupta avatar  avatar

loratestbed's Issues

README and Documentation

A lot of work needs to be put into readme and documentation

  • Link/include video tutorial
  • Describe result dataframe and how to use it to understand/plot metrics

CRC Bit might not be correctly accessed

LMIC.sysname_crc_err might not be returning the true value of the CRC bit. It seems to declare no error for packets that are erroneous.

193100000000000000000000F06D0619, 1, 0, 0 # this
1A2F0000000000000000000000000000, -3, 25, 0
1A300000000000000000000000000000, 0, 24, 0
1D320000000000000000000000000000, -8, 27, 0
1A310000000000000000000000000000, -3, 28, 0
1A320000000000000000000000000000, 1, 24, 0
1C320000000000000000000000000000, 0, 3, 0
1A330000000000000000000000000000, -2, 14, 0
1C340000000000000000000000000000, -8, 28, 0
1A340000000000000000000000000000, -2, 25, 0
19340000000000000000000000000000, -17, 28, 0
1C350000000000000000000000000000, -8, 26, 0
1C360000000000000000000000000000, -8, 23, 0
1A350000000000000000000000000000, 3, 10, 0
1C370000000000000000000000000000, -8, 23, 0
22310000000000000000000000000000, -3, 18, 0
1C380000000000000000000000000000, -8, 25, 0
1C390000000000000000000000000000, -9, 24, 0
1936000000000000008000007061E29E, -2, 3, 0 # This

Clean up top-level configuration parameters

Top level configuration should be able to:

  • Change CSMA parameters
  • Set offered load instead of mean inter-packet arrival time
  • Tx and Rx PHY parameters should be set from the same place

Metrics computation uses hard-coded parameters

packet_duration = 0.126  # 126 ms
    packet_bytes = 16  # 16 bytes
    no_bits_in_byte = 8
    logger.warning(
        f"Using hard-coded values for packet duration: {packet_duration}, packet bytes {packet_bytes}"
    )

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.