了解了有關通道配置的概念之后,接下來我們進行ANT配對的學習。
一、配對
在兩個需要通信的節點間建立聯系的過程,叫做配對(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)。優先級表明了其對其他通道的影響程度。
(1)LPS:一個通道進行LPS的時候,對其他已開啟通道的通信不會有影響,而且功耗和HPS相近,但搜索效率會降低。
(2)HPS:一個通道進行HPS,其他已開啟通道會受影響出現高達50%的丟包甚至完全中斷。但保證了最快搜索到通道效率。
(3)搜索超時:LPS超時后自動進入HPS。LPS和HPS的超時都可以手動設置,默認LPS~5s,HPS~25s。HPS超時則通道搜索全部結束。若想僅使用LPS,可設置LPS超時為無限長,用HPS超時來控制結束。
(4)后台搜索:后台搜索(通道)是搜索模式中一種特殊的通道類型。作為一個僅用於搜索的通道,它搜索並不是為了讓自己同步,而是將搜到的通道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數據消息格式有關,之前遺漏了沒有講,那么就放在下一期和“干貨”一起上吧!晚安!