aboutsummaryrefslogtreecommitdiff
path: root/R/sx1276.R
diff options
context:
space:
mode:
authorVotre Nom <git-account@loicguegan.fr>2017-08-30 13:57:44 +0400
committerVotre Nom <git-account@loicguegan.fr>2017-08-30 13:57:44 +0400
commit19b26672103903556ae014732b169146d2e6a5a1 (patch)
treebeab53853a4f7e15672b13d11a5face1918e158a /R/sx1276.R
parentf37f200792444fee2f74e807acfd5be7c9180cd7 (diff)
Add R
Diffstat (limited to 'R/sx1276.R')
-rwxr-xr-xR/sx1276.R50
1 files changed, 50 insertions, 0 deletions
diff --git a/R/sx1276.R b/R/sx1276.R
new file mode 100755
index 0000000..8a1cd0c
--- /dev/null
+++ b/R/sx1276.R
@@ -0,0 +1,50 @@
+# Changer les paramètres plus bas et éxécuter ce fichier afin de calculer la durée
+# d'émission d'une trame en Lora sur le module sx1276
+# Voir sx1276 datasheet pour le détails de ces paramètres :
+PL=10
+SF=12
+IH=0
+DE=0
+CR=1
+CRC=0
+BW=500*10^3
+nPreamble=6
+
+# Cf SX1276 datasheet
+getNPayload=function(PL,SF,IH,DE,CR,CRC){
+ numerateur=8*PL-4*SF+28+16*CRC-20*IH;
+ denominateur=4*(SF-2*DE);
+ ceil=ceiling(numerateur/denominateur);
+ np=(8+max(ceil*(CR+4),0));
+ return(np);
+}
+
+# Cf SX1276 datasheet
+getTPrembule=function(nPreamble,Rs){
+ return((nPreamble+4.25)*(1/Rs));
+}
+
+# Cf SX1276 datasheet
+getTPayload=function(nPayload,Rs){
+ return(nPayload*(1/Rs));
+}
+
+# Cf SX1276 datasheet
+getRs=function(BW,SF){
+ Rs=BW/(2^SF)
+ return(Rs);
+}
+
+getTPacket=function(PL,SF,IH,DE,CR,CRC,BW,nPreamble){
+ Rs=getRs(BW,SF);
+ print(paste("Symbol duration",Rs,"s"))
+ tPrembule=getTPrembule(nPreamble,Rs);
+ print(paste("Preambule duration",tPrembule,"s"))
+ nPayload=getNPayload(PL,SF,IH,DE,CR,CRC);
+ tPayload=getTPayload(nPayload,Rs);
+ print(paste("Payload duration",tPayload,"s"))
+ return(tPrembule+tPayload);
+}
+
+# Afficher le calcule
+print(paste("Packet duration",getTPacket(PL,SF,IH,DE,CR,CRC,BW,nPreamble),"s")) \ No newline at end of file