lora

package
v0.1.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 10, 2024 License: MIT Imports: 2 Imported by: 0

Documentation

Overview

Package lora provides utilities to assess the signal quality of LoRa (Long Range) communication based on RSSI (Received Signal Strength Indicator) and SNR (Signal-to-Noise Ratio) values.

Package loraradio provides functionality to determine values for a LoRa radio link, including maximum data rate and link budget while accounting for receiver sensitivity.

Index

Constants

This section is empty.

Variables

View Source
var SpreadingFactors = []SpreadingFactorData{
	{SF: 5, ChipsPerSymbol: 32, DemodulatorSNR: -2.5},
	{SF: 6, ChipsPerSymbol: 64, DemodulatorSNR: -5},
	{SF: 7, ChipsPerSymbol: 128, DemodulatorSNR: -7.5},
	{SF: 8, ChipsPerSymbol: 256, DemodulatorSNR: -10},
	{SF: 9, ChipsPerSymbol: 512, DemodulatorSNR: -12.5},
	{SF: 10, ChipsPerSymbol: 1024, DemodulatorSNR: -15},
	{SF: 11, ChipsPerSymbol: 2048, DemodulatorSNR: -17.5},
	{SF: 12, ChipsPerSymbol: 4096, DemodulatorSNR: -20},
}

Functions

func CalculateSensitivity

func CalculateSensitivity(params SensitivityParams, spreadingFactors []SpreadingFactorData) (float64, error)

CalculateSensitivity calculates the LoRa receiver sensitivity based on the provided parameters.

func ExampleGetDiagnosticNotes

func ExampleGetDiagnosticNotes()

ExampleGetDiagnosticNotes demonstrates the usage of the GetDiagnosticNotes function.

func ExampleGetSignalQuality

func ExampleGetSignalQuality()

ExampleGetSignalQuality demonstrates the usage of the GetSignalQuality function.

func GetDiagnosticNotes

func GetDiagnosticNotes(rssi, snr float64) string

GetDiagnosticNotes provides recommendations based on RSSI and SNR values. It returns different notes depending on the quality of the RF level.

func LinkBudget

func LinkBudget(rxSensitivity, transmitPower float64) float64

Simplified link budget calculation per the Semtech calculator

func MaxDataRate

func MaxDataRate(bandwidth, spreadingFactor, codeRate float64) float64

MaxDataRate calculates the maximum data rate for a LoRa radio link based on the provided parameters.

func SNR

func SNR(spreadingFactor int) float64

Types

type SensitivityParams

type SensitivityParams struct {
	Bandwidth       float64 // in Hz
	ImplementationL float64 // Implementation loss in dB, typically 1-3 dB
	SpreadingFactor int     // LoRa Spreading Factor
}

SensitivityParams holds the parameters used for sensitivity calculations.

type SignalQuality

type SignalQuality string

SignalQuality defines a type for representing the quality of a signal.

const (
	// SignalQualityGood indicates a good signal quality.
	SignalQualityGood SignalQuality = "GOOD"
	// SignalQualityFair indicates a fair signal quality.
	SignalQualityFair SignalQuality = "FAIR"
	// SignalQualityBad indicates a bad signal quality.
	SignalQualityBad SignalQuality = "BAD"
)

func GetSignalQuality

func GetSignalQuality(rssi, snr float64) SignalQuality

GetSignalQuality determines the signal quality based on RSSI and SNR. A GOOD signal is determined by SNR >= -7 and RSSI >= -115. A FAIR signal is determined by SNR >= -15 and RSSI >= -126. Any signal that does not meet the GOOD or FAIR criteria is considered BAD.

type SpreadingFactorData

type SpreadingFactorData struct {
	SF             int
	ChipsPerSymbol int
	DemodulatorSNR float64
}

SpreadingFactorData holds the data for each spreading factor.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL