NeLoRa-Bench

CC0Introduced 2023-04-20

Implementation We use the USRP N210 SDR platform for capturing over-the-air LoRa signals, operating on a UBX daughter board at the 470MHz bands and a sampling rate of 1MHz. The captured signal samples are then delivered to a back-end host for pre-processing and demodulation. On the transmitter side, we use SX1278 client radio based commodity LoRa nodes for transmitting LoRa packets.

Chirp Symbol Dataset: We collect LoRa packets at the high SNR (>30>30~dB), including 4 SFs (e..g, 7, 8, 9, 10). Each packet contains around 60 symbols, and we preprocess and slice them into individual symbols. For training and testing, we measure the signal amplitude and add corresponding random-generated Gaussian white noise to render chirp symbols at different SNR, covering -40~dB to 15~dB.

File structure: The dataset is contained in 4 folders, one for each SF configuration. Inside them, there are around 100 subfolders, each indicating one packet. Inside each subfolder is around 60 files which contain the I/Q samples for each LoRa symbol, represented as a binary 1-dimensional array of 32-bit float numbers (two consecutive float numbers represent one I/Q sample, with the former and the latter as the real and imaginary part). The ground truth symbol of this file is written in its filename: each datafile's filename is four numbers separated with underscores, indicating 1) the position of the symbol in the packet (starting with 0); 2) The ground truth of this symbol (ranging from 00 to 2SF12^{SF}-1); 3) the ID of the packet that contains this symbol (remain the same in each subfolder); 4) the spreading factors (ranging from 7 to 10). The code for the data extracting is presented in the Python file data_loader.py alongside the dataset.