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