物聯網專題實踐tinyos傳感器網絡實現圖書館座位管理系統_第1頁
物聯網專題實踐tinyos傳感器網絡實現圖書館座位管理系統_第2頁
物聯網專題實踐tinyos傳感器網絡實現圖書館座位管理系統_第3頁
物聯網專題實踐tinyos傳感器網絡實現圖書館座位管理系統_第4頁
物聯網專題實踐tinyos傳感器網絡實現圖書館座位管理系統_第5頁
已閱讀5頁,還剩2頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、無線與傳感器網絡實驗實驗報告題 目基于TinyOS光感傳感器的圖書館座位管理系統學 院計算機學院專 業物聯網工程班 級學 號姓 名指導教師完成日期 一、項目背景及應用前景TinyOS具有微型化、支持輕量級并發操作、靈活、低功耗等優點,已經被成千上萬的研發人員采用,應用于范圍廣闊的無線傳感器網絡中。每個TinyOS程序至少應該具有一個用戶組件,該用戶組件通過接口調用下層組件提供的服務,實現程序的功能,如數據采集、數據處理、數據收發等。用戶組件的開發為TinyOS程序設計的重點。TinyOS提供一些常用組件,如執行組件、傳感器組件、通信組件。執行組件用于控制LED指示燈、繼電器、步進電機等硬件模塊

2、;傳感器組件用于采集環境數據,如溫度、亮度等;通信組件則實現與其它節點通信。TinyOS提供兩種通信組件:通過無線電收發器通信的組件和通過UART口通信的組件,后者則應用于槽節點中。硬件抽象層對上層組件屏蔽了底層硬件的特性,從而實現上層組件的硬件無關性,以方便程序移植。2、 功能描述本組選題為基于TinyOS光感傳感器的圖書館座位管理系統程序啟動后,節點終端有規律的在一段時間內接收光感信號,如果處于接收時段收到一個遮掩信號,則向中轉節點發送一個代表有人的信息包,否則發送一個代表無人的信息包,然后通過串口與PC連接,使用監聽工具對應的在PC上表示出有人或者無人的信息三、結構描述通信結構從通信的結

3、構來說,系統共分為3個部分:終端節點收發數據,根據收到的數據讓某個燈亮;中轉節點中轉計算機端和終端節點收發的數據;計算機端接收到中轉節點發來的數據并進行處理。系統結構概念如圖3-1所示。 圖3-1 系統結構概念圖四、系統的設計與實現本系統由三個部分組成:計算機端、1個中轉節點和4個終端節點。系統具體設計為:計算機端從程序一開始的時候,通過中轉節點分別向四個節點發送reset信息,終端節點接收到數據后把所有座位置為空,終端節點定期檢測光強變化,并判斷是否有人占據座位,相應的改變亮燈位置,向中轉節點發送數據,計算機端通過端口監聽得到數據并進行處理,并在屏幕上顯示。4.1 終端節點終端節點是我們進行

4、效果演示的部分。它負責發數據,感應外界對它進行的操作(光感強度的變化)。實現這個部分的功能代碼如下:void sendToHost(uint16_t operate) if (!busy) Msg* btrpkt = (Msg*)(call Packet.getPayload(&pkt,sizeof(Msg); if (btrpkt = NULL) return; btrpkt->nodeid = TOS_NODE_ID; btrpkt->operate = operate; if (call AMSend.send(AM_BROADCAST_ADDR, &pkt,

5、 sizeof(Msg) = SUCCESS) busy = TRUE; void succeed() call Leds.led1On(); sendToHost(2); void failed() call Leds.led1Off(); sendToHost(1); 表4-1 DeskC.nc部分代碼4.2中轉節點對于中轉節點的代碼主要是基于BlinkToRadio實現的,部分代碼如表4-2所示。typedef nx_struct Msg nx_uint16_t nodeid; nx_uint16_t reset; nx_uint16_t operate; Msg;void resetR

6、ats() scoreAll=0; score=0; if (!busy) Msg* btrpkt = (Msg*)(call Packet.getPayload(&pkt,sizeof(Msg); if (btrpkt = NULL) return; btrpkt->nodeid =TOS_NODE_ID; btrpkt->operate =0; btrpkt->reset = 1; if (call AMSend.send(AM_BROADCAST_ADDR, &pkt, sizeof(Msg) = SUCCESS) busy = TRUE; printf

7、("Time out! Clear all information!n"); printfflush(); 表4-2 Control.nc部分代碼3)將1)對應id號燒入4個節點終端,將2)燒入中轉節點,終端節點只需在準備通信前裝上電池。4.3計算機端計算機端是系統數據處理的主要部分。首先由它向中轉節點發送reset信息,再由中轉節點轉發給終端節點。終端節點收到數據后將處理后的數據發給中轉節點,計算機端通過端口監聽得到數據并進行處理,顯示當前的各個“座位”信息在屏幕上。為了實現這個功能我們需要調用在/opt/tinyos-2.1.0/support/sdk/java/net

8、/tinyos/tools文件夾中的Printfclient.java文件,讓用戶看到具體的信息。4.4 系統使用完成程序燒錄之后,確保所有終端節點裝有電池以及中轉節點與計算機端成功相連,接下來的步驟如下:1、編譯并運行Printfclient.java。向命令行輸入javac Printfclient.java編譯成功后,再向命令行輸入java net.tinyos.tools.Printfclient運行java文件,可以看到目前各座位的信息。2、運行中轉節點的reset信號,使“座位”信息清空。3、用手遮掩使光強變化觀察節點變化和屏幕上顯示的信息。五、測試在測試過程中,我們發現當傳回的是

9、無人的信號時并不會立刻就在屏幕上顯示出來,而是經過一段時間之后才在屏幕上顯示多個座位無人的信息。我們猜測是中轉節點代碼不完善導致信息擁堵。測試數據如圖所示:六、總結與收獲6.1 遇到的問題和解決方法1)如何判斷光強在編寫代碼時我們首先考慮找到發送信息的光強字段,然后通過判斷光強進行下面一系列的操作,但是沒找到,參考了BlinkToRadio例子后我們發現這個信息在event void Read.readDone(error_t result, uint16_t data)中的data中,經過考慮,我們把閾值定為25,以判斷此時有人無人。2)檢測時間的確定之前確定檢測時間定為20秒,發現時間過長不利于觀察,我們又把數值定在了5秒6.2 總結本次課程中我們對TinyOS有了初步的接觸,學習了節點與系統之間的通信方式,節點的各項基本功能,并根據所學內容編寫了一個小樣例程序。在編寫的過程中我們發現了一些問題并一一解決,其中最主要的技術問題已經羅列在上文中。同時,我們還遇到了一些別的問題。例如在計算機端數據接受的過程中,中轉節點的消息堵塞造成不能立刻返回信息,數據不及時。在課程中,我們學習了TinyOS的理論知識,通過查

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論