1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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"))
|