亞東技術學院教師產學研究計畫成果報告
無線感測網路在嵌入式系統上的開發
計畫編號:97-5-03-220
執行期限:98 年 3 月 1 日至 98 年 11 月 30 日
主持人:施勢帆 單位名稱:電機系
參與學生:張舜翔、郭子毅
合作廠商:標高電子股份有限公司
摘要
嵌入式系統為控制、監視或輔助設備、機器或甚至工廠運作的裝置。它是一種電腦 軟體與硬體的綜合體,『量身定做』為其原則。本計畫以作業系統為 WinCE 的電腦主 機做為終端,以串列線連接 XSBase270[1] [2]的 WinCE[3]開發板進行檢測,為達到此一目 的,開發板上的 EELIOD 系統有相應的準備工作,核心的編譯及系統內核的配置等。 本計畫使用 ZigBee 無線定位開發系統,採用德州儀器公司(TI)的 CC2430 和 CC2431 無線 ZigBee 片上系統,結合符合 ZigBee-2006 協定規範的 Z-Stack 協定堆疊, 使用者可用來進行 ZigBee-2006 網狀網路即時定位系統的開發。CC2431 晶片包含一個 定位檢測硬體模組,可以用在所謂的盲節點來接收從已知位置的節點發來的信號。在此 基礎上該定位引擎計算出一個盲節點位置的估計值。 本計畫並設計並實現感測器與嵌入式系統硬體,相容的感測器類型有 A/D 感測器、 開關式感測器及數位式感測器。一、 創作理念
近年來,嵌入式系統廣泛的應用在各種常見的科技商品上,最常見的有手機、PDA、 GPS、Set-Top-Box 以及嵌入式伺服器等,為一項綜合了軟、硬體的熱門技術。嵌入式 系統(Embedded system),是一種「完全嵌入受控器件內部,為特定應用而設計的專用 電腦系統」,與個人電腦這樣的通用電腦系統不同,嵌入式系統通常執行的是帶有特定 要求的預先定義的任務。由於嵌入式系統只針對一項特殊的任務,設計人員能夠對它進 行優化,減小尺寸降低成本。 本計畫的目的在於了解並熟悉嵌入式系統 XSBase 270 開發板[1]的操作原理及方 法,針對特定目的做出的嵌入式系統工具雖然層出不窮,而且功能大相逕庭,但在了解 其基礎操作原理之後,日後發展出的其他嵌入式工具,就比較容易上手並利於日後的研 究。 本計畫並結合ZigBee 無線定位開發系統[2]及感測器,ZigBee 無線定位開發系統是 目前市場上在最短時間內開發全面ZigBee 無線定位系統應用最強大的工具之一,採用 德州儀器公司(TI)的CC2430 和CC2431 無線ZigBee片上系統,結合符合ZigBee-2006協定規範的Z-Stack 協定堆疊,使用者可用來進行ZigBee-2006 網狀網路即時定位系統 的開發。CC2431 是一個用於無線感測器網路ZigBee®/IEEE 802.15.4 解決方案的晶片上 系統(SOC)。該晶片包含一個定位檢測硬體模組,可以用在所謂的盲節點(即不知道 位置的節點)來接收從已知位置的節點發來的信號。在此基礎上該定位引擎計算出一個 盲節點位置的估計值。CC2431 可以用很低的費用構成一個ZigBee®網路。
二、 學理基礎
本計畫以使用 XSBase270(EELiod)裝置應用於 WinCE 系統來開發建置,起初以計畫 學習階段起步,藉由裝置的安裝與測試來了解 WinCE 系統的執行與操作。另外,並以 個人電腦(PC)與 XSBase270 裝置連接,載入其程式操作檢測。在計畫準備的過程中,主 要以 Microsoft eMbeded Visual C++[4] [5]與 Microsoft Visual Studio 2005 語言,使用其語法撰寫程式執行控制並在完成初步控制後,再嘗試加以改寫程式,使裝置可執行不同的功 能,重新編譯載入控制,以逐步嘗試編譯的方式,進而達到學習研究之目的,另外再將 程式碼詳細註解,形成未來學校教學範本上的里程碑,並將其編寫成可學習研究的教案。 另外使用 ZigBee[6]為無線感測網路,一個 ZigBee 網路是由電池供電設備構成的多 跳網路,這意味著在一個 ZigBee 網路中希望交換資料的兩個設備可能需要依靠其他中 間設備才能成功完成資料交換,因為網路的這個協作性質,每一個設備需要實現恰當的 功能:(1)執行具體的網路功能(2)設定某些參數為特定值。一個設備所執行的網路 功能決定了該設備在網路中的角色,這被稱為一個設備類型。需要被設定為特定值的這 些參數的集合,與這些特定值被稱為一個堆疊規範。 ZigBee 使用一個分散式的編址方案來分配網路位址。該方案確保了所有被分配的 網路位址在整個網路中是唯一的。這是必要的,所以在一個特定資料包應當被路由到哪 個設備這個問題上不存在歧義。同樣,編址演算法的分散式特性確保了一個設備僅和它 的父設備通信以接收一個全網路範圍內唯一的位址。位址分配無需全網路範圍的通信這 有助於網路的可測量性。 本計畫主要設計並實現感測器與嵌入式系統硬體,其主要相容三種類型的感測器: 1、A/D 感測器:將感測器的輸出放大到系統所支援的電壓範圍(通常放大到 0~3V 之間),確定所對應的 CC2430 的 A/D 通道(通常可以接到 P0.4)。 2、開關式感測器:將開關量輸出調節到高電位 3V 左右,低電位 0V 左右,確定使 用通用 I/O 讀寫或者使用中斷來採樣開關量,並接到對應的 I/O。對於中斷捕捉, 必須接到 P0.4。(通過計時器採樣兩個跳變間的時間,例如流量計) 3、數位式感測器:由於數位式感測器種類繁多,實現方法也不盡,所以需要使用 者自行設計相應的硬體電路,並通過 CC2430 的相應功能來實現感測器的功能。 但是最終實現出來的感測器只要能正確的採得所需資料,便可方便的嵌入到系 統中,將資料通過 RF 射頻網路傳輸。 一旦使用者實現了感測器硬體,便可開始在節點的 TinyOS 系統中添加對應的感測 器軟體支援。在感測器節點程式的編譯過程中,使用 make 工具對代碼進行編譯。因此,
使用者需要做一些工作,使得使用者的驅動代碼能夠被有效的整合到系統中。支援相應 的感測器需要對/opt/atos/Atosenet/ANTc3 目錄中的檔案做出相應的修改。 原理大致如圖,添加自己的感測器需要經過幾個步驟: 1. 在“感測器定義列表”中添加新感測器的巨集定義開關。 2. 在“感測器元件列表”中添加自己的元件。 3. 在“系統感測器佇列”中添加使用者的感測器程式聲明和資料長度資訊。 4. 實現對應“感測器的處理程式” 。
三、 主題內容
3.1 PX270 嵌入式系統將 WinCE 系統架構架設完成並瞭解在 WinCE 下執行緒編程方法,使用 Microsoft Visual Studio 2005 語言撰寫以下計畫控制程式,再利用執行同步載入實現控制硬體裝 置,在可控制 XBase270 後,改變其功能,重新載入執行控制,再將其程式碼註解。進 而在使用 USB 掛載至平台內,讓平台執行其功能。在下載 WinCE 核心 Image 之前確認
是否安裝 bootp、Tftp 和 xinetd 這 3 個程式。介面驅動,在編譯好的驅動模組利用隨身 碟或 FTP 交換資料放到 XSBase270 上,進入 XSBase270 裝載驅動模組,最後在 XSBase270 平台中執行驅動模組的程式,來控制目標板上的週邊。 3.2 ZigBee 無線網路協定 本計畫計畫演示兩種設備類型—「感測器設備」和「採集設備」。感測器設備作為 ZigBee 網路中的終端設備,採集設備作為協調器或路由器設備。感測器設備記錄溫度 和電池能量讀數並將它們發送給採集設備。採集設備在啟動或加入一個網路後,必須被 置於允許綁定模式來回應從感測器設備發來的綁定請求。在本計畫中,通過按下 SW6 來 實現。這將使能設備進入允許綁定模式並點亮 D2。按下設備上的 SW3,設備將退出允 許綁定模式並熄滅 D2。感測器設備在成功加入網路後,若採集設備處於允許綁定模式, 感測器設備將自動發現並綁定到採集設備,然後它將開始報告溫度和電池能量讀數給採 集設備。當感測器設備正在報告感測器讀數給採集設備時,它上面的 D2 被點亮。在採 集設備上,接收到的感測器讀數將被寫到串列埠。使用者可通過用 USB 電纜將採集設 備連接到一台 PC 機(USB 轉串列埠)並使用 Z-TOOL 來觀察。 3.3 ZigBee 無線定位開發系統 Z-Stack 定位 燒寫好的四個定位節點、擺置在教室的四周圍等四個節點,一個燒寫好的盲節點在 定位的四個節點內遊走,然後在 EB 版連結上的 XSBase270 上得到採集的資訊,如下圖。
3.4 ZigBee 無線感測網路感測器與嵌入式系統硬體 設計嵌入式系統 WINCE 控制主介面,主介面包括“Control”、“Nodes”、“Data”、 “Graphics”和“Service”五個選項卡頁面。Control 頁面為主要功能的控制面板,提供了選 擇 COM 埠功能,開啟和關閉監控功能。Nodes 頁面的功能是將採集到的感測器節點資 料以及節點狀態等資訊分類顯示在列表中。點擊節點後,節點的詳細資訊將顯示在節點 列表的下方。Data 頁面可以查看所有感測器節點的歷史資料。在節點選擇的下拉清單中 選擇節點後,節點的所有詳細資料將會出現在下面的列表中。Graphics 頁面可以查看節 點資料的折線圖以分析資料趨勢。在左邊的下拉清單中選定節點,右邊的下拉清單中選 擇需要查看的資料類別,選定後,圖表將會出現在下面的圖示區域中。
四、 方法與技巧
針對本計畫中設計並實現感測器與嵌入式系統硬體說明如何配置系統,為了在介面 中能夠正確的顯示採集到的資料,我們需要在系統中添加新感測器的識別機制和資料解 析體系。資料識別、解析機制體系通過完善的資料庫結構,為使用者提供了一系列的介 面。使用者只需要在相應得資料表中添加相對應的欄位,就可以使自己添加的感測器資 料在 PC 系統中被正確解析、顯示。原理大致如下:大致分如下幾個步驟: 1. 添加節點類型描述。 2. 添加節點感測器儲存類型和欄位結構。 3. 添加節點資料儲存對應表。 添加節點類型描述 打開 system/config.mdb 資料庫。 打開表 T_NODE_TYPE,添加相應的節點類型的描述。 node_type_no 節點類型號,必須與 TinyOS 程 式 make 命令對於的 TYPE 選項 一致。 必須填 storage_type_id 對 應 與 表 T_STORAGE_TYPE 中的儲存類型號 必須填 node_type_name 節點類型名 node_type_description 節點類型描述 添加節點感測器儲存類型 打開system/config.mdb資料庫。 打開表 T_STORAGE_TYPE,添加相應的節點儲存類型。 storage_type_id 儲 存 類 型 ID 號 , 用 於 與 表 T_STORAGE_FIELD 關聯 必須填 storage_type_name 儲存類型名 storage_table_name 對應於 data.mdb 中儲存表名 必須填 storage_table_view 對應於 data.mdb 中儲存表名 (用於查詢,可以用視圖名) 必須填 添加欄位結構打開system/config.mdb資料庫 打開表 T_STORAGE_FIELD,添加相應的節點的欄位描述。 storage_type_id 所屬的儲存結構 ID,對應與表 T_STORAGE_TYPE 必須填 storage_field_name 欄位名 storage_field_view 顯示欄位名 必須填 storage_field_index 對應於感測器在 RF 射頻資料 中的索引號 storage_value_type 儲存值資料類型 必須填
0:1 位元組數值 1:2 位元組數值 2:4 位元組數值 其他:特定類型 storage_value_offset 資料在 RF 資料中的偏移量(以 位元組為單位,從 0 開始) 必須填 storage_value_length 資料長度(位元組單位) 必須填 storage_value_unit 單位,獲取數值將除於這個值 (通常為 1 即可) 添加儲存表 每種類型的節點儲存於一個單獨的表中,這個表名必須與T_STORAGE_TYPE對應。 打開 data/data.mdb 的資料庫表必須包含下面三個規定的欄位: data_id 資料記錄號 自增欄位(自動編號) 新建相應的表,儲存 data_time 資料儲存時間 日期/時間類型 node_id 節點號 數位類型 此,使用者就可以在原有的系統中使用自己的感測器了。
、 成果貢獻
是著重在認識 WinCE 的使用操作與應用,還有程式碼的修改及編 譯, 6 網狀網 路即六、 參考文獻
SBase270(EELiod)ADS/Linux/WinCE 計畫開發與實務,高雄,華亨[2] 著,XSBase270(EELiod)WinCE5.0 operating system 使用手冊,高雄,華亨
[3] 編著,Windows CE 程式設計講座(使用 eMbedded Visual Basic),文魁資訊,
[4] 義証 編著,Visual Basic2005 程式設計經典,碁峯資訊,民國九十 至
五
計畫其內容主要 以著重於程式的編譯設計後再嘗試與硬體的結合做控制,期望在接下來的部份,除 了能符合成為教學教案之外也能更著重於系統整合間與嵌入式控制的目標。 本計畫使用 ZigBee 無線定位開發系統,讓使用者可用來進行 ZigBee-200 時定位系統的開發而且設計並實現感測器與嵌入式系統硬體,相容的感測器類型有 A/D 感測器、開關式感測器及數位式感測器。 [1] 陳順隆編著,X 科技。 陳順隆編 科技。 黃昭仁 民國九十二年。 曹祖聖/蔡文龍/林 五年。[5] Ivor Horton 著、蔡明志 譯,Visual C++ 6,台北,碁峰資訊,民國八十八年。 [6] 華亨科技,ZigBee 無線開發定位系統,CC2430_CC2431 使用指南。