Chirp Spread Spectrum: Why LoRa Goes So Far
- LoRa CSS modulation spreads signals across bandwidth to resist interference.
- Higher spreading factors increase range at the cost of data rate.
- LoRaWAN provides network protocol, security, and cloud architecture over LoRa.
Traditional radio transmits on a fixed frequency — a narrow spike in the spectrum easily drowned out by interference. LoRa's Chirp Spread Spectrum (CSS) instead sweeps the carrier frequency across the entire bandwidth (typically 125 kHz) in a linear chirp waveform. Each bit is encoded as a different phase of this chirp.
Because the signal energy is spread across 125 kHz rather than concentrated in a narrow band, the receiver can recover signals even when they are 20dB below the noise floor — an extraordinary property that enables the remarkable 10–15km range on tiny milliwatt transmit powers.
Spreading Factors (SF7–SF12): Range vs Speed Trade-off
| SF | Sensitivity | Data Rate | Airtime (20 bytes) | Typical Range |
|---|---|---|---|---|
| SF7 | −123 dBm | 5.47 kbps | 56ms | 1–3km |
| SF9 | −129 dBm | 1.76 kbps | 185ms | 3–7km |
| SF11 | −134 dBm | 0.54 kbps | 741ms | 7–12km |
| SF12 | −137 dBm | 0.29 kbps | 1.4s | 10–15km |
Arduino LoRa Transmitter with SX1278 (Ra-02)
// LoRa Point-to-Point sender using Ra-02 (SX1276/78) module
// Library: Arduino-LoRa by sandeepmistry
#include <SPI.h>
#include <LoRa.h>
// Ra-02 SPI connections (SX1278):
// SCK → D13, MISO → D12, MOSI → D11
// NSS/CS → D10, RESET → D9, DIO0 → D2
void setup() {
Serial.begin(9600);
LoRa.setPins(10, 9, 2); // CS, RESET, DIO0
if (!LoRa.begin(433E6)) { // 433 MHz band
Serial.println("LoRa init failed!");
while (1);
}
LoRa.setSpreadingFactor(9); // SF9 = balance of range & speed
LoRa.setSignalBandwidth(125E3); // 125 kHz bandwidth
LoRa.setCodingRate4(5); // 4/5 coding rate
LoRa.setTxPower(17); // 17 dBm (max for Ra-02)
Serial.println("LoRa transmitter ready");
}
void loop() {
float temperature = 25.3;
int humidity = 68;
LoRa.beginPacket();
LoRa.print("T:");
LoRa.print(temperature, 1);
LoRa.print(",H:");
LoRa.print(humidity);
LoRa.endPacket(); // Non-blocking transmit
Serial.println("Packet sent");
delay(10000); // 10-second interval (duty cycle compliance)
}LoRaWAN Network Architecture
LoRaWAN creates a 4-layer star-of-stars network:
1. End Nodes
Battery-powered LoRa sensor nodes. Sleep most of the time, wake to transmit sensor data. Class A, B, or C devices.
2. Gateways
Listen on all channels simultaneously. Forward all received packets to the Network Server via IP (WiFi/Ethernet/LTE). Single gateway covers entire city.
3. Network Server
Handles MAC layer protocol, deduplication, ADR (Adaptive Data Rate), and routing to application servers.
4. Application Server
Decrypts and processes application payload. Integrates with databases, dashboards (TTN, Chirpstack), and cloud IoT platforms.
Fig 1: LoRaWAN Network Topology — Star-of-stars network from End Devices to Gateways, Network Server, and Application Servers
Frequently Asked Questions
What is LoRa and how does it achieve long range?
LoRa uses Chirp Spread Spectrum modulation, spreading signals across 125 kHz bandwidth. This enables receiver sensitivities as low as −148 dBm and ranges exceeding 10km line-of-sight, even with milliwatt transmit power.
What is the difference between LoRa and LoRaWAN?
LoRa is the physical radio modulation (chirp signals). LoRaWAN is the network protocol on top — defining gateways, network servers, security (AES-128), device classes, and activation methods (OTAA/ABP).
What are LoRa spreading factors and how do they affect range?
SF7–SF12 trade data rate for range. SF7 = fast (5.5kbps) but shorter range. SF12 = slow (0.29kbps) but 15km+ range with −137dBm sensitivity. Each SF step halves data rate but adds ~2.5dB link budget.
What is TTN (The Things Network)?
TTN is a global community LoRaWAN network with 15,000+ public gateways covering cities worldwide. Developers register devices on TTN and receive their sensor data through TTN's free cloud platform.
What is duty cycle limitation in LoRa?
The 868MHz EU band allows only 1% duty cycle — 36 seconds of transmission per hour. This regulatory limit prevents channel congestion and forces LoRa devices to sleep between transmissions, which also dramatically extends battery life.
📚 References & Sources
Related Resources
How WiFi Works
Compare LoRa long-range IoT with short-range WiFi networking.
How ESP32 BLE Works
Bluetooth Low Energy for short-range IoT vs LoRa long-range.
How GPS Works
GPS tracking combined with LoRa for asset tracking systems.
Arduino Uno Guide
The microcontroller platform most commonly paired with LoRa modules.

