一、配对
在两个需要通信的节点间建立联系的过程,叫做配对(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节点,分别连接了两种对应的传感器。然后,我们需要第三个节点接收数据并送显。组网结构如下图所示。
网络结构图
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的通道设置流程图如下图。
好了,关于配对就到说这里了。你可能注意到流程图中提到了扩展数据消息,这于ANT数据消息格式有关,之前遗漏了没有讲,那么就放在下一期和“干货”一起上吧!晚安!