lorawan_toa/README.md

2.0 KiB

LoRa Time on Air calculator

A calculator of the time on air of LoRa PHY frame in Python. This script refers to the section 4.1.1.6. LoRa Packet Structure, [SX1276/77/78/79 Datasheet][http://www.semtech.com/images/datasheet/sx1276_77_78_79.pdf].

The default value is aligned to LoRaWAN AS923.

Usage

lorawan_toa.py [-h] [--band-width N_BW] [--disable-dro] [--disable-eh]
                      [--cr N_CR] [--preamble N_PREAMBLE] [-v] [-d]
                      SF SIZE

positional arguments:
  SF                    Spreading Factor. It should be from 7 to 12.
  SIZE                  PHY payload size in byte. It's equal to the MAC
                        payload + 5.

optional arguments:
  -h, --help            show this help message and exit
  --band-width N_BW     bandwidth in kHz. default is 125 kHz.
  --disable-dro         disable the low data rate optimization. default is
                        enable as LoRaWAN does.
  --disable-eh          disable the explicit header. default is enable as
                        LoRaWAN does.
  --cr N_CR             specify the CR value. default is 1 as LoRaWAN does.
  --preamble N_PREAMBLE
                        specify the preamble. default is 8 for AS923.
  -v                    enable verbose mode.
  -d                    increase debug mode.

Examples

% python lorawan_toa.py -v 12 64
PHY payload size  : 64 Bytes
MAC payload size  : 59 Bytes
Spreading Factor  : 12
Band width        : 125 kHz
Low data rate opt.: enable
Explicit header   : enable
CR (coding rate)  : 1 (4/5)
Preamble size     : 8 symbols
Time on Air       : 2793.472 msec

% python lorawan_toa.py --band-width=500 7 128    
71.744

graph_as923.py

It makes a set of figures about Time on Air and PHYPayload size,
especially LoRaWAN AS923 using matlib like below.

LoRa ToA