当前位置 博文首页 > freemote的博客:【从0到1搭建LoRa物联网】20、LoRaWAN扩展
系列文章:
【从0到1搭建LoRa物联网】1、LoRa物联网的架构
【从0到1搭建LoRa物联网】2、终端设备开发方式
【从0到1搭建LoRa物联网】3、国产LoRa终端ASR6505软硬件
【从0到1搭建LoRa物联网】4、国产LoRa终端ASR6505普通GPIO
【从0到1搭建LoRa物联网】5、国产LoRa终端ASR6505驱动DHT11
【从0到1搭建LoRa物联网】6、国产LoRa终端ASR6505 I2C接口
【从0到1搭建LoRa物联网】7、国产LoRa终端ASR6505驱动段式LCD例程
【从0到1搭建LoRa物联网】8、国产LoRa终端ASR6505 PingPong通信
【从0到1搭建LoRa物联网】9、国产LoRa终端ASR6505 PingPong通信OLED显示
【从0到1搭建LoRa物联网】10、LoRa终端ASR6505 ADC采样
【从0到1搭建LoRa物联网】11、ASR6505 LoRaWAN通信
【从0到1搭建LoRa物联网】12、LoRa网关与平台通讯协议
【从0到1搭建LoRa物联网】13、低成本单通道网关(一)
【从0到1搭建LoRa物联网】14、低成本单通道网关(二)
【从0到1搭建LoRa物联网】15、LoRa连接到The Things Network
【从0到1搭建LoRa物联网】16、LoRa连接到腾讯云物联网平台
【从0到1搭建LoRa物联网】17、LoRa连接到chirpstack
【从0到1搭建LoRa物联网】18、LoRa应用服务器Application Server
【从0到1搭建LoRa物联网】19、LoRa串口透传例程(补充)
在RegionCN470.c中有如下函数:
int8_t RegionCN470AlternateDr( AlternateDrParams_t* alternateDr )
{
int8_t datarate = 0;
if( ( alternateDr->NbTrials % 48 ) == 0 )
{
datarate = DR_0;
}
else if( ( alternateDr->NbTrials % 32 ) == 0 )
{
datarate = DR_1;
}
else if( ( alternateDr->NbTrials % 24 ) == 0 )
{
datarate = DR_2;
}
else if( ( alternateDr->NbTrials % 16 ) == 0 )
{
datarate = DR_3;
}
else if( ( alternateDr->NbTrials % 8 ) == 0 )
{
datarate = DR_4;
}
else
{
datarate = DR_2;
}
return datarate;
}
可以看出,入网的时候速率是不断调整的,主要是与入网的次数有关,入网次数是48的倍数的时候使用DR_0,入网次数是32的倍数的时候使用DR_1,以此类推,其余入网的时候使用DR_2(对CN470来说就是SF10)。当然,也可以根据实际情况调整。
在RegionCommon.c文件中有如下函数:
#define BACKOFF_DC_1_HOUR 100
#define BACKOFF_DC_10_HOURS 1000
#define BACKOFF_DC_24_HOURS 10000
uint16_t RegionCommonGetJoinDc( TimerTime_t elapsedTime )
{
uint16_t dutyCycle = 0;
if( elapsedTime < 3600000 )
{
dutyCycle = BACKOFF_DC_1_HOUR;
}
else if( elapsedTime < ( 3600000 + 36000000 ) )
{
dutyCycle = BACKOFF_DC_10_HOURS;
}
else
{
dutyCycle = BACKOFF_DC_24_HOURS;
}
return dutyCycle;
}
elapsedTime表示过去的时间,可以看出随着时间往后,入网的间隔越久。
cs欢迎关注微信公众号【物联网思考】,回复关键字“ ASR6505”获取资料,《从0到1搭建LoRa物联网》系列的所有软硬件资料将会分享在公众号。