中 華 大 學

60  Download (0)

Full text

(1)

中 華 大 學

碩 士 論 文

題目:可由使用者程式化的無線網路感測器套件開發研究

User Programmable WINS Evaluation Kit for WINS Technology Study and Experiment

系 所 別:資訊工程學系碩士班 學號姓名:E09202011 李金樹 指導教授:王俊鑫 博士

中華民國 九十四 年 七 月

(2)
(3)
(4)
(5)
(6)

摘 要

隨著科技的發展,人類對於無線裝置的需求與依賴與日俱增,不再只是語音通訊與遙 遠控制,在許多應用領域中,人們需要使用無線裝置將遠端的感測資料(例如溫度、濕度、

聲音、加速度等物理量)傳遞回來以監控遠端環境變化;而Wireless Integrated Network Sensor (WINS,無線整合網路感測器)便是被設計出來進行此類工作的微型設備。在與WINS 有關的研究之中,大部份需要使用軟體模擬或硬體實際操作來進行研究;目前當作商品出 售的WINS套件,種類屈指可數,且其價格極高。本篇論文以最易取得的硬體加上高度可重 編程的靭體,設計出實用、低成本、容易學習使用、多功能且易擴充的WINS套件,讓初、

中級WINS使用者或學術研究者在短時間內便能在此套件上驗證自行設計的通訊協定研究成 果。

(7)

誌 謝

這篇論文能夠完成,首先必須感謝我的指導教授王俊鑫博士,在這兩年之中,不辭辛 勞的悉心指導,每當學生遇到問題時老師總是全心的協助及解惑,在此非常感謝老師的用 心,使學生完成研究所學業、培育學生成長和教授學生智慧,學生沒齒難忘此恩情永遠感 激在心。同時要感謝論文口試委員俞征武教授、林文宗教授在百忙之中蒞臨指導,在論文 上給予意見,使論文之內容更加充實完善。還要感謝系上師長們的教導和同學夥伴們互相 砥礪及鼓勵,使我順利地完成這篇論文。最後最感謝的是我的愛妻對我無怨無悔的支持與 鼓勵,使我能專注於學業上,無後顧之憂,順利完成碩士學位。在此對所有關心及幫助我 的人獻上最深的感謝與祝福,謝謝您們。

(8)

目錄

第一章、簡介 ...7

1.1 前言... 7

1.2 WINS 的硬體架構... 8

1.3 WSN 的特性... 9

1.4 WSN 的應用範疇... 11

1.5 WSN 的研究領域... 12

1.6 研究貢獻... 13

1.7 章節安排... 14

第二章、商品化 WINS 套件產品一覽 ... 16

2.1 無線感測網路解決方案套件 ... 16

2.1.1 SmartDust (Dust Networks) ... 16

2.1.2 i-Bean (Millennial Net) ... 18

2.2 兼供學術用途的 WINS 套件... 19

2.2.1 MICAz (Crossbow)... 19

2.3 開發工具-Tiny OS 之特性介紹... 21

2.4 研究之動機與目標 ... 22

第三章、可由使用者程式化的 WINS ... 23

3.1 目標功能設定... 23

3.2 系統規劃設計... 24

3.2.1 微處理器 MCU 的選擇 ... 25

3.2.2 無線收發模組(RF module)的選擇... 25

3.2.3 nRF2401 的 Direct 模式 ShockBurst 模式之介紹 ... 26

3.2.4 nRF2401 與 MCU 間的介面處理 ... 28

3.3 Firmware 設計... 29

3.3.1 User command 設計 ... 32

3.4 編撰使用者 script... 34

3.4.1 Script 編撰流程 ... 34

3.4.2 設計 LED 跑馬燈 ... 34

3.4.3 無線收發功能驗證 script 設計... 36

3.6 使用 Simple Flooding Protocol 的 WINS 設計 ... 39

3.6.1 Simple Flooding Protocol 簡介 ... 39

3.6.2 實現 Simple Flooding Protocol 的研究 ... 40

3.6.3 以 script 實現 Simple Flooding Protocol ... 41

3.7 使用本套件驗證通訊協定之效能 ... 43

3.7.1 量測延遲時間 ... 44

3.7.2 量測資料輸出量... 46

3.7.3 資料遺失率 ... 46

3.7.4 電源消耗率 ... 48

第四章、效能比較分析 ... 51

(9)

4.1 與其它 WINS 商品功能的比較分析 ... 51

4.2 實用化本 WINS 套件 ... 52

第五章、結論 ... 53

5.1 本論文貢獻 ... 53

5.2 未來努力方向... 53

第六章、參考資料 ... 55

(10)

圖表目錄:

圖 1:WINS 的基本硬體架構...8

圖 2:典型的 WSN 結構...10

圖 3:Dust Networks M1010 Mote...16

圖 4:SmartMesh Evaluation Kit ...17

圖 5:Dust Networks Smart Manager ...18

圖 6:Millennial Net iBean 2.4G Evaluation Kit ...19

圖 7:Millennial 星狀網路拓撲 ...19

圖 8:Crossbow MOTE-KIT2400 ...20

圖 9:本文 WINS 系統方塊圖...24

圖 10:nRF2401 系統方塊圖 ...25

圖 11:ShockBurst 模式的工作示意圖(從[15]中節取出)...27

圖 12:有無使用 ShockBurst 發送資料的電源消耗示意圖從[15]中節取出 ...28

圖 13:由某公司無線滑鼠接收器跳線以使用 nRF2401 ...29

圖 14:Firmware 流程圖與 MCU 內記憶體使用圖 ...30

圖 15:MCU 內記憶體使用圖及使用者變數位址表...31

圖 16:將 node 在活動與睡眠間切換(從[13]中節取出) ...39

圖 17:SFP 的狀態圖(從[13]中節取出) ...40

圖 18:SFP 的程式流程圖 ...41

圖 19:由 firmware 啟動計時器以 A, B 兩個節點完成延遲時間量測 ...44

圖 20:由第三個節點擔任計時器完成延遲時間量測...45

圖 21:利用 time stamp 完成延遲時間量測 ...45

圖 22:由第三個節點擔任計數器完成資料輸出量量測...46

圖 23:計算資料遺失率的流程圖...47

圖 24:計算資料遺失率的計數器示意圖...48

圖 25:量測電源消耗流程圖...49

表格 1:Dust Networks M1010 Mote 之規格...17

表格 2:Millennial Net iBean 2.4G Evaluation Kit 之規格 ...18

表格 3:Crossbow MOTE-KIT2400 之規格 ...20

表格 4:nRF2401 與 MCU 之接線...27

表格 5:本篇論文提供之命令表 ...32

表格 6:跑馬燈之程式設計命令表 ...35

表格 7:無線收發功能驗證 script 設計命令表...37

表格 8:SFP 之程式設計命令表 ...41

表格 9:nRF2401 工作狀態[15] ...48

表格 10:本篇論文 WINS 與其他三種 WINS 之效能比較 ...51

(11)

第一章、簡介

1.1 前言

隨著科技的發展,人類對於無線裝置的需求與依賴與日俱增,不再只是語音通訊與遙遠 控制,在許多應用領域中,人們需要使用無線裝置將遠端的感測資料(例如溫度、濕度、聲 音、加速度等物理量)傳遞回來以監控遠端環境變化;而 Wireless Integrated Network Sensor (WINS,無線整合網路感測器)[1]便是被設計出來進行此類工作的微型設備,並為

近年來資訊科學系所及研究團隊最熱門的研究主題之一。

傳統式的有線固定式感測監測系統利用線路將 Sensor(感測器, 一種微型電子元件,能 將其所感知的物理量轉換成電量變化以供電子裝置處理)所感測到的監測資料傳送到資料 收集器,然後再傳遞到電腦系統中以做處理,其感測網路佈線的複雜度與感測點的數量成 正比,不但施工時複雜耗時,感測網路啟用之後的線路維護亦需仰賴專業人員。

Wireless Sensor Network(WSN [2],無線感測器網路)係由一個至數個無線資料收集器 加上大量的 WINS 組成之網路系統,各元件之通訊方式為無線方式,可省下佈線的成本及 時間。WSN 為製造業、運輸業、軍事、醫療看護、環境監測、保全應用帶來了新的契機。

在與 WINS 有關的研究之中,除了研發感測器硬體這個領域之外,其它的領域均需要 使用軟體模擬或硬體實際操作來進行研究;目前當作商品出售的 WINS 套件,種類屈指可 數,且其價格高得令人咋舌,約莫為九萬元台幣一套[11](參閱第二章之 survey)。本篇論文 的動機即為嘗試以最易取得的硬體加上高度可重編程的靭體,設計出實用、低成本、容易 學習使用、多功能且易擴充的 WINS 套件,讓初、中級 WINS 使用者或學術研究者在短時 間內便能在此套件上驗證自行設計的通訊協定研究成果。

(12)

1.2 WINS 的硬體架構

WINS 的硬體(以下文章簡稱「節點」)在無線網路架構下,設計成省電、低價、小型,

且具有感測能力為目標[2],它就像一部小型的電腦,能獨立工作,並加上了感測及無線傳 輸的能力,將感測資料做簡單運算之後以無線通訊方式傳遞到資料收集器,最後,再根據 資料收集器得到之資料,分析出感測區域的各物理量變化,並做出回應,最後發展成各式 各樣十分實用的運用。

圖 1:WINS 的基本硬體架構

如同圖 1 所示,一個 WINS 的硬體基本上含下列四個部份[2]:

z 處理單元 (Processing unit):此單元分兩個部份,一為處理元件(processor),負責 執行預先設計好的程式碼或是由後端伺服器所發出之命令,控制感測器內的各個元 件,將收集到之資料彙整後,透過傳輸單位發送出去;另一部份為儲存元件

(Storage),可將收集到的感測資料暫存,以在預先設計好的時間發送出去。

z 傳輸單位 (Transceiver unit):負責以紅外線(Infrared)、無線電波(Radio)等傳輸媒 介來連接感測器與其他感測器或無線資料收集器的溝通。

z 能量裝置 (Power unit):提供電源給節點上的所有元件,通常是以電池當電源;許 多以長時間監控或硬體小型化之設計為目標者甚至會加上如太陽能[3]電板以加長 其裝置的使用時間。

(13)

z 感測裝置 (Sensing unit):此裝置包含兩個部份,一是能感知外界環境變化的感測 器(sensor);二是以及能將感測器由物理量轉換出來的類比量(analog)轉換成資訊 系統可處理的數位(digital)訊號之類比/數位轉換器(ADC, Analog-to-Digital

Converters),以供處理單元運算處理。

而為配合各種不同之用途,有些感測器會配置移動裝置(mobilizer)以提供感測器變更佈 屬位置的能力;或能源產生裝置(power generator)以增加感測器使用時間;及定位裝置 (location finding system, 提供精確定位的能力)等。

1.3 WSN 的特性

在[2]之中,作者列出了以下幾點特性,說明無線感測器網路它與其他無線網路(Wireless Network, 例如 WLAN 無線區域網路, MANET Mobile Ad Hoc Network)的不同之處:

1. 硬體、軟體因用途不同而各別客製化的,例如用於醫療看護的軟硬體(需要較低無 線發射功率,及心跳體溫等感知能力)便不適合於用在工廠監測(需要較強無線發射 功率,及災害感知能力)。

2. 同一網路中節點個數可能十分多且同一空間中節點密度可能十分高(20 節點/立方 公尺)[3]:增加節點密度的理由[4]可能有:

i、 利用較多的節點監測同一區域可增加準確度。

ii、 利用較多的節點輪流工作可以延長監測系統整體可用時間。

iii、 較多的節點可能有較多較好的資料傳遞路徑(path)選擇。

3. 網路拓撲(topology)可能常改變:某些應用中,節點的位置會隨著環境或是被監測 對象移動;節點間的資料傳遞路徑(path)可能會中斷,有備援路徑的支援或重新尋 找新的路徑。

4. 節點可能不像其他無線網路具有完整 ID 地址(例 MAC address):因為節點數量很

(14)

多,維護軟體內部的 ID 地址儲存表格便成為一個龐大的負擔,且將長串地址透過 無線方式送出亦會多消耗能源;故多數 WSN 會定義自己網路的短標籤(label)僅供 在本 WSN 識別用[5]。

5. 通訊 traffic 模式為多對一:WSN 大部份的應用為資料收集,資料傳送的最終目的 地為觀測者(observer),圖 2 所示為一個 WSN 架構的例子[2][13],各節點可以直 接將資料傳至資料收集器或是透過鄰近節點傳遞至資料收集器(因距離較遠),最後 再由資料收集器(被設計為傳遞距離較遠)傳至觀測者處理。

圖 2:典型的 WSN 結構

6. 感測器節點的硬體配備是受限的[2]:在某些應用中節點尺寸必須要小,才能達成監 測(或不易被全部清除)的目的,所以感測器節點硬體的記憶體容量、計算能力、及 電源均因此體積大小受限。

7. 感測器節點可能在任務達成之後不被回收使用[2]:在某些應用上,大量節點被散播 在惡劣的環境中以進行數據收集,任務完成之後因回收成本高或節點硬體損壞或電 池不能更換而不進行回收,與其他無線網路節點的可重複使用特性顯著不同。

(15)

1.4 WSN 的應用範疇

無線感測器網路的應用領域十分的廣泛,在生物、醫學、地球科學、軍事、工業、服務 業、緊急救援等領域,皆有應用之實例:

z 生物:將有定位裝置的節點固定在被研究的動物身上,追踪其行動以了解該種動物 之行為。

z 地球科學:在一區域散佈感測器節點,收集環境參數之變化;甚或讓體積小重量輕 的節點隨波逐流、與風起舞,以研究一些地球科學的現象。

z 建築物安全[7]:將裝置有加速規感測器(Accelerometer)的節點固定在建物的柱子 上,當柱子承受較大壓力或地震時位移,這些細微變化會被記錄下來,以供評估建 築物健康狀況,而不需大規模地將包覆在樑柱外的裝潢破壞檢視建物結構。

z 軍事[8]:以無人載具甚或導彈將多監測性能的節點散佈在敵情不明的戰區,監聽、

記錄經過感測器節點附近的人及車對地面造成的震動頻率及大小,能得知監測區域 的敵軍人員車輛調遣狀況,這能部份代替以尖兵或秘密行動以獲得軍情的傳統方 式,以減少特遣人員的折損。

z 旅館業[9]:取代傳統的有線網路建置,將裝置有以下幾種模組的 WINS 安置在每 個客房:溫度感測與控制(與空調系統結合)模組、燈光控制模組、無線門鈴模組、

勿打擾設定模組、總台服務呼叫模組、客房協助模組(Guestroom Digital Assistants, GDA)、中控門鎖控制模組(結合門禁卡)、客房門未關妥偵測模組(door-ajar

detection)、小酒吧(mini-bar)服務模組、煙霧偵測模組等。如此一來除了傳統的有 線電話網路無法以此無線網路方式取代之外,所有的客房管理服務系統均用無線感 測網路完成:最大的好處便是:

i、 具佈置網路之彈性:不管旅館的建物如何規劃,均可佈置無線感測網路。

ii、 具網路規模之彈性:不管旅館的規模是大是小或是未來欲做擴建,均可經由直

(16)

接加入無線感測網路節點。

iii、 網路品質穩定且強健:不會因為線路故障(例如鼠害、施工損壞或單機線路短 路)等癱瘓客房服務系統,而造成賓客抱怨。

iv、 快速佈建:網路建置時間大幅縮減。

1.5 WSN 的研究領域

與無線感測器網路相關的研究領域,在[2]之中列出了以下幾類:

z 故障的忍受度(fault tolerance):網路中的某些節點可能因故障或環境干擾而不能被 使用,但此節點的故障不能癱瘓整個網路之運作。

z Scalability:在研究地球科學現象時所佈屬的節點可能成千個,有些應用中甚至會 到百萬個。必須要有解決此種大數量節點的方案,此方案亦必須解決高節點密度的 難題。

z 節點成本:因為佈屬的的數量極多,節點單價便是整體網路成本的重要考量;若無 線網路的整體成本高於傳統有線網路,無線網路便不會被採用。

z 硬體限制(hardware constraints):在 1.2 章節提到的幾個硬體元器件(處理單元、

傳輸單位、能量裝置、感測裝置)均要放置入極小的容器(機殼)內,甚至其整體尺寸 有像米粒一樣小的[6],因此必須研究將節點的硬體部份製作成高度整合(例如所有 機電功能整合在一個積體電路上)及極小化(例如將體積最大的感測器縮小)、極省電 (例如使用奈米製程降低功率消耗)、防震、防水(例如膠封)等因應各種任務的需求。

z 感測器網路的拓樸(topology):成千上萬的感測器節點被佈屬在感測區內,節點間 的距離可能非常短,故佈屬此種高密度的網路時便要詳細規劃;佈屬網路有三個部 份:

i、 佈屬期:節點佈屬可用飛行器散佈或人工個別置放。

(17)

ii、 後佈屬期:佈屬完成之後,網路拓樸會因節點的位置、障礙物、干擾、特定用 途等而須作調整。

iii、 重新佈屬期及新增節點:新增節點可在被用來取代故障的節點。

z 感測器網路的工作環境(environment):感測器網路是被置放在欲監視的自然現象 之內或附近,可能是在深海內,在化學污染物內,或是在敵軍的土地上;各種應用 環境均要有特別設計的機構來確保感測器節點能順利完成任務。

z 傳輸媒介(transmission media):無線網路資料傳輸時是使用無線的媒介;這些媒 介可能是紅外線、電磁波、或光束。為了讓感測器節點在全球都通用,則必須選擇 適當的電磁波頻率,也必須考量對同波段設備的干擾。

z 感測器網路的省電機制(energy saving):由於許多感測器網路的佈置的成本極高、

根本無法重新佈置或只有一次佈置機會(例如在軍事的運用),或是節點單價高(裝置 許多精密感測設備);在這幾種應用情形,每個節點的電源壽命必須能維持很久,

故研究如何在資料傳送率低的時候將極耗電的無線模組關閉,並在適當時候打開,

若關閉的時間長雖最能達到省電,但有可能讓鄰近節點欲透過本節點轉交(forward) 的資料遺失;若開關的頻率高,則大部份的能源會消耗在開關模組的動作上。另外 若能將數個節點欲傳送的資料先收集、融合(data fusion)後才發送出去,可減少資 料封包的數量,這也是一種延長整體網路壽命的方式。

1.6 研究貢獻

本篇論文所產出之 WINS,有以下幾點特色:

z 具有 WINS 的基本硬體要素,且符合學習平台需求:本篇論文設計之硬體系統有無 線收發功能,輸出入擴充功能等;並加上手動資料輸入裝置(DIP 開關)及 LED 顯示 裝置以供使用者在實作及驗證階段進行除錯之用。

z 免學習 MCU(Microcontroller 微處理器)組合語言(MCU assembly study-free):本

(18)

篇論文成功地以直譯器(interpreter)之設計大幅縮短了使用者與硬體之間的距離,

使用者不需學習微處理機的組合語言,只需查表找出直譯器已提供之控制系統的指 令,組合出 script(腳本)便可直接控制硬體。

z

可學習及實作 layer2 上的通訊協定:使用 2.4GHz 之無線收發模組,其頻道、信號 功率、收發模式切換、省電模式切換等均可由直譯器命令控制,使用者可以直接寫 作 layer2 的 protocols。

z

可評估通信協定中的數個效能參數:可實際以硬體加上靭體方式量測延遟時間 (latency)、資料輸出量(throughput)、資料遺失率(data lost)、電源消耗率(power consumption)等效能參數;且由於已具無線收發能力,可利用變更系統置放位置實 際模擬障礙物,弱電源、臨界通訊距離、天線相互干涉耦合(coupling)等等在軟體 上不易模擬的影響。

z

容易擴充的硬體:預留兩個 8 bit 的輸出入埠,讓使用者自行以直譯器命令控制,

並且不預設其功能,使用者可以利用此輸出入埠擴充 WINS 的用途:例如加上移動 載具,讓節點具移動能力,以自行運動至最佳位置形成最佳的網路佈置;遠程遙控 其他電子電器裝置;執行保全監控等。

相較於已商業化之 WINS 套件產品,本篇論文之 WINS 套件多了可評估通信協定中的 數個效能參數的能力,只是少了硬體小型化及精緻化的商業軟體包裝;依成本計算,本套 件是真正可以讓每位資訊系學生購買得起的基本學習工具;就像高中高職校人手一台三用 電表踏入電子學的領域,本 WINS 可以協助任何初探 WSN 的人士迅速跨過實作的門檻,

並將心力花費在研究開發更深入的領域上。

1.7 章節安排

(19)

本篇論文共分成五個章節,第二章節介紹目前業界有公開販售的 WINS 開發套件,其 規格功能及價格等資訊;第三章節會介紹開發此高度可重編程 WINS 之設計過程與實際快 速實作例子;第四章節會將本篇論文開發成果與業界現有 WINS 套件作比較;第五章節為 本篇論文的結論及未來研究的努力方向。

(20)

第二章、商品化 WINS 套件產品一覽

目前已商品化之無線網路感測器套件依使用客戶可以分成兩類:

1. 無線感測網路解決方案(WSN solution)套件:供系統開發公司或研究機構採購,以 置入其為下游客戶設計之解決方案中,這類套件強調載用預先設計好之完善通訊協 定(客戶不需再設計通訊協定,只需調整參數便可),及提供立即可用(Ready-To-Use) 的預設後端軟體(server software)。

2. 兼供學術用途的 WINS 套件:這類套件提供完整開發及除錯軟體[10],及多種輸入 (感測器)輸出(控制端口)組合模組選擇,可成為學習及開發 WINS 的平台。

2.1 無線感測網路解決方案套件

2.1.1 SmartDust (Dust Networks)

圖 3:Dust Networks M1010 Mote

由 Dust Networks 公司所製造銷售之 SmartMesh 產品及 Evaluation Kit [11]如圖 3~5,

根據其產品介紹,列出其規格如表格 1 所示:

(21)

表格 1:Dust Networks M1010 Mote1之規格

項目 規格 / 功能

尺寸 3.048cm x 2.794cm (1.2”x1.1”)

電源 z 極低電源供應需求,只需 3V 便可工作 無線能力 z 使用 902MHz 至 928MHz 跳頻展頻通訊

z 接收靈敏度-93dBm

預運算能力 z 每次傳輸中可攜帶 9 個有時間標記的感測器量測資料 z 每次執行感測器類比量測可做多至 255 次之平均值運算 軟體 z 與 SmartMesh 軟體高度整合

z 提供簡單、完備的解決方案以體驗 SmartMesh 之能力 z 提供軟體及一個快速解決方案,讓使用者可在 30 分鐘

內完成資料收集網路的軟硬體架設 擴充能力 z 提供類比、數位及串列傳輸方式

通訊協定管理 z 具有自動路由規劃、自動路由失效恢復功能、多路徑路 由

傳輸加密 z 使用 128 bit 加密機制

附件 z 1 個 SmartMesh Manager (提供 QoS 功能管控諸多的 mote,協調路由,收集從各 mote 送出之資料封包,並 將資料用 XML 格式由 Ethernet 網路送出)

z 含 12 個 Evaluation Mote (將 M1010 Mote module 作業 所需之電源、開關接線放入專用的塑料外殼中,以供實 驗及散佈用)

z 含 3 個 Sensor Plug-in (含溫度、光照度及傾斜感測等三 種感測器,並自備一個 AAA 規格的電源;將 Sensor Plug-in 接上 Mote 之後可讓 Mote 立刻具有環境感測能 力)

售價 約 9 萬元台幣(3000 美金)

圖 4:SmartMesh Evaluation Kit

(22)

圖 5:Dust Networks Smart Manager

1

Mote 這個名詞在英文之中是灰塵、塵埃的意思,在無線網路感測器概念萌芽,美國柏克萊大學發表了 SmartDust 研究成果後,mote 這名詞在便成為 WSN 中對於單個節點的稱呼

2.1.2 i-Bean (Millennial Net)

由 Millennial Net 公司所製造銷售之 i-Bean 產品及 Evaluation Kit [9]如圖 6,根據其產 品介紹,列出其規格如表格 2 所示:

表格 2:Millennial Net iBean 2.4G Evaluation Kit 之規格

項目 規格 / 功能

尺寸 2 cm x 2cm

電源 z 1 年電池壽命(鈕扣電池)

無線能力 z 可選用 916MHz 或 2.4GHz 頻段通訊

預運算能力 無

擴充能力 z 含有 RS-232、RS-485、Ethernet 及 802.11 等介面

軟體 z 提供軟體及解決方案

通訊協定管理 z 使用 Millennial 自行研發之 protocol 及星狀網路拓撲(參 考圖 7),提供可靠的資料傳輸

傳輸加密 無

附件 z i-Bean Gateway 用以連結上主機、網路甚至 internet;

可監視無線網路效能,調整網路參數。整個網路中可以 架設超過一台 Gateway 以減少多餘運算及增加處理速 度

z i-Bean Router 用以增加網路的涵蓋範圍、繞過障礙物、

在擁擠或備故障時提供備援;亦提供 sensor 或觸發輸入 的接口以實現與 Endpoint 相同的資料收集功能

(23)

z i-Bean Endpoint 內含微處理機、無線收發線路、輸出入 接口,尺寸為 2cm * 2cm,可輕易整合入 sensor 或 actuator;並能以鈕扣型的電池維持運行超過一年 z 套件中含 1 個 i-Bean Gateway、3 個 i-Bean Router、

5 個 i-Bean Endpoint 附輸出入接線板及專用軟體 售價 約 14 萬元台幣(4500 美金)

圖 6:Millennial Net iBean 2.4G Evaluation Kit

圖 7:Millennial 星狀網路拓撲

2.2 兼供學術用途的 WINS 套件

2.2.1 MICAz (Crossbow)

由 Crossbow 公司所製造銷售之 MOTE-KIT2400 產品[10]如圖 8,根據其產品介紹,功 能設定是同時適合一般使用者及 OEM 廠商的,列出其規格如表格 3 所示:

(24)

表格 3:Crossbow MOTE-KIT2400 之規格

項目 規格 / 功能

尺寸 77mm x 77mm x 51mm

電源 z AAA 電池

無線能力 z 使用 ISM(2.4GHz)或 433MHz 頻段、雙向通訊 z 發射功率範圍-20dBm 至+10dBm

z 接收靈敏度-101dBm 預運算能力 無 (可由使用者撰寫程式支援) 擴充能力 z 使用可支援 TinyOS 的微處理器

z 內建可儲存高達 10 萬筆量測記錄的記憶體,可執行長 時間的環境監測任務後再 upload 至 host (用在當成環境 監測器時才如此使用;WSN 中之資料通常是量測結束後 一定時間內便發送出去,不需要大記憶體以保留量測記 錄)

z 可無線更新內部的程式碼

z 提供多種 Sensor 輸入選項,含精密電熱調節器、光感 測器、可另外接訊號輸入的資料收集器、氣壓、濕度、

移動感知、GPS、加速規、麥克風等

軟體 z 可下載多種免費軟體(Freeware)以執行量測記錄、網路 組態監視等功能

通訊協定管理 z 需程式設計

傳輸加密 無

附件 z 套件內含 8 個 Mote 及感測器、資料收集器線路板,及 1 個基地台

售價 約 9 萬元台幣(3000 美金)

圖 8:Crossbow MOTE-KIT2400

(25)

2.3 開發工具-Tiny OS 之特性介紹

Tiny OS 係由 Crossbow 開發出來的小型 OS,專為開發 MSN / WSN 等類的小型嵌入 式系統的設計,主要由 nesC2語言開發,Tiny OS 有以下幾點特性:

z 基於元件為基礎(component-based) z 專為嵌入式系統設計

z 類 C 語言之語法

z 可以在編譯階段偵測出 data race3[12]的錯誤

以下從 Tiny OS 網站中擷取出其「初學級」的程式碼:其功能為控制 Mote 上的 LED,

重覆進行「點亮一秒、熄滅一秒」的動作

(26)

從上方列出之程式碼,我們了解到,若要能隨心所欲操作 TinyOS,設計者必須對 O.O.(物 件導向)有相當程度的基礎。而對於資訊學系的初學者;亦有可能立了一個高門檻,因為物 件導向的概念設計屬進階的知識,初學者可能無法在短時間內了解,增加了學習曲線。

2

nesC:念”Nes-see”,從 C 語言延伸而來,為實現結構化的軟體概念及在資源非常有限的硬體平台下工作而設計 的語言,參閱[14]。

3

資料競走:在 multi-thread 的程式中出現 A 與 B 兩個 thread 同時 access 同一個記憶體資料;例如 A 要將變數內 容加 10 (Var_A=Var_A+10),B 要加 20 (Var_A=Var_A+20),兩個 thread 未協調,使得 A 與 B 都讀到未變更前之 資料,處理完畢後各別將變數更新,變數內容最後是錯誤的

2.4 研究之動機與目標

由本章中列出的數種 WINS 套件中,可瞭解目前學術界缺乏一個供 WSN 學習者使用的 基本套件,前面所列的幾種產品,並不適合於當成教學平台,因為除了 Crossbow 的 MICAz 之外,其餘套件之設計均是以商業應用為考量,可讓採購套件的研發單位立即開發出符合 客戶需求的解決方案;其 layer 2 甚至 layer 3 通訊協定的部份均未開放給使用者自訂或開 發通訊協定,故無法當成研發通訊協定的硬體平台。而 MICAz 的 OS 平台為 TinyOS,其 基於 nesC 的高階語言結構化設計雖可讓程式易讀易維護,但學習 TinyOS 便又成了初學者 的一個負擔。研發一個可實作 layer 2 的 WINS 套件成為 WSN 學習者的教學平台便成為本 篇論文的目標。

(27)

第三章、可由使用者程式化的 WINS

欲設計一套硬體靭體組合成之系統,必須先從設定目標系統功能著手,再根據所列出的 功能設計出適用之系統硬體平台;最後再開發靭體配合此硬體平台達成所有目標功能。在 本章節中會依此程序逐步開發出一套無線網路感測器套件。

3.1 目標功能設定

基於使用者對於電子技術的了解多寡差異非常大,設計此一系統時需讓所有階層的使用 者都覺得容易學習、容易使用;本系統所設定之目標為:

A. 本系統是一個硬體(hardware)、靭體(firmware)的組合 B. 在 2.4GHz 的無線頻段(band)發送與接收資料

C. 使用者可完整控制感測器節點行為,包含:

i. 接收資料 ii. 發送資料

iii. 調整 RF 模組的行為及工作模式:設定頻道(channel),設定資料長度,設 定發射功率,設定 CRC 檢查等

iv. 搬移資料:在記憶體之間搬動資料

v. 數學運算:對資料進行加法減法等數學運算

vi. 邏輯運算:對資料進行 AND、OR、NOT、XOR、Shift 等運算

vii. 流程分支:無條件跳躍、相等時跳躍、不相等時跳躍、位元符合時跳躍等 viii. 時間控制:設定計時器、啟動/停止計時器、計時器結束時跳躍

ix. 輸出入埠之控制:從輸入埠讀入資料(例如讀入感測器溫度資料)、往輸出 埠輸出資料(例如控制開關)

D. 可快速實作出學術界已發表之通訊協定並可利用硬體及靭體的方法來進行通

(28)

訊協定效能的量測

3.2 系統規劃設計

從目標功能之設定(C)中知道,使用者可隨心所欲控制節點的行為,意謂使用者必須自 行規劃節點的行為模式及工作流程,而秉持「易學易用」的原則,本系統必須簡化使用者 撰寫程式(programming)的工作;為了降低使用本系統的門檻,因此需設計一個高彈性的系 統:在標準的 WINS 之 firmware 架構中加入解釋使用者指令(user command)功能,以直譯 器(interpreter)的方式逐步執行使用者要求的動作;如此一來,使用者不需先熟練本系統使 用之 MCU 之組合語言,只要參照本系統提供之命令表逐步完成對本系統的控制腳本 (script,由與硬體無關的一連串系統提供之高階命令組合而成,取代低階語言以控制系統的 行為),便可任意操作本系統。而硬體部份則依照標準 WINS 設計如圖 9,具有微處理器、

無線收發模組、及電源供應設備等,輸出入埠(I/O)則可提供未來感測器(sensor)部份及其他 外部設備接入(例如移動載具的馬達控制器、超音波偵測設備、紅外線偵測開關、GPS 輸入 設備、小型鍵盤等),以擴充 WINS 之功能:

圖 9:本文 WINS 系統方塊圖

(29)

3.2.1 微處理器 MCU 的選擇

從可支援之資源數量來看,MCS-51 系列 MCU 無疑是最成功且最易取得的 MCU;本 篇論文中所使用的便是 89S52,其含有三個 Timer/Counter、UART(串列通訊埠)、256 byte RAM、8K Flash ROM,以 MCS-51 為平台做為概念性電子產品之研發已十分足夠。雖然 89S52 的功能在所有 MCS-51 系列中只能算是入門級機種,但開發靭體過程中所需要的 MCU Emulator4 (微處理機模擬器)及 ICE 5 (In-Circuit Emulator,即時微處理機模擬器)是最 容易取得的,這也降低了系統整體的開發成本。

4

微處理機模擬器,模擬微處理機的小型開發設備,使用者(靭體設計者)直接將寫好的靭體下載入模擬器,模擬器直 接插在實體線路板上的微處理插座,如此可加速新靭體的驗證過程;傳統的方法是必須將微處理機從線路板上拆 下,進行靭體重新燒錄後再裝回線路板,過程繁複且可能損壞處理器腳位

5

即時微處理機模擬器,模擬微處理機的小型開發設備,比 MCU Emulator 微處理機模擬器多了即時模擬的功能,

使用者(靭體設計者)可以在靭體的執行過程中隨時暫停執行,觀察 MCU 內部記憶體的裝態,變更暫存器內容,設 定下一個指令等;如此一來使用者可以立即找出程式中的臭蟲(Bug),大大減少開發驗證靭體的時間

3.2.2 無線收發模組(RF module)的選擇

圖 10:nRF2401 系統方塊圖

(30)

由於積體電路科技的高度發展與消費電子的需求量增加,在系統方塊中的 RF Module (無線收發模組),已有積體電路設計廠商將其整合成尺寸小、功能強的晶片;本篇論文置入 Nordic Semiconductor 公司生產之 nRF2401 來處理無線收發功能。nRF2401 為一高度整 合的無線收發晶片,它化繁為簡,將原本繁複的無線調變、解調、編碼、解碼、放大線路 全部收入在此晶片中,晶片外只需少許零件配合,便可達成在 2.4GHz 頻帶(超過 79 個頻 道)無線收發資料的功能。本系統使用其 ShockBurst™模式來簡化 Layer1 及 Layer2 部份。

Host 端對其操作只需用 CLK、DATA 二條線傳輸資料,並以 CS、CE 啟動收發功能。參考 圖 10 所示,nRF2401 已含有無線收發迴路,調變/解調,雙接收核心,CRC 計算器等模 組,並可供使用者設定 nRF2401 的工作模式(發送/接收/Direct mode/ShockBurst) 、 RF address、RF power、CRC 計算功能、資料長度等參數。

3.2.3 nRF2401 的 Direct 模式 ShockBurst 模式之介紹

nRF2401 提供了兩種無線收發模式:Direct Mode 與 ShockBurst Mode

z Direct Mode:微處理器直接將資料以串列方式送入 nRF2401,nRF2401 便直接以 無線方式送出資料,MCU 送資料入 nRF2401 時的速度便是 nRF2401 無線發送的 速度,此一方法的最大缺點便是所有的資料框架(frame)部份都要 MCU 自行處理,

包含傳輸速度控制、header 處理、CRC 計算、接收時的雜訊過濾處理等;而好處 便是能直接控制無線模組,彈性較大6

z ShockBurst Mode:如圖 11 所示,微處理器用串列的方式將欲送出的資料傳入 nRF2401,再啟動 nRF2401 以無線方式發送出資料,nRF2401 在發送資料時會加入 內部已設定好的 RF Address 及根據欲送出之資料算出之 CRC,並在無線模組備妥 (steady & ready)之後,以高達 1M bps 的傳輸速度將資料傳送出去。將 nRF2401

(31)

設定在 ShockBurst 的接收模式時,nRF2401 會自行監聽所設定的頻道,當收到資 料封包時,會自動檢查封包中 RF Address 是否與自己符合,並檢查 CRC 是否正確,

若以上兩個條件成立,nRF2401 便會以 DR1(在本系統中接至 MCU 的 DR1 名稱為 NDR1,請參考表格 4)知會 MCU,MCU 再用串列方式取回已接收資料便可。

圖 11:ShockBurst 模式的工作示意圖(從[

15

]中節取出) 表格 4:nRF2401 與 MCU 之接線

nRF2401 信號線 接線方式 Firmware 內

信號名稱

DR1 由電晶體轉換信號位準至 5V,接至 MCU P1.5 NDR1

CLK1 由兩電阻將 MCU P1.2 信號降至 3V 位準 NCLK

CS 由兩電阻將 MCU P1.6 信號降至 3V 位準 NCS

CE 由兩電阻將 MCU P1.7 信號降至 3V 位準 NCE

PWR UP 由兩電阻將 MCU P1.1 信號降至 3V 位準 NPWR

DATA (從 MCU 輸入) 由兩電阻將 MCU P1.3 信號降至 3V 位準 NDOut

DATA (輸出至 MCU) 由電晶體轉換信號位準至 5V,接至 MCU P1.4 NDIn

使用 ShockBurst Mode 有以下幾個好處[15]:

i、 大大地節省 MCU 的工作量:MCU 不直接控制無線收發模組的時序

(timing),不必理會外來的無線電雜訊干擾,只需將資料送給 nRF2401 便 可發送資料,而接收時 nRF2401 會將所有干擾過濾,只在資料完整送達 時知會 MCU 領取

ii、 節省電源消耗:為了將資料送出,MCU 必須將無線模組開啟,而開啟的期 間是整個系統消耗功率最大的時候,開啟的時間愈短則愈省電。如同圖 12 所示,若同樣使用 10Kbps 的 MCU 來處理資料發送,使用 ShockBurst 的 方式發送共 2000 位元(含資料與 header 及 CRC 等),只需要 2 毫秒便可 全部傳送完畢,然後將無線模組關閉以節省電力;以傳統未使用

(32)

ShockBurst 的方式發送同樣長度的資料,則需要 200 毫秒,經簡單的計 算,使用 ShockBurst 可節省消耗在無線模組的能源 99%

iii、 節省系統成本:用入門級的低階 MCU 便可達成 1Mbps 的資料傳送速度,

不需以高價的 MCU 達到此功能

iv、 降低無線傳輸碰撞的機率:由於使用高速度在短時間完成傳輸,各無線裝 置的通訊在空中發生碰撞的機率便大大地降低(時間重疊機率降低)

圖 12:有無使用 ShockBurst 發送資料的電源消耗示意圖從[

15

]中節取出

6

在監聽同一頻道的無線通訊時,Direct Mode 會直接將所收到的任何信號(包含雜訊)反應在 nRF2401 的 DATA 腳 上,而 MCU 便可了解目前空中通訊是否繁忙(包含有碰撞的情形),若是 MCU 之 firmware 有置入 carrier sense 的機制,便不會在這時將資料無線發送出去(那只會造成更嚴重的碰撞)。而若使用 ShockBurst,MCU 只會在 nRF2401 解出一筆完整未受到碰撞的資料封包時才被告知,因為碰撞的原因,nRF2401 無法收到完整封包,便 不會透過 NDR1 讓 MCU 知道目前空中通訊是否繁忙;因此會出現一種情況:空中通訊有碰撞,MCU 未被知會,

以為現在空中無通訊,便在自己的競爭週期結束後逕自送出資料,結果當然又是出現碰撞。

3.2.4 nRF2401 與 MCU 間的介面處理

nRF2401 與 MCU 間的通訊共用五條訊號,分別是 DR1, CLK1, DATA, CS, CE,其中 的 DATA 線為雙向,而 MCU 的輸出入埠中並無提供雙向的訊號線(除拿來作串列通訊的功 能之外),因此必須將 DATA 線的輸入與輸出功能分開,設計接線方式表格 4 所示:

因為目前 nRF2401 所提供的包裝並無 DIP 型式,為施工方便,選擇修改某知名滑鼠生

(33)

產廠商用在無線滑鼠上之接收器,將其線路板上原有之 MCU 移除,以跳線方式完成與本 板 MCU 接線,如圖 13 所示:

圖 13:由某公司無線滑鼠接收器跳線以使用 nRF2401

3.3 Firmware 設計

有別於傳統單晶片系統的 firmware 設計,本系統之 firmware 為一個直譯器

(interpreter);在主程式 (main loop) 中不斷地重複做解譯使用者命令、執行使用者命令的 工作,其流程圖如圖 14 所示。在程式執行之初,會將原本定義在程式裡面的使用者腳本 (script)全部複製到主記憶體 RAM(位址為 080H~0FFH,參考圖 15)之中,然後每次從 RAM 之中已載入的腳本取得使用者命令,接著呼叫相對應的副程式(例如時間延遲)以執行使用者 要求的動作。將 script 放在 RAM 的主要理由是:未來可設計成直接由 RS-232 甚至從無線 模組收到的資料取代 RAM 之中的 script,達到「空中換碼」或是「空中更新 script」的功 能。程式藉由一個 CMD Pointer 指標來記錄目前執行到那一個使用者命令,一個使用者命 令由兩個 byte 組成,放在 RAM 中的第一個命令其「列號碼」為 0,第二個命令為列號碼

(34)

為 1,依此類推,當執行到「跳躍」命令時,便是設定 CMD Pointer(Command Pointer 命 令指針)的內容,這會讓 MCU 跳到指定的列號碼繼續執行。

Start

Initiation

Reset User CMD pointer

Read User CMD

Execute User CMD

CMD ==

Reset ?

Increase CMD pointer Yes

No Firmware flow

圖 14:Firmware 流程圖與 MCU 內記憶體使用圖

(35)

System Working Registers System Variables

User Variables

System Buffers

User Command Area RAM allocation

00H 10H

30H

50H

80H

FFH

圖 15:MCU 內記憶體使用圖及使用者變數位址表

除了記憶體的安排之外,本篇論文還設定了 32 個使用者變數(暫存器),如圖 15 右側表 格所示,從記憶體位址 30H 至 4FH 共有 32 個位址可讓使用者隨心所欲地控制,以呼叫直 譯器命令操控這些變數內容;在 4EH 這個暫存器稱為 Accumulator(Acc.),許多邏輯部份 的運算與數學運算是必須靠這個暫存器完成的,而 4FH 這個暫存器稱為 Base,通常是配 合 Acc.進行加減乘除運算時使用,例如加法運算時 Base 便會保存進位狀態。在 4EH 與 4FH 這裡有特別的設計,就是使用者亦可以用 Reg30 來操作時 Acc.,可以用 Reg31 來操作時 Base,這增加了許多寫作程序時的彈性。

(36)

3.3.1 User command 設計

為了使本篇論文之 WINS 能讓使用者隨心所欲地控制,執行 3.1 章節所定義之目標,

本篇論文設計了一些類似高階語言直譯器之命令供使用者呼叫以控制 WINS 的動作;這些 命令種類涵蓋 I/O 控制、延遲、位元操作、數學運算、邏輯運算,流程分支、無線模組控 制等功能。

本系統提供的一個命令由兩個 byte 組成,第一個 byte 的高 5 bit 為命令的 Index,低 3 bit 為第一組 parameter 或稱為 sub-command。第二個 byte 為第二組 parameter。以延遲 控制為例,只要將 0Fh, 0D0h 放在 User Command Area 中,直譯器便會執行 delay 500mS 的動作,這是因為第一個 byte 的高 5 bit 為 00001 時 firmware 會呼叫延遲副程序,而低 3 bit 與第二個 byte 之 8 個 bit 合起來變成 07D0H,換成十進制成為 2000,而延遲副程序的時 間單位為 250us,以 2000 為參數呼叫便會延遲 0.5 秒。支援的命令如表格 5 所列出,目前 只用了預留的 32 個命令群組(命令的 index 有 5 個 bit,共 32 種組合)中的 10 個群組,未 來仍可繼續擴充,加入更多的命令(例如常用的一小段程序便可以直接將它寫成一個命令,

不需每次都需呼叫一連串使用者命令,佔用記憶體空間),一方面方便撰寫 script 的使用者,

一方便也可擴增 WINS 的功能:

表格 5:本篇論文提供之命令表

CMD Index (b7~b3)

CMD Para 1 (b2~b0)

Byte1 HEX

Para2 Remark

0 Jump to first CMD N/A 00 N/A

1 Delay High 3 bits

08~0F 00001xxx

Low 8 bits Delay n(11 bits) * 250uS

2 PortWrite

(b2: 1=Para2 is immediate data, 0=Para2 is user variable index) (b0: 1=Port2, 0=Port0)

14 15 10 11

Content is determined by Para1.2

3 PortRead (b0: 1=Port2, 0=Port0) 18 19 User Reg index 0~31 4 Data_Cpy 000: #Data -> A 20 Immediate data

(37)

CMD Index (b7~b3)

CMD Para 1 (b2~b0)

Byte1 HEX

Para2 Remark

001: #Data -> B 21 Immediate data 010: A->Rn 22 User Reg index 0~31 011: Rn <- A 23 User Reg index 0~31 100: A -> @Rn 24 User Reg index 0~31 101: @Rn -> A 25 User Reg index 0~31

110: A -> B 26

111: B -> A 27

000: (A+Data) -> BA 28 Immediate data B=1:Carry 001: (A-Data) -> A, B 29 Immediate data B=1:Borrow 010: (RL Reg#) n times ->

Reg#

2A (b7~b5, n times) (b4~b0, reg #)

011: (RR Reg#) n times ->

Reg#

2B (b7~b5, n times) (b4~b0, reg #)

100: (A AND Data) -> A 2C Immediate data 101: (A OR Data) -> A 2D Immediate data 5 Data_Proc

110: (A Logi Reg#) -> A 2E

b7~b5: Logi operation index, b4~b0: Reg#

000:AND, 001:NAND, 010:OR, 011:NOR, 100: XOR, 101:XNOR, 000: Jump to line # 30 Line # Uncondition Jump

001: JZ 31 Line # JMP if ACC==0

010: JNZ 32 Line # JMP if ACC!=0

011: DJNZ 33 b7~b5: Reg#, b4~b0: Line offset JMP if Rn(0~7) != 0 100: JB 34 b7~b5: bit n, b4~b0: Line offset JMP if bit n of ACC == 1

101: JNB 35

110: JTimer 36

6 Branch

111: JNTimer 37 b7~b5: bit n, b4~b0: Line offset JMP if bit n of ACC == 0 000: Set RF Channel 38 b7:1:Indirect:Data in

Rn:b4~b0:Reg#, b7:0:Immediate value

001: Set RF TxRx 39 b7=1(b4~b0:Reg#; Rn.0=1:Rx, Rn.0=0:Tx); b7=0(b0=1:Rx, b0=0:Tx)

010: Set RF Address 3A User Reg index Rn~Rn+4: RF address

011: Get RF Status 3B User Reg index Get RF module status, save in Rn 100: Send RF Data 3C User Reg index Send Rn~Rn+6 data out

101: Get RF Data 3D User Reg index Get input data, save in Rn~Rn+6, no wait

7 RF_Access

110: Enable Rx 3E b7=1(b4~b0:Reg#;

(38)

CMD Index (b7~b3)

CMD Para 1 (b2~b0)

Byte1 HEX

Para2 Remark

Rn.0=0:StandBy, Rn.0=1:Rx);

b7=0(b0=0:Standby, b0=1:Rx)

8 Timer_Proc 000: Set Timer 40 b7~b6:Timer index, b4~b0: Reg# Reg_n: TimerL, Reg_n+1: TimerH 000: #Data -> Reg0 48 Immediate data

001: #Data -> Reg1 49 Immediate data 010: #Data -> Reg2 4A Immediate data 011: #Data -> Reg3 4B Immediate data 100: #Data -> Reg4 4C Immediate data 9 Data_Cpy2

101: #Data -> Reg5 4D Immediate data

3.4 編撰使用者 script

3.4.1 Script 編撰流程

欲編寫 script 以控制此一系統,就如同撰寫程式一樣,第一個步驟通常是定義並描述系 統的功能;第二個步驟是決定程式的流程及細部的行為;第三個步驟便是查表並將所需之 命令逐一填入。以下幾個章節便會以實例展示開發流程。

3.4.2 設計 LED 跑馬燈

就像學習設計高階語言程式時寫的第一支程式是顯示「Hello world」一樣,LED 跑馬 燈為最基礎的程式,它可以協助初學者了解此一系統靭體開發的流程,在實際操作過一次 後便會對整個流程有清楚的了解。

步驟一、定義並詳細描述系統的功能

此為最簡單的 LED 顯示跑馬燈,接在 Port 0 上的 8 個 LED 會依序被點亮,每隔 0.5 秒鐘點亮下一個 LED

步驟二、決定程式的流程及細部的行為 程式之細部動作為:

(39)

1. 設定 Port 0 為 0xFE 以點亮 LED0 2. 延遲 0.5 秒

3. 設定 Port 0 為 0xFB 以點亮 LED1 4. 延遲 0.5 秒

5. …8 個 LED 都點亮過後從第 1 步重新開始

因為 8 個 LED 都在同一個輸出埠 P0 上,可以用「左旋」運算功能簡化程式;故整個 程式可以寫成如下的迴圈型式:

1. 設定 Reg0 為 0xFE (LED 為低位驅動, 0xFE 為只有 LED0 低位) 2. 將 Reg0 資料輸出至 Port 0 以點亮 LED

3. 延遲 0.5 秒

4. 將 Reg0 內容左旋 1 個 bit 5. 跳回第 2 步

步驟三、查表並將所需之命令逐一填入

表格 6:跑馬燈之程式設計命令表 Step Line# Instruction CMD Code 說明

1 00 #FEh -> R0 48h, FEh 將立即值放入 R0 2 01 R0 -> P0 10h, 00h 將 R0 內容 copy 至 P0 3 02 (RL R0 once) -> R0 2Ah, 20h 將 R0 左旋一個 bit, 放回 R0 4 03 Delay 500mS 0Fh, D0h 延遲 500mS 以供顯示

5 04 Jump to CMD line#1 30h, 01h 跳回 line#1(從 0 起算),造成 無限迴圈

從這一個簡單的實作中可以發現,使用本系統開發這類小型設備的操作程式是十分地簡 單與直覺,只要可以描述得出來便可以撰寫得出來,本系統將 delay 這些最常用的程式寫

(40)

成了單一個命令,而且未來隨時可依需求加入更多更方便的命令,以加速並簡化 script 寫 作。

3.4.3 無線收發功能驗證 script 設計

在上一節中驗證了 script 的架構及硬體基本動作之後,接下來本節會驗證硬體之無線收 發功能,這是 WINS 中最重要的一項硬體功能,沒有無線收發能力,便只能稱為是自動控 制實驗板了。

步驟一、定義並詳細描述系統的功能

本節的 script 會每 0.5 秒無線發送一筆資料,然後將剛發出去的資料進行左旋轉運算(像 上節一樣),在等待下一個 0.5 秒到來之時會持續檢查是否有收到資料(從另一個 WINS 發 出),會將收到的資料顯示在連結在 P0 上的 LED。

步驟二、決定程式的流程及細部的行為

1. 設定 nRF2401 RF Address 為 9BA1592647H:

1.1 設 Reg0 為 9BH 1.2 設 Reg1 為 A1H 1.3 設 Reg2 為 59H 1.4 設 Reg3 為 26H 1.5 設 Reg4 為 47H

1.6 設定 RF Address 為從 Reg0 起的 5 個 Register 內容 2. 設定 nRF2401 RF Channel 為 1AH

3. 設定 Reg5 為 7FH (此為供發送用之資料) 4. 設定 Timer0 之 interval 為 0.5 秒

4.1 設 Reg0 為 D0H

(41)

4.2 設 Reg1 為 07H

4.3 設定 Timer0 之初值為 Reg0 起的 2 個 Register 內容,並啟動 Timer0 5. 設定 nRF2401 為資料發送模式

5.1 禁止 nRF2401 接收模式 5.2 將 nRF2401 設成發送模式 6. 將 Reg5 內容左旋 1 個位元 7. 將 Reg5 內容複製到 Reg6

7.1 將 Reg5 內容複製到 Acc 7.2 將 Acc 內容複製到 Reg6

8. 將 Reg6 至 Reg12 之資料由 nRF2401 送出(一個封包中 PAYLOAD 為 7 個 byte) 9. 設定 nRF2401 為接收模式

10. 致能 nRF2401 接收模式

11. 將 nRF2401 的狀態讀回,放在 Reg2 中 12. 將 Reg2 內容複製到 Acc

13. 若 Acc 之 bit0 為 0(未收到資料),跳至 16

14. 將 nRF2401 接收到之資料複製到從 Reg6 至 Reg12 的 7 個 register 內 15. 將 Reg6 的內容顯示在 P0 上(這是由另一個 node 所發出的)

16. 若 Timer0 時間未到,則跳至 11 17. 跳至 4

步驟三、查表並將所需之命令逐一填入

表格 7:無線收發功能驗證 script 設計命令表

Line # Function Block Instruction

Byte1 HEX

Byte2 HEX

Remark / 說明

0 #9BH -> Reg0 48 9B

1

Set RF Address 9BA1592647H

#A1H -> Reg1 49 A1

(42)

Line # Function Block Instruction

Byte1 HEX

Byte2 HEX

Remark / 說明

2 #59H -> Reg2 4A 59

3 #26H -> Reg3 4B 26

4 #47H -> Reg4 4C 47

5 Set RF Address 3A 00

設定 RF Address 為從 R0 開始的 5 個位置內 容

6 Set RF Channel 1AH Set RF Channel 38 1A 設定 RF 頻道為 1A

7

設定 Reg5 為 7FH (此為供發送用之 資料)

#7FH -> Reg5 4D 7F 設定 Reg5 為 7F(待送出之資料)

8 #D0 -> Reg0 48 D0

9 #07 -> Reg1 49 07

10

設定 Timer0 之 interval 為 0.5 秒

Set RF Rx 40 00

設定 Timer0 之初值為 Reg0 起的 2 個 Register 內容,並啟動 Timer0

11 3E 00 Disable Rx

12

設定 nRF2401 為資料發送模式

39 00 Set Tx

13 將 Reg5 內容左旋 1 個位元 RL Reg5 2A 25 Rotate Reg5 left, once

14 Reg 5 -> A 23 05

15

將 Reg5 內容複製到 Reg6

A -> Reg 6 22 06

16

將 Reg6 至 Reg12 之資料由 nRF2401 送出

Send RF data 3C 06 將 Reg6 至 Reg12 之資料由 nRF2401 送出

17 Set Rx 39 01

18

設定並致能 nRF2401 為接收模式

Enable Rx 3E 01

19

將 nRF2401 的狀態讀回,放在 Reg2 中

Get RF status ->

Reg2

3B 02

20 將 Reg2 內容複製到 Acc Reg2 -> A 23 02

21

若 Acc 之 bit0 為 0(未收到資料), 跳 至 24

JNB,A.0,+3 35 03

22

將 nRF2401 接收到之資料複製到 從 Reg6 至 Reg12 的 7 個 register 內

Get Data -> R6~ 3D 06 接收到的資料放在從 R6 開始的 7 個位置中

23

將 Reg6 的內容顯示在 P0 上(這是 由另一個 node 所發出的)

Write Reg6 to P0 10 06 Write Reg6 to port 0

24 若 Timer0 時間未到,則跳至 19 JMP if not timer0 37 1B JNTimer0,-5 (000 11011)

25 Loop Jump to line #8 30 08

此一 script 最大的功能便是驗證硬體的收發功能:首先讓 A 與 B 都執行這個 script,然 後會看到 A 與 B 的 LED 每隔 0.5 秒便會變換狀態,若將 A 之電源關閉,則會發現 B 的 LED 也不會變化了,這能證實該 B 所顯示的資料的確是從 A 而來。

(43)

3.6 使用 Simple Flooding Protocol 的 WINS 設計

本節中會討論[13]中的 Simple Flooding Protocol (簡單氾濫協定),研究實作之可能性;

最後以 script command 實現出來。

3.6.1 Simple Flooding Protocol 簡介

Flooding Protocol(氾濫協定)是種簡單而且可適用在網路拓撲會變化的通訊協定,但是 它有效能差的缺點。Simple Flooding Protocol[13] (以下簡稱 SFP)係從 flooding protocol 改良而來,可使用在具有移動性(movable)、主動性(proactive)、及與位置無關(location-free) 的 WSN 上,主要的改良是減少電源消耗。它將以下三個機制放入了 flooding protocol 以達 成省電的目的[13]:

1. 設定一個定期的工作循環,其中有 Node 的 active 與 sleep

2. 將不完整的封包丟棄(sleep timeout 前仍未收完,封包不完整),不會將它 forward 出去

3. 可由硬體實現(若由類似 nRF2401 晶片來過濾不完整的封包,則在封包未收齊之前 MCU 均可不必醒來)

如下圖 16 所示[13],SFP 將原本 Flooding 中不控制的時間,以一個個的循環 round 來 劃分;一個循環中的開始部分為 node 的 RF 模組開啟的時間 active,這時的功率消耗 會較高,在無需做任何發送及監聽需求之後,將 node 放入睡眠模式,以求節省電池電 力。

(44)

每個循環中,不管是傳送自身的資料,或是轉交(forward)其它 node 送出之資料,node 只會做一次資料傳輸,然後進入睡眠。在低資料率的傳送需求時,這是一個節省能源的 好方法。引用[13]中的狀態圖如圖 17 所示:

圖 17:SFP 的狀態圖(從[

13

]中節取出)

3.6.2 實現 Simple Flooding Protocol 的研究

從 SFP 的論文[13]所繪出的流程圖(圖 18)之中,可列出欲以 script command 實現 SFP 所需的要件,並加上數字標記 1 至 17,以加速程式寫作:

1. 從 2、6、13、14 中,知道必須有四個計時器以製成:

z

Round Timer

z

Contention Slot Timer

z

Forwarding Slot Timer

z

Sleep Timer

2. 從 1、3 中,知道必須有開關無線模組的指令設計:

3. 從 10、11、15、16 中了解必須有解傳輸封包的能力:

(45)

仔細檢查 script 所提供的功能之後,發現目前所提供的 3 個使用者 timer 不足,故多設 計了 3 個 timer,使用者 timer 數量增加成了 6 個,如此便可達成需求。

圖 18:SFP 的程式流程圖

3.6.3 以 script 實現 Simple Flooding Protocol

不同於前兩個實作的設計流程,因為已有了詳細的流程圖,可直接進行表格式程序寫作:

表格 8:SFP 之程式設計命令表

Line # Function Block Instruction

Byte1 HEX

Byte2 HEX

Remark / 說明

0 #12H -> Reg0 48 12 立即值放入 R0 中

1 #12H -> Reg1 49 12 立即值放入 R1 中

2 #12H -> Reg2 4A 12 立即值放入 R2 中

3

Set RF Address 1212121212H

#12H -> Reg3 4B 12 立即值放入 R3 中

(46)

Line # Function Block Instruction

Byte1 HEX

Byte2 HEX

Remark / 說明

4 #12H -> Reg4 4C 12 立即值放入 R4 中

5 Set RF Address 3A 00 設定 RF Address 為從 R0 開始的 5 個位置內容

6 Set RF Channel 06H Set RF Channel 38 06 設定 RF channel 為 06

7

WINS_ID (R16) is from P2

Read P2 -> R16 19 14 Reg16 中置放此一 node 之 Addr.

8 Turn on Timer 2 42 41 啟動 timer2 (contention slot timer) 9 Turn on Timer 3 42 61 啟動 timer3 (round timer) 10 Turn on Timer 4 42 81 啟動 timer4 (sleep timer)

11 Set RF=Rx 39 01 設定 RF 為接收模式

12 Disable RF 3E 00 Disable RF

13 #00H -> Reg0 48 00 清除 forward slot 為 0 14 #00H -> Reg1 49 00 清除 forward slot 為 0 15

Sleep state:

1

Set Timer 1 42 20 清除 forward slot timer

16 2 JNTimer 3, 0 37 60 到了 next round 了嗎?, 否則跳至自己

17 # -> Reg0 48 D0 設 Rount Timer=0.5sec

18 # -> Reg1 49 07 設 Rount Timer=0.5sec

19 Set Timer 3 42 60 設 Rount Timer

20 3

Enable RF 3E 01 醒來, Enable RF 接收 21 Reg 19 -> Acc 23 13 Reg 19 -> Acc 22

4

JNB.7, +2 35 02 Reg19 資料 bit7 為 0 表自身無資料 pending

23 跳至5 JMP 40 30 28 跳至 Contention state

24 Forwarding state: # -> Reg0 48 20 設 Sleep Timer=0.2sec

25 # -> Reg1 49 03 設 Sleep Timer=0.2sec

26 Set Timer 4 42 80 設 Sleep Timer

27 Get RF status 3B 1E 讀 RF Status -> Reg30 (Acc) 28

10, 11, 12

JB.0, +2 34 02 若有資料收進來則跳

29 JMP 38 30 26 沒資料, 等看是否該 sleep 了

30 Get RF data 3D 14 Get RF data -> Reg20~Reg26 31 #00H -> Reg0 48 00 設定 forwarding slot ?? 與 ID 有關 32 #01H -> Reg1 49 00 設定 forwarding slot ?? 與 ID 有關 33

14

Set Timer 1 42 20 設定 forwarding slot ?? 與 ID 有關

34 15 JNTimer 1, +4 37 14 forwarding slot 未結束便檢查是否要 sleep 了

35 Set RF = TX 39 00 Set RF=TX

36 17

Send RF data 3C 14 送出 Reg20~Reg26 資料(forward)

37 跳回1 JMP 11 30 0B 跳至 Sleep state

38 JTimer 4,-1 36 5F 若 Sleep 已到, 則跳至等待下個 round

39 跳至10 JMP 27 30 1B 跳回等待資料

(47)

Line # Function Block Instruction

Byte1 HEX

Byte2 HEX

Remark / 說明

40 Contention state: Turn on timer 2 42 41 Turn on contention timer

41 5 JNTimer 2,+4 37 44 若 contention timer 未到, 表仍有 slot 42 #00H -> Reg0 48 00 設定 contention slot ?? 與 ID 有關 43 #01H -> Reg1 49 00 設定 contention slot ?? 與 ID 有關 44

6

Set Timer 2 42 40 設定 contention slot ?? 與 ID 有關, start timer 45 Get RF status 3B 1E 讀 RF Status -> Reg30 (Acc)

46 7

JNB.0, +3 35 03 若無資料收進來則跳

47

有資料進來, 保留 contention slot

Turn off timer 2 42 40 Turn off contention timer

48 跳至10 JMP 24 30 18 跳至 Forwarding state

49 8 JNTimer 2,-4 37 5C 若 contention timer 未完,則繼續監視接收

50 Set RF = TX 39 00 Set RF=TX

51

9送出自身資料

Send RF data 3C 10 送出 Reg16~Reg22 資料

52 跳回1 JMP 11 30 0B 跳至 Sleep state

在實作此通訊協定時我們發現到,如果使用 ShockBurst Mode 來進行監聽以達成 Carrier Sense 時會有遺漏的情形發生,在空中交通有碰撞發生時 nRF2401 不會回報,使 得 MCU 以為當時空中無資料傳輸行為,若此時 MCU 也將資料發出,也將會造成碰撞。解 決此問題的方法有兩個:

1. 使用另一個 nRF2401:設定在 Direct mode,讓它去監聽空中的通訊,即使是有碰 撞情形發生,MCU 亦可以在這第二個 nRF2401 的 DATA 腳了解狀況;而原來的 第一個 nRF2401 仍是在 ShockBurst Mode,在資料完整接收時會告知 MCU,這 樣可以減低 MCU 的工作負擔。

2. 將 nRF2401 設定在 Direct mode 下工作:不使用 ShockBurst Mode,MCU 自行 處理所有時序及發送、接收動作;只是這樣一來,MCU 的工作量便會激增,而且 原有之 firmware 必須大幅修改。

3.7 使用本套件驗證通訊協定之效能

通訊協定的性能由有許多量測值來決定,例如延遲時間(latency)、資料輸出量

(48)

(throughput)等;本節中會討論如何使用本套件之硬體及靭體以實現對這幾個參數之量測。

3.7.1 量測延遲時間

延遲時間(latency)的定義為:「網路中,訊息由發出端至接受端所需的時間」[16],在 本篇論文中,我們只考慮 Layer2 的相鄰節點的傳輸延遲時間;欲以本套件量測此時間,有 下列數種方式:

1. 由 firmware 啟動計時器以 A, B 兩個節點完成(請參考下圖):將 A 節點的一個 I/O 輸出腳 P0.0 接到 B 的 I/O 輸入腳 P2.0,當 A 節點送出資料時將輸出腳變為高電位,

而 B 節點偵測到輸入腳為高電位時啟動內部計時器,當收到來自 A 節點的無線傳 輸資料時,便將計時器停止;由 B 之計時器取出之時間便為延遲時間

圖 19:由 firmware 啟動計時器以 A, B 兩個節點完成延遲時間量測

2. 由第三個節點擔任計時器(請參考下圖):A 及 B 節點中的 firmware 不需做修改,C 節點的 P2.0 輸入腳接在 A 節點的 NCE 訊號上(請參考表格 4),C 節點的 P2.1 輸 入腳接在 B 節點的 NDR1 訊號上;當 C 節點偵測到 P2.0 從高電位變為低電位時(表 示 MCU 欲送出之資料已全數傳遞至 nRF2401,nRF2401 會於 205uS 內將資料以 無線方式送出)便將計時器啟動;當 C 節點偵測到 P2.1 從低電位變為高電位時(表 示 nRF2401 收到一筆完整的資料)便停止計時器;由 C 節點之計時器取出之時間 便為延遲時間

(49)

圖 20:由第三個節點擔任計時器完成延遲時間量測

3. 發送端附上發送時間,接收端計算時間差:上述的兩個方法若是在 A 與 B 之間的 距離很遠時便無法被採用(距離太遠無法接線);因此可考慮使用 Time stamp(時間 戳記)的方式來計算延遟時間:首先 A 與 B 必須進行時間之同步,方法為由第三個 節點發送同步封包,A 與 B 收到後重置內部之計時器;A 在發送資料時,附上當時 之時間,B 收到之後,將目前時間減去來自於 A 之時間戳記,結果便為延遲時間。

圖 21:利用 time stamp 完成延遲時間量測

(50)

3.7.2 量測資料輸出量

資料輸出量(throughput)的定義為:「單位時間內送出之資料量」;欲以本套件量測此數 據,可用下列方式:由 C 節點量測 A 節點的 NCE 單位時間變化次數(請參考下圖):A 節點 中的 firmware 不需做修改,C 節點的 P2.0 輸入腳接在 A 節點的 NCE 訊號上(請參考表格 4);當 C 節點偵測到 P2.0 從高電位變為低電位時(表示 MCU 欲送出之資料已全數傳遞至 nRF2401,nRF2401 會於 205uS 內將資料以無線方式送出)便將計數器遞增;0.5 秒後停 止計數(使用 0.5 秒原因是本 firmware 中設計之計時器最大只到 0.51175 秒);由 C 節點之 計數器取出之值乘 2 便為每秒送出之封包數

圖 22:由第三個節點擔任計數器完成資料輸出量量測

3.7.3 資料遺失率

在通訊中常因各種因素致使送出資料無法被正確接收,例如干擾(interference)、或是競 爭(contention);可以設計一些方法以本套件進行資料遺失率分析;

(51)

第一個方法用來測試兩個節點傳輸,在干擾下的資料遺失率,其方法為使用 A 當資料 發送端,B 當資料接收端,而 A、B 的 firmware 設計方法如下:

1. 發送端 A 固定發送數字 1 至 100 至接收端 B;

2. B 在收到一個”小於”上次所收到的值時,表示 A 已從 1 重新開始送資料,B 會將從 上次重置錯誤計數器至今所累積的錯誤個數顯示出來,並重置計數器;

3. 若每次收到的資料不是上次的資料加 1,便遞增錯誤計數器;流程圖如圖 23 所示:

圖 23:計算資料遺失率的流程圖

第二種方式為在節點的 firmware 中設計增加計算資料遺失率的功能,此方法可以用來 評估各種 layer2 通訊協定的資料遺失,方法為在固定時間到時,所有節點進入資料遺失率

(52)

計算模式,而資料送出節點(例如 A)在送出資料時(不管目的節點為何)會累進「送出資料計 數器(out cnt.)」,A 內部有另一個「收到資料計數器(in cnt.)」(參考圖 24),當收到資料,且 封包中目的節點為 A 時,便會累進「收到資料計數器」,在資料遺失率計算模式於固定時間 後結束時(例如 500ms),所有節點分批將自己的兩個計數器送至 sink,而 sink 只要用以下 的計算式便可算出資料遺失率:

(1 - (所有節點「收到資料計數器」的總和) / (所有節點「送出資料計數器」的總和) )x 100%

圖 24:計算資料遺失率的計數器示意圖

3.7.4 電源消耗率

對於使用電池當電源的感測器節點來說,電源消耗率(power consumption)是最重要的 效能指標之一;在本套件可藉由記錄 nRF2401 各個控制模式的時間,來計算出通訊協定所 消耗的功率;首先必須先了解 nRF2401 的幾個工作狀態,因為不同的工作狀態有不同的消 耗功率,nRF2401 工作狀態表如下表所示:

表格 9:nRF2401 工作狀態[

15

]

在本套件中可藉由記錄表格 9 之中所列出之 NPWR、NCS、NCE 各種組合之時間比例 來推算出電源消耗率,在操作時,A 為正常工作的節點,B 為執行監視 A 信號線的工作,

(53)

流程圖如下所示:

圖 25:量測電源消耗流程圖

當 NPWR 為 low 時,便定時遞增 PWR_DN 計數器,此時的消耗電流(只算 RF 模組消 耗部份)為 400nA [15],當 NCE 為 high 時便定時遞增 RF_Active 計數器,此時的消耗 電流(只算 RF 模組消耗部份)為 19mA,當 NCE 為 low 時便定時遞增 Standby 計數器,

此時的消耗電流(只算 RF 模組消耗部份)為 12mA;在一個 round 之後將這些計數器內 容讀回,全部加起來應該接近 2000(因為每 250us 累進計數器一次),而各個計數器乘 上 250uS 的值,便是 RF 模組在各個模式下的累計時間,可推算出在此通訊協定下,

(54)

RF 模組的消耗功率。

(55)

第四章、效能比較分析

4.1 與其它 WINS 商品功能的比較分析

本章節中,將以列表方式比較三種 WINS 商品與本論文之 WINS:

表格 10:本篇論文 WINS 與其他三種 WINS 之效能比較

能力參數 本 WINS SmartDust MICAz iBean

售價 最低

(<10 USD/Node)

高 (USD 3K)

高 (USD 3K)

最高 (USD 4.5K) 開發通訊協定

之可能性

(可用 script 開發) 無 可 (TinyOS) 無

自動錯誤恢復 可(需自行設計) 有 有 有

軟體支援度 低

(待開發) 中 高 中

開發通訊協定

之學習曲線 短 不能開發 長 (TinyOS) 不能開發 外接感測器種

(

待開發

)

較少 最多 多

電池蓄航能力 差

(

目前受限於硬體

架構及零件選擇

)

好 未知 極好

無線更新靭體 無

(可用 script 開發) 無 有 無

其他功能 可設計出非

WINS 功能之系 統,可成為學習 自動控制之平台

由以上的比較表格可看出,除了本篇論文之 WINS 及 MICAz 之外,其餘的 WINS 套件 產品均不適合學術學習無線網路技術及研發新的通訊協定,因為其 Layer2 及 Layer1 部份 均未開放出來,SmartDust 及 iBean 更是以提供無線感測網路佈置之用材及服務為主,並

Figure

Updating...

References

Related subjects :