digimesh是一个由digi公司提出的具有自组网功能的对等网络协议。在digimesh网络中,各节点在地位上是相等的,都是可休眠的路由节点。当开启休眠时,协议会自动将网络中的节点同步进行休眠和唤醒。由于digimesh的这种同步功能,它不像zigbee需要父节点来为休眠的子节点缓存数据,而是可以确保任意节点醒着的时候,其它节点也在唤醒状态。同样地,digimesh的网络参数由网络id和信道(跳频时为跳频点)决定,它不需要像zigbee一样,由协调器来建立网络,因此网络中的节点能够是完全对等的关系。
由于zigbee网络中对于底层的重传、广播次数等都有明确的规定,而digimesh则完全开放给用户去自定义,因此digimesh更方便灵活适应不同应用的需求。
digimesh除了具有自组网功能外,在带宽不足的应用情况下,也能够通过禁用自组网功能,从而实现更高带宽的点对多点的星状态网络。此外,在保留网状网的拓扑情况下,通过灵活调节不同节点的功能,还能实现可控的直接整网广播,在保证覆盖率的同时,进行一点移动节点或高带宽应用的部署。
一、digi的xbee digimesh模块
digi提供两种不同频段的digimesh模块:2.4ghz xbee3 digimesh模块和868mhz、900mhz的次ghz digimesh模块。其中,次ghz的模块包括250mw的xbee pro 900hp,xbee pro 868hp和1w发射功率的xbee pro sx模块。2.4ghz用的是扩频技术,而次ghz用的是跳频等技术,由于有更高的发射功能和较强的抗干扰能力,次ghz一般用于远距离通讯。
二、digimesh的用法
digimesh首先是一种自组网协议,因此和zigbee类似,当一个digimesh网络内部有一个节点出问题时,协议能为各节点的通讯自动寻找新的最佳路径,网络能自愈和自我恢复。 digimesh并不需要有个角色来建立网络,网络id和信道(或跳频点)是一个网络的标志,当两个模块的网络id和信道(或跳频点)相同时,它们就处于同一个网络中,它们之间可不可达完全取决于信号强度,在信号达不到的地方,如果有同网络的节点作为跳点,就可以将网络延展过去。 2.4g的模块有信道(ch)参数,而采用跳频的次ghz模块则对应的是有跳频点参数(hp,cm),1w以上的远距离模块,还有一个空中波特率的参数(br),为了能正常通信,网络内的节点该参数也需设置成一样。空中波特率越高,带宽也越高,但解码难度也增大,通讯距离相应会缩小,任何应用都应该在通信距离、可靠性和带宽之间作权衡。 hp可以理解为有七套不同中心频率的跳频点,在每套频率点中,还可以选择打开或关闭一些跳频点,这个参数是cm,它可以更灵活地在模块中实施不同国家的无线规约限制(比如禁用一些频点等)或是通过这个方式指定避开某些干扰频点。
digimesh的通讯方式有广播和定向单播两种方式。mt和rr决定了这两种通讯方式的最大重传次数。对于指定目标地址的单播,成功收到包后,接收方在底层会有个反馈包,如果发送方没收到反馈包,或是检测到发送失败,底层固件会自动重发,最多会重发rr次。而如果用广播的方式,每个router会把收到的广播包再转发mt+1次。这是增强距离和可靠性,减少丢包率的参数,但它也会带来带宽的降低。当您需要很密集发送或是需要更可靠的实时性时,应在丢包率和带宽/实时性之间做权衡,合理设置这两个参数。 在digimesh协议中,虽说是对等网络,每个节点角色相同,但仍有ce这个参数可以指定或限制模块的某些功能。最常用的是standard router节点和non-routing module节点两种。除此之外,也可以通过ce来指定两个模块的父子关系,子节点会定期向父节点查询是否有自己的数据,在ce参数中,如果指定节点是non-routing,意味着它不能给其它节点做跳点,并且收到广播包后,它不会去转发。在某些应用场景,当用户需要减少网络中的数据流量,增强实时性时,会变得很有用。
digimesh协议虽然是对等网络结构,但所有节点都可以同步休眠和唤醒,因此和zigbee不同,它并不需要父节点为子节点缓存数据(虽然也能够为节点指定这种关系)。在一个稳定的已经同步了的网络中,当某个digimesh的节点醒来时,意味着网络内的其它节点也处于醒着的状态。当有新节点加入时,需要两三个周期来同步。 由于digimesh中有这些功能和参数可自定义,它既能用在节点数量多,带宽要求不高的场合,也同样非常合适节点数量较少,效率要求高的场景。
三、digimesh网络功能探索
当我们说组好一个网络时,意味着网络内各节点的网络id,信道等已经设置好,并且已经能相互通信。通常一个典型的网络,包括一个api模式的网关和透传或api模式的网络内其它节点。当组好网络时,通常在网关侧,我们能够获取到网内的各个节点,并且可以有效的组织和控制网络内许可节点列表,将不是本网络的模块踢出网络或恢复为组网前状态。对于一个开启休眠的网络,如果一个网络的网关ni已经预先确定,我们可以检测节点状态,在节点同步时通过atdnxxxx将网关的目标地址写入到模块中。但更通用的做法是,网关定期广播带ni的组网信息帧,以便让各个节点可以在收到该信息时自动把网关的mac地址保存下来。
(1)网关和节点均为透传模式组网 在网关和节点均为透传模式时,由于默认的,节点的dh、dl为0000ffff,所以我们可以在网关侧用atag0000ffff让节点自动把dh、dl写成网关的地址。
(2)透传模块节点和api模式网关组网 同样的,简单用法我们仍可以用atag0000ffff来自动给网内节点设置好网关的目标地址。为了更有效管理网络,digi有一个专门的at指令来实现根据ni装载dh、dl,这在多个网关组成分层式网络时显得非常有用。一个通常的做法是,当网关首次上电并形成网络后,开始广播syncxxxx,首次收到该信息的节点,将会把xxxx作网关的ni,发送atdnxxxx,从而把网络内ni=xxxx的节点的mac地址自动设置到目标地址上。而当节点向网关发送数据时,网关将获取到节点的mac地址,由此可在用户程序空间中管理这张表,只对在许可列表的节点进行通信,对于非本网的节点发送退网指令,使其恢复到组网前状态等。
(3)全是api模式的节点和网关组网 当网络内节点全部是api模式时,在组网阶段,可用atag0000ffff指令或由网关发起sync信息,各节点收到后便确认了网关的mac地址,同时返回一个确信信息给网关,以便网关整理网络的节点列表。 此外,可由网关主动发起的网络信息查询,用atno04,atfn,这会返回包括rssi值的单跳结果。
四、几种典型的应用场景
(1)路灯监控。 (2)无人机飞行编队。 (3)电梯管理。在电梯管理中,我们可以把to设置成0x80,在api帧中也用这种方式通信,这是一种直接广播的传输方式,所有的routing节点会再次广播收到的数据,为了减少广播风暴,mt值可以设置为0,并且通过隔数层放置一个router,而其它层则作为non-routing点,这样只有router才会把收到的数据再次广播一次,只有匹配目标地址的节点收到数据后才从串口输出。设想一个30层的电梯,每隔5层放置一个router,轿厢也作为router节点,整个网络同时也只有7个点会把收到的不是自己的数据再广播一次,整体能带宽控制得很好。 (4)隧道监控。在隧道通信中,可以在隧道顶上放置router节点,而其它节点只作为non-routing节点。 (5)智能门锁。
中国十大智能手机品牌:魅族只排第9,小米跌至第4
Go预言实现的后段状态推送设计与实践
深度测评起亚K5 1.6T
低功耗广域网技术的选择参数
影响CMOS反相器特性的因素
一文解析Digi Digimesh无线自组网协议
iPhone关机问题:iOS又立功了
继续耍猴?小米6四月发布无望,上市或将推迟六月后
什么是学习?
贸泽赞助的Vasser Sullivan Lexus车队 在IMSA本赛季开幕战中表现出色
什么是Linux内核,Linux内核的作用与功能
开关电源的多种电容讲解
机器人对于普通工作岗位存在替代 但不会带来突出的“就业破坏”效应
什么是高防服务器?
“擎天柱”卡车实拍 解放军自己造的变形金刚
华为收取专利费又会对ICT产业发展产生什么影响呢?
固态硬盘如此快,还需不需要进行分区
Arasan推出支持TSMC 28纳米HPC工艺的DPHY IP核
路面压实智能监测系统
从辅助驾驶到自动驾驶的关键技术革新之路浅析