文档
»文档»技术文件»频道活动检测:如何确保你的罗拉®正常数据包被发送»如何确保你的罗拉®数据包发送正常吗

频道活动检测:确保你的罗拉®数据包被发送

介绍

阿罗哈媒体访问控制机制,对一组参数(无线电频率(频率),带宽(BW)和扩散因子(SF)),无论另一个设备已经发送,可能导致一个碰撞。而阿罗哈允许一个简单的网络实现,它不能跟上需求的增加物联网(物联网)设备。即使设备符合频道使用的局限性- 0.1%或1%在欧洲工作周期ALOHA-based网络将有困难跟上物联网网络的发展。

使用扩频调制技术提出的挑战在决定是否通道传输一帧之前已经在使用了。
罗拉接收机可以解调信号低噪声地板,使用RSSI是行不通的。相反,该频道活动检测器(CAD)是用于检测其他罗拉信号的存在。

频道活动检测罗拉收音机的功能在整个投资组合提供了一个可能的CSMA LoRa-based网络的机制。CAD是一个节能的方法来检测传入帧而不是诉诸于一种耗电连续接收模式。之前执行一个CAD、罗拉电台设置所需的频率,科幻小说和BW。收音机然后切换到CAD模式和执行一个CAD操作,而持续[Tsymbol + (32 / BW)]毫秒,在收音机上执行接收操作相关收到样品。Tsymbol持续时间是一个罗拉唧唧喳喳的通话时间,根据科幻小说的价值。

罗拉CAD模式可以在所有的收音机[1]主要是为节能设计中检测。尽管序言检测不是一个成熟的载波监听,CAD可以可靠和高效检测负载啾啾的一个正在进行的传输。

CAD操作

CAD操作本身涉及听收音机模块,在预设频率和科幻/ BW设置,罗拉序言。如果找到,它返回一个主机单片机中断。从SX128x设备,罗拉模块也可以尝试听进一步以检测是否罗拉包本身,没有序言。再一次,如果它检测到,它将返回一个中断。如果不是,主机单片机接收到警报状态,用户可以进行传播。

图1 -罗拉CAD计时

从SX1272/3/6/7/8:罗拉调制解调器,低能耗设计Semtech。

例子SX127x

CAD操作开始时,第一个32 / BW女士并不可用。然后在(2 ^科幻)/ BW女士,RSSI是有效的和可读的。芯片ModeReady中断。年底ModeReady信号,处理时间短,(2 ^科幻* BW) / 1750 e3,在降低消费水平。频道活动检测过程完成后,无线电回到待机模式和CadDone中断设置。在这一点上,可以检查CadDetected中断,表明存在,或否则,的一个有效的序言之后接收机。
注意:无线电回到待机模式允许CadDetected CadDone中断读取,然后清除自动回到睡眠模式。

在实践中

如果你不是一个射频工程师,这项工作在实践中如何?基本上,如果你一直在做罗拉P2P传输,或看着乒乓球代码,您会注意到,在大多数情况下,发送一个包就开始传输数据的代码发送给罗拉芯片,这触发了传播。接下来发生的事就留给了罗拉的筹码。

同样,接收数据包处理同步:你问罗拉芯片是否有什么,如果有,你看。如果不是,你跳过,直到下一次。这通常发生在主循环(),或类似的,这取决于您所使用的框架。

随着CAD,过程是完全不同的。你可以有一个代码示例,一个完全空的主循环(),和仍然正常功能而储蓄力量:秘诀就是建立一个CadDone中断()回调,将处理的结果CAD操作。同样,您设置回调对所有接收(RX)和传输(TX)事件(RxDone、RxError TxDone, TxError)。
现在说你想实现一个罗拉装置,每xx分钟发送少量的数据,如传感器吊舱在一个农场。听起来很容易。这个问题可能出现当你不有一个豆荚,但数百名。即使你东倒西歪的传输,数以百计的数据包在几分钟,20到30秒的传输时间,事情会变得混乱,你可能会有一些碰撞导致丢包。这是CAD的亮点,因为设备将检测正在进行的传输之前发送数据包。

设置广播事件RAK4631(基于SX1262模块)

/ /初始化电台回调
RadioEvents。TxDone = OnTxDone;
RadioEvents。RxDone = OnRxDone;
RadioEvents。TxTimeout = OnTxTimeout;
RadioEvents。RxTimeout = OnRxTimeout;
RadioEvents。RxError = OnRxError;
RadioEvents。CadDone = OnCadDone;
/ /初始化收音机
Radio.Init (&RadioEvents);

而不是无条件地发送数据包,发送的时候,你问一个CAD操作。当完成时,CAD操作返回一个状态码:繁忙或可用。如果信道忙,你队列传输并稍后再试。如果它是免费的,你发送数据,等到TxDone回调被称为包从队列中删除。意识到另一个设备可能已经开始之间的传输时间CAD操作和时间你开始传播,这就是为什么时间随机化总是推荐。这是整个过程是什么样子:

发送一个罗拉包与CAD、基于爱的框架

/ * *
@brief主要发送函数设置为发送的事情。
* /
无效send () {
/ /建立一个缓冲区64字节的字符串,和其余组成
/ /随机字节使一个很大的包,很好地在一个特别提款权。
sprintf ((字符*)TxdBuffer,“收到RSSI % d,信噪比% d”、myRSSI mySNR);
uint8_tbufLen = strlen ((字符*)TxdBuffer) +1;
uint8_tremainderLen =64年——bufLen;
fillRandom (TxdBuffer + bufLen remainderLen);
发送:“);
/ /显示十六进制格式的缓冲区
hexDump (TxdBuffer64年);
Radio.Standby ();
/ /建立CAD
收音机。SetCadParams (LORA_CAD_08_SYMBOL LORA_SPREADING_FACTOR +13,10LORA_CAD_RX,0);
/ /确定CAD操作需要多长时间。可选的。
cadTime =米尔斯();
/ /添加一些时间随机化,以避免设备之间同步。
延迟(随机(300年));
Radio.StartCad ();
}

/ * *
@brief CadDone回调:英吉利海峡是忙吗?
* /
无效OnCadDone (boolcadResult) {
time_t时间=米尔斯()——cadTime;
如果(cadResult) {
/ /真实=忙/通道活动检测
Serial.printf (“CAD返回频道忙% ldm \ n”后、持续时间);
/ /在这结我们应该重新发送。在这里,我们就忽略。
}其他的{
Serial.printf (“CAD返回频道免费后% ld女士发送……”、持续时间);
/ /好:让我们发送!
Radio.Send (TxdBuffer64年);/ / strlen ((char *) TxdBuffer)
“做!”);
}
}

/ * *
@brief函数执行在广播Tx完成事件
* /
空白OnTxDone (void) {
“OnTxDone”);
Radio.Rx (RX_TIMEOUT_VALUE);
}

/ * *
@brief广播Tx超时事件执行的函数
* /
空白OnTxTimeout (void) {
“OnTxTimeout”);
Radio.Rx (RX_TIMEOUT_VALUE);
}

本文是一个合作RAKwireless(迪迪埃·巴尔巴斯)和Semtech (Olivier Gimenez)。

Semtech, Semtech标志和罗拉®Semtech公司的注册商标或服务商标或其附属公司。


[1]SX127x无线电组合只能检测中。SX128x,所有其他罗拉产品(SX126x LR11xx)可以检测到完整的数据包没有主机单片机参与。


Baidu
map