La loraphy est une implémentation MATLAB complète de la couche physique LORA, y compris la modulation en bande de base, la démodulation de la bande de base, le codage et le décodage. Loraphy est organisée comme un seul fichier LoRaPHY.m pour faciliter l'utilisation (copiez-le et exécutez partout).
Ce repo est la mise en œuvre du document suivant:
Zhenqiang Xu, Pengjin Xie, Shuai Tong, Jiliang Wang. De la démodulation au décodage: vers une compréhension et une implémentation complètes de Lora phy. Transactions ACM sur les réseaux de capteurs 2022. [PDF]
L'implémentation SDR en temps réel basé sur la radio GNU est accessible via GR-LORA.
Matlab> = r2019b
Git clone ce dépôt ou simplement télécharger LoRaPHY.m . Mettez votre script MATLAB, par exemple, test.m , dans le même répertoire de LoRaPHY.m . Vous trouverez ci-dessous un exemple montrant comment générer un signal LORA en bande de base valide, puis extraire les données avec le décodeur. Voir plus d'exemples dans les exemples de répertoires. (Loraphy fournit fast mode qui permet une accélération 10x par rapport ./examples/test_fast_mode.m la démodulation normale avec une petite dégradation de sensibilité.
% test.m
rf_freq = 470e6 ; % carrier frequency 470 MHz, used to correct clock drift
sf = 7 ; % spreading factor SF7
bw = 125e3 ; % bandwidth 125 kHz
fs = 1e6 ; % sampling rate 1 MHz
phy = LoRaPHY( rf_freq , sf , bw , fs );
phy.has_header = 1 ; % explicit header mode
phy.cr = 4 ; % code rate = 4/8 (1:4/5 2:4/6 3:4/7 4:4/8)
phy.crc = 1 ; % enable payload CRC checksum
phy.preamble_len = 8 ; % preamble: 8 basic upchirps
% Encode payload [1 2 3 4 5]
symbols = phy .encode(( 1 : 5 ) ' );
fprintf( " [encode] symbols:n " );
disp( symbols );
% Baseband Modulation
sig = phy .modulate( symbols );
% Demodulation
[ symbols_d , cfo , netid ] = phy .demodulate( sig );
fprintf( " [demodulate] symbols:n " );
disp( symbols_d );
% Decoding
[ data , checksum ] = phy .decode( symbols_d );
fprintf( " [decode] data:n " );
disp( data );
fprintf( " [decode] checksum:n " );
disp( checksum );