單片機的自組織網絡互同步節點設計
摘要:針對自組織網絡中的互同步算法進行了研究,基于單片機設計了一種便于驗證學習的實體節點,彌補了單純軟件仿真的不足。該設計具有簡單直觀、網絡規模擴展靈活的特點,對于掌握無線傳感網或多智能體等進行同步和協調的自組織組網技術有一定的借鑒意義。
關鍵詞:單片機; 自組織網絡; 互同步
引言
隨著無線網絡與電子技術的發展和普及,各類專業設備甚至民用產品之間的數據傳輸已經不滿足于簡單的點對點形式,對組網的需求日益突出。為了應對這一需求,自組織網絡技術應運而生。
自組織網絡的突出特點是,沒有傳統的中心控制節點來協調組網過程,分布的節點之間的組織主要靠“臨時性的自治”實現。實現無線自組織網絡的基礎之一是網絡互同步技術。該技術通過網絡節點之間時間基準的相互交換和相互控制,實現節點之間的相互同步。
由于無線節點硬件成本偏高,相關軟件使用也較為復雜,在進行相關技術的研究和學習時,大多通過計算機軟件仿真。這種純粹軟件仿真實驗的形式更適用于已有一定的實踐經驗和算法基礎的人員,對于其進行更專業的算法學習和研究有較大幫助。但由于缺乏具體的實物,初學者難以建立起直觀的感性認識。
為此,本設計首先選擇低成本的單片機作為核心,利用簡單的光電信號替代WiFi、藍牙等無線通信形式,最大程度地降低了硬件制作成本。其次,剔除了復雜的通信協議棧,僅關注于自組織網絡中互同步技術的核心算法實現,最大程度地簡化了學習的難度。所設計的節點組成的學習平臺不僅簡單直觀,而且可以根據需要驗證各類不同算法,網絡規模也可靈活調整,不受節點數量增加的限制。
1 節點硬件設計
綜合考慮成本、供電和算法更新等方面,選擇ATtiny13A-10pu作為仿真節點的核心。該芯片是一款低功耗的8位微處理器,可以工作在0~4 MHz@1.8~5.5 V狀態,用一粒普通的CR2032紐扣電池就可以為其提供3 V供電,內部有1 KB Flash RAM,64字節RAM和64字節EEPROM,空間雖然不大,但做基本算法驗證已經夠用。除此之外它還有4路10位ADC可作為光電信號檢測之用。在光電檢測元件方面采用的是常見的光敏電阻5516,當然也可以選擇性能更穩定、一致性更好的環保光敏電阻。
除了上面所述的單片機、光敏電阻以外,節點還需要有一個發光二極管用于顯示各節點間的同步狀態。當初始亮滅不一致的節點經過一段時間后,以相同時間點、頻率進行閃爍,這時表示網絡同步成功。對發光二極管只要求電壓電流適當即可,設計中選擇的是1.7 V、2 mA的低電流發光二極管,低電流更有利于延長節點電池的工作時長。
整個電路力求簡潔,因而沒有設計復位電路。另外,由于片內振蕩器已經進行了9.6 MHz的標定,經8分頻后可以實現1.2 MHz的系統時鐘,已經可以滿足本設計的需要,所有也無需外接晶振。電路原理圖如圖1所示。
需要注意的是,圖中電阻R1、R2阻值的具體選擇和電源電壓、發光二極管及光敏電阻的參數有關。電阻R1的作用主要是限流,其阻值可參考公式R1=(Up-U1)/I1選擇,其中Up為供電電壓,U1為發光二極管壓降,I1為發光二極管的電流。電阻R2的阻值主要受到光敏電阻R3工作效果的影響,選定的原則主要由保證光敏電阻在日光下可以對光線變化作出反應的靈敏程度來決定,在最初確定時可以用電位計來替換固定電阻R2,通過試驗,1 kΩ阻值的電阻已經可以保證節點正常工作。
另外,如果不采用節點間相互分離的獨立電路設計,而采用多個節點固定在同一塊底板上的布線,也可以不采用獨立的紐扣電池供電方式,統一為所有的節點提供5 V電源供電。
2 算法設計與實現
2.1 互同步算法原理
為了更好地對算法進行解釋,首先簡單介紹自組織網絡的生物原型。在自然界中有很多自組織的生物系統,在這些系統中,個體一般不具備高智商,對信息的獲取和處理能力也十分有限,盡管如此,整個系統卻可以在群體行為上呈現出令人吃驚的統一性和協同性。比如魚群、鳥群等生物群體在集體活動時,雖然沒有一個中心指揮,系統整體狀態仍然可以依賴構成系統的個體間的相互作用,形成一個有機整體。
在這里只研究這一行為實現的基礎,互同步的相關算法。算法的實現非常類似于螢火蟲同步閃爍,本設計最終呈現的效果也是模擬一個有眾多“螢火蟲”(節點)的網絡同步。
開始的時候,眾多獨立節點發光二極管的閃爍是隨機的。但是,隨著時間的推移,它們能夠慢慢地與最近的鄰居同步,隨著時間的推移,最后所有的節點都同步閃爍。
本設計采用了一種最簡單的算法來實現這一過程。首先假設所有節點的閃爍頻率是相同的,這就類似于同一種群的螢火蟲具有相同的閃爍頻率一樣,它們最初呈現的不同步其實只是各自閃爍的時間點不一樣。這樣在簡化算法實現的同時,并不失其普遍意義。
算法中設定了一個變量,閃爍能力(Power),用于表示節點閃爍的能力,這個值隨著時間會慢慢增加,當其增加到一個臨界閾值(Pth)時,節點的發光二極管開始閃爍,隨之這種能力開始逐漸“消耗”,即閃爍能力減小。閃爍能力的變化過程默認對于所有的節點都是一樣的,也就是說所有節點閃爍的固有頻率是一樣的。
通過光敏電阻,每個節點都可以感受到鄰近節點的存在,這個過程是通過單片機的ADC實現的。這些節點都依據相同的原則進行同步。如果某個節點發現它比鄰近節點閃爍得晚,那么下次它將稍稍提前閃爍,經過節點間的相互作用,所有的節點最終會在同一時刻按照相同的頻率閃爍。這個方法雖然簡單,但卻十分有效,基于它的進一步研究已經在Ad Hoc網絡的互同步中得到應用。相關算法如圖2所示。
評論