LoRa Terminology Demystified: A Glossary
(Above: My 2 RFM95s. One works, but the other doesn't yet....)
I've been doing some more experimenting with LoRa recently, as I've got 1 of my 2 RFM95 working (yay)! While the other is still giving me trouble (meaning that I can't have 1 transmit and the other receive yet :-/), I've still been able to experiment with other people's implementations.
To that end, I've been learning about a bunch of different words and concepts - and thought that I'd document them all here.
LoRa
The radio protocol itself is called LoRa, which stands for Long Range. It provides a chirp-based system (more on that later under Bandwidth) to allow 2 devices to communicate over great distances.
LoRaWAN
LoRaWAN builds on LoRa to provide a complete end-to-end protocol stack to allow Internet of Things (IoT) devices to communicate with an application server and each other. It provides:
- Standard device classes (A, B, and C) with defined behaviours
- Class A devices can only receive for a short time after transmitting
- Class B devices receive on a regular, timed, basis - regardless of when they transmit
- Class C devices send and receive whenever they like
- The concept of a Gateway for picking up packets and forwarding them across the rest of the network (The Things Network is the largest open implementation to date - you should definitely check it out if you're thinking of using LoRa in a project)
- Secure multiple-layered encryption of messages via AES
...amongst many other things.
The Things Network
The largest open implementation of LoRaWAN that I know of. If you hook into The Things Network's LoRaWAN network, then your messages will get delivered to and from your application server and LoRaWAN-enabled IoT device, wherever you are in the world (so long as you've got a connection to a gateway). It's often abbreviated to TTN.
Check out their website.
(Above: A coverage map for The Things Network. The original can be found here)
Data Rate
The data rate is the speed at which a message is transmitted. This is measured in bits-per-second, as LoRa itself is an 'unreliable' protocol (it doesn't guarantee that anyone will pick anything up at the other end). There are a number of preset data rates:
Code | Speed (bits/second) |
---|---|
DR0 | 250 |
DR1 | 440 |
DR2 | 980 |
DR3 | 1760 |
DR4 | 3125 |
DR5 | 5470 |
DR6 | 11000 |
DR7 | 50000 |
_(Source: Exploratory Engineering: Data Rate and Spreading Factor)_
These values are a little different in different places - the above are for Europe on 868MHz.
Maximum Payload Size
Going hand-in-hand with the Data Rate, the Maximum Payload Size is the maximum number of bytes that can be transmitted in a single packet. If more than the maximum number of bytes needs to be transmitted, then it will be split across multiple packets - much like TCP's Maximum Transmission Unit (MTU), when it comes to that.
With LoRa, the maximum payload size varies with the Data Rate - from 230 bytes at DR7 to just 59 at DF2 and below.
Spreading Factor
Often abbreviated to just simply SF
, the spreading factor is also related to the Data Rate. In LoRa, the Spreading Factor refers to the duration of a single chirp. There are 6 defined Spreading Factors: ranging from SF7 (the fastest transmission speed) to SF12 (the slowest transmission speed).
Which one you use is up to you - and may be automatically determined by the driver library you use (it's always best to check). At first glance, it may seem optimal to choose SF7, but it's worth noting that the slower speeds achieved by the higher spreading factors can net you a longer range.
Data Rate | Configuration | bits / second | Max payload size (bytes) |
---|---|---|---|
DR0 | SF12/125kHz | 250 | 59 |
DR1 | SF11/125kHz | 440 | 59 |
DR2 | SF10/125kHz | 980 | 59 |
DR3 | SF9/125kHz | 1 760 | 123 |
DR4 | SF8/125kHz | 3 125 | 230 |
DR5 | SF7/125kHz | 5 470 | 230 |
DR6 | SF7/250kHz | 11 000 | 230 |
DR7 | FSK: 50kpbs | 50 000 | 230 |
_(Again, from Exploratory Engineering: Data Rate and Spreading Factor)_
Duty Cycle
A Duty Cycle is the amount of time something is active as a percentage of a total time. In the case of LoRa(/WAN?), there is an imposed 1% Duty Cycle, which means that you aren't allowed to be transmitting for more than 1% of the time.
Bandwidth
Often understood, the Bandwidth is the range of frequencies across which LoRa transmits. The LoRa protocol itself uses a system of 'chirps', which are spread form one end of the Bandwidth to the other going either up (an up-chirp), or down (a down-chirp). LoRahas 2 bandwidths it uses: 125kHz, 250kHz, and 500kHz.
(Some example LoRa Chirps. Source: This Article on Link Labs)
Frequency
Frequency is something that most of us are familiar with. Different wireless protocols utilise different frequencies - allowing them to go about their business in peace without interfering with each other. For example, 2.4GHz and 5GHz are used by WiFi, and 800MHz is one of the frequencies used by 4G.
In the case of LoRa, different frequencies are in use in different parts of the world. ~868MHz is used in Europe (443MHz can also be used, but I haven't heard of many people doing so), 915MHz is used in the US, and ~780MHz is used in China.
Location | Frequency |
---|---|
Europe | 863 - 870MHz |
US | 902 - 928MHz |
China | 779 - 787MHz |
(Source: RF Wireless World)
Found this helpful? Still confused? Found a mistake? Comment below!