一、配对

在两个需要通信的节点间建立联系的过程,叫做配对(pairing)。配对的具体操作包括:从机搜索主机通道并同步;从机获取主机通道ID;从机设置自身通道参数与主机匹配,然后建立ANT通道开始通信。“获取主机通道ID”可以视为配对成功的标志。获取的通道ID可以存入存储器多次使用,因此配对可以是永久的,半永久,或者暂时的。ANT提供了多种功能,以满足不同的配对要求,但并非所有模块都能支持这些功能,具体情况可以参考模块手册。

  • 配对位(pairing bit)
  • 包含/排除列表(in/exclusion list)
  • 临近搜索(proximity search)
  • 搜索列表(search list)

后台搜索(background scanning)见下文搜索模式

(1)配对位

  前面说到过,设备类型的8bit中的最高1位为配对位。主设备设置配对位,从设备将会优先配对之。当从设备不知道完整的主设备通道ID,也就是使用至少一个通配的通道参数时,使用配对位功能将避免配对到错误的主设备。举个应用中的例子,在心率表配对心率带的时候,常见的情况是:小明戴上心率带,然后操作心率表进行配对。根据小明的这个操作习惯,我们可以设置心率带在开启的前10s置位配对位,10s后自动复位配对位,这样一来,只要附近周边其他用户不在10s内开启另一个心率带,小明的心率表就能够很快在10s内配对到自己的心率带了。

(2)包含/排除列表

  顾名思义的好功能。设定的字段必须是一个完整的通道ID配置,且最多支持4个条目。

(3)临近搜索

  根据从设备扫描到的主设备RSSI来进行配对,只配对指定范围内的主设备。

(4)搜索列表

  获取所有搜索到的设备号,由MCU用户辨识并决定配对到哪一个。

另:后台搜索提供了一种相当给力的搜索功能,具体见下文。

  

以上4种功能相互组合搭配,就可以实现多种多样的配对功能了。实际开发中,应当根据需求情况,谨慎选择。听起来还可以!灵活的配对方式,也是ANT比BLE和Zigbee优势的地方,毕竟他从出生起就是注定要在CE领域混的!视用户需求为上帝,打造极致体验,这样用户才会买你的账!

我总结了设计中常见的几种需要考虑的情况,如有不足恳请各位指出:

系统对所处的环境(多用户?还是单用户?)

设备的供能情况(能量受限的主机?还是能量受限的节点?)

设备的配对频次(公有设备需频繁配对,私有设备仅首次配对)

人机接口(高级接口完成高级功能)

 

   

补充介绍关于搜索模式的几个概念:

多通道的ANT模块大多支持两种搜索模式,低优先级搜索(low priority search),高优先级搜索(high priority search)。优先级表明了其对其他通道的影响程度。

LPS:一个通道进行LPS的时候,对其他已开启通道的通信不会有影响,而且功耗和HPS相近,但搜索效率会降低。

HPS:一个通道进行HPS,其他已开启通道会受影响出现高达50%的丢包甚至完全中断。但保证了最快搜索到通道效率。

搜索超时:LPS超时后自动进入HPS。LPS和HPS的超时都可以手动设置,默认LPS~5s,HPS~25s。HPS超时则通道搜索全部结束。若想仅使用LPS,可设置LPS超时为无限长,用HPS超时来控制结束。

后台搜索:后台搜索(通道)是搜索模式中一种特殊的通道类型。作为一个仅用于搜索的通道,它搜索并不是为了让自己同步,而是将搜到的通道ID以及主机信息传递给MCU,这样MCU可以使用得到的参数新建另一个普通通道。这样,也就完成了与那个通道的同步,以及和对应设备的配对过程。进行后台搜索时应设置为只使用LPS。

 

二、配对实例

      好了,现在我们用一个例子来讲解ANT网络配对组网的全过程。

  抛开具体的应用背景,假设我们有两个性质不同的信号需要检测,我们设计了两个ANT节点,分别连接了两种对应的传感器。然后,我们需要第三个节点接收数据并送显。组网结构如下图所示。

                                                     

Android10 连接已经配对的设备 已配对的设备怎么连接_Android10 连接已经配对的设备

 

                                              网络结构图

 

      A和C是传感节点,B是中心汇聚节点。A和C检测信号,并将采集的数据发送,B接收数据并做进一步处理。箭头方向标明的数据流通的方向。现在约定一下该网络的要求:

  • A、C为主节点,B为从节点。
  • A使用广播数据,C使用应答数据。
  • 网络规定使用RF频率2488MHz,规定通道周期为16384(2Hz)。
  • 使用默认的ANT公共网络。网络号0,网络key0。
  • 该系统用于多用户环境中。即范围内存在多个类似系统。
  • A、B、C均采用电池供电。
  • 系统初始化前需要先配对。B只知道AC的设备类型,不知道AC的设备ID。
  • B节点的人机接口包括:显示屏、按键。

 

      综上所属,首先我们可以确定,这是一个典型的星型拓扑网络。两个子节点与中心节点通信,子节点数量并不是很多,使用两个独立通道分别与两个子节点通信是最好的选择。A、C是数据采集端,B接收端,因此AC定义为Master,B是Slaver,这都是没有问题的。第二个,我们已经知道,单向通道中只能使用广播消息类型,双向通道可以使用广播、应答、突发全部三种消息类型。A使用广播数据,AB之间只能是单向通道(unidriectional),B不用发送信息给A;而C使用的是应答数据,每一个包都要求B返回一个确认数据,因此CB间建立的是双向通道(bidriectional)。然后呢,规定了RF频率和通道周期以及使用公共网络,那么这些参数可以直接设置了。AC设备类型不同,但是B知道要配对的AC的设备类型,不知道AC的设备ID,这样在B上配对时,设备类型可以直接指定,设备ID应当用0来通配。最后一个,前面提到该系统用于多用户环境,多用户环境中,也就是说在相同的时间,空间中会有同样的用户行为发生比方说同时开机,配对。开机倒无所谓,如过配对过了,从机能记忆储存前次的配对信息,当再次开机的时候直接载入就可以了。但是如果是没有配对过,首次使用必须要进行配对的。两个用户两套系统,同时开机配对,相互配错了怎么办?对不对。那么,为了避免多人同时段配对出现问题,一定要考虑配对功能的设计。比较完美的方案是采用[从机后台扫描]+[从机邻近搜索]+[主机限时配对位],这样不仅能一次性完成多个通道的搜索和配对,也较好地避免了配对混淆。甚至,我还可以因为B节点有高级的人机接口,我用[搜索列表]来做,放到屏幕上让用户来选择。但这样实现起来成本也很高,毕竟ABC都是电池供电,让用户去操作的话,不是说用户辨识反应慢,而是在于整个配对流程被拉地太长,太繁琐,每个环节一点点延时,都积累起来就很恐怖了。要知道ANT模块搜索通道时候的电流典型值是3mA啊!电池肯定经不起几次搜索的。所以我们并不需要贪大求全一味追求高逼格功能,能简化的步骤,能自动处理的问题,就尽量避免交给用户。这里我们最赞的方案就用[从机后台扫描]+[主机限时配对位]就ok了。另外提醒用户尽量“先配对,再布置”,虽然不用到[邻近搜索]但是毕竟,距离对于搜索配对还是有一定影响的。然后对于主机配对位的超时,以及后台扫描的超时都合理设计一下。后面我会给出一个经验参考值。

      下面用一个表格来记录所需通道配置。A,C的通道配置是出厂预置的,无法更改。B有开启3个独立通道,一个专用于后台搜索,另两个用于根据搜索的的结果配置与AC的通道。

通道配置

A channel 0

   (预置)    

 C channel 0 

  (预置)  

B channel 0

     (后台搜索)     

       B channel 1 for A  

         (搜索完成)

      B channe 2 for C  

        (搜索完成)

网络号/网络key

 0/0

 0/0

 0/0

 0/0

 0/0

RF频率

 88

 88

88

 88

88

设备ID

 0x0001

预定值

0x0001 

预定值

 0

通配

 0x0001

匹配A

 0x0001

匹配C

设备类型

0x81/0x01

配对位限时自动复位

0x82/0x02

配对位限时自动复位

0x81/0x82

搜到A再搜B

0x01

匹配A

0x02

匹配C

传输类型

 1

无共享地址域

 1

无共享地址域

 0

搜索

 1

匹配A

 1

匹配C

通道类型

 0x10

双向主通道

 0x10

双向主通道

0x40

单向从通道

 0x40

单向从通道

 0x00

双向从通道

通道周期

 16384

 16384

 16384

 16384

 16384

数据类型

 0x4E

广播数据

 0x4F

应答数据

 N/A

 0x4E

广播数据

 0x4F

应答数据

      你也许会问,为什么用于单向广播的A节点,通道类型不是0x50单向主通道呢?因为事实上很多时候,从节点还是需要和主节点交换数据的,比如使用命令要求主节点回复自己的完整通道ID以完成配对,或者查询主节点的电能状况方便用户管理。而0x10双向主通道即保留了反向通信的可能,也并不影响使用广播数据,所以实际应用中大多使用双向通道,而单向通道使用较少。

      关于AC的配对位超时时限,通常可以根据通道的搜索时间来设置。官方文档中有这样一组数据:

 

消息频率

最长通道搜索时间

10Hz

2s

4Hz

3s

2Hz

7s

1Hz

15s

0.5Hz

45s


 

      数据表明,主通道的消息频率,与最长通道搜索时间有关。频率越高,越容易搜索到。根据这个数据,我们不妨设置AC的配对位超时时限为30s。可以使用外部事件触发配对位置位,常用的方案有开机自动触发,用户触发等。我们这里AC节点都不具备人机接口,所以使用开机自动触发是最好的选择。只要AC同时间开机,就能保证30s内都配对完成。

      关于B的后台搜索通道,因为要搜索两个不同类型的设备,所以设置设备类型时应使用逻辑判断。当搜到第一个设备通道后,变更设备类型,进行第二种类型设备的通道搜索。然后第二种设备也搜索完毕后,停止搜索并关闭后台通道。B的通道设置流程图如下图。

 

Android10 连接已经配对的设备 已配对的设备怎么连接_嵌入式_02

      好了,关于配对就到说这里了。你可能注意到流程图中提到了扩展数据消息,这于ANT数据消息格式有关,之前遗漏了没有讲,那么就放在下一期和“干货”一起上吧!晚安!