瞭解了有關通道配置的概念以後,接下來咱們進行ANT配對的學習。網絡
1、配對學習
在兩個須要通訊的節點間創建聯繫的過程,叫作配對(pairing)。配對的具體操做包括:從機搜索主機通道並同步;從機獲取主機通道ID;從機設置自身通道參數與主機匹配,而後創建ANT通道開始通訊。「獲取主機通道ID」能夠視爲配對成功的標誌。獲取的通道ID能夠存入存儲器屢次使用,所以配對能夠是永久的,半永久,或者暫時的。ANT提供了多種功能,以知足不一樣的配對要求,但並不是全部模塊都能支持這些功能,具體狀況能夠參考模塊手冊。spa
另:後臺搜索(background scanning)見下文搜索模式設計
(1)配對位blog
前面說到過,設備類型的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。
2、配對實例
好了,如今咱們用一個例子來說解ANT網絡配對組網的全過程。
拋開具體的應用背景,假設咱們有兩個性質不一樣的信號須要檢測,咱們設計了兩個ANT節點,分別鏈接了兩種對應的傳感器。而後,咱們須要第三個節點接收數據並送顯。組網結構以下圖所示。
網絡結構圖
A和C是傳感節點,B是中心匯聚節點。A和C檢測信號,並將採集的數據發送,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數據消息格式有關,以前遺漏了沒有講,那麼就放在下一期和「乾貨」一塊兒上吧!晚安!