• 沒有找到結果。

設計並實作在LoRa網路上可延長傳送距離之中繼轉傳機制

N/A
N/A
Protected

Academic year: 2021

Share "設計並實作在LoRa網路上可延長傳送距離之中繼轉傳機制"

Copied!
68
0
0

加載中.... (立即查看全文)

全文

(1)

國立高雄大學資訊工程學系研究所

碩士論文

設計並實作在

LoRa 網路上可延長傳送距離之

中繼轉傳機制

Design and implement a relay mechanism to extend the

transmission distance in LoRa networks

研究生:陳江源 撰

指導教授:郭錦福 博士

(2)
(3)

致謝

首先,我要先謝謝我的爸媽,感謝他們供我念書,沒有他們就沒有我。在高雄大學 的就學期間,我很高興郭錦福老師願意擔任我的執導教授,在他一步一步的細心指導下, 這兩年來讓我學到很多東西,非常感謝老師的教導,沒有老師的幫助,我根本無法完成 這篇論文。再來我要感謝資訊工程系辦的助理陳淑真小姐,在我剛進入校園時,是她耐 心的帶領我認識校園,以及不斷的為我加油打氣,還有叫我認真念書不要一直想要談戀 愛,總之非常感謝她,沒有她的幫助我絕對沒有辦法畢業。在高雄大學中我也認識了許 多朋友,包含李孟叡、張豪文、管浩鈞、沈志勳以及莊宗儒等等,是他們在研究上幫助 我進行實驗、程式碼除錯、陪我聊天和幫我買飯,俗話說「在家靠父母,出外靠朋友」, 有他們的陪伴與幫助,我才能度過這兩年的在學期間。 最後,感謝我的口試委員盧永豐老師和余亞儒老師,感謝他們耐心的聆聽我的報告, 以及給予我論文上的建議,使我的論文能夠更加完善。

(4)

i

設計並實作在

LoRa 網路上可延長傳送距離之

中繼轉傳機制

指導教授:郭錦福 博士 國立高雄大學資訊工程學系 學生:陳江源 國立高雄大學資訊工程學系 摘要 物聯網是讓所有獨立的物件實現相互相連網路,感知層(Sensor Layer)、網路層 (Network Layer)和應用層(Application Layer)。感知層是負責接收環境的相關資料,網路 層負責傳送感知層所接收的資料,應用層則是分析感知層接收的資料。其中網路層在物 聯網中佔了相當重要的位置,因此如何增加網路層的涵蓋率是相當重要的一個議題。網 路層中的通訊技術分為近距通訊和遠距通訊兩大類,在許多的應用中需要將訊息傳送至 很遠的地方,例如:農漁牧場監測、智慧城市等等。其中LoRa 在物聯網的遠距通訊技 術中,使用的是非授權頻道,且使用者可以自行架設私人LoRa 網路。而 LoRaWAN 的 運作方式是藉由LoRa 的通訊模組發送訊息,然後 LoRa 的閘道器接收訊息,閘道器收 到資料後會再將此資料上傳至網路伺服器(Network Server)。本篇論文提出延長 LoRa 訊 息傳送距離的中繼轉送機制,我們也利用LoRa 通訊模組、開發板和 LoRa 閘道器實作 中繼裝置,使它能夠轉傳訊息,增加原本的傳送距離,延長LoRa 原本的網路拓撲。此 外,我們也實驗在原LoRa 架構下增加中繼裝置後,對於訊息接收的影響,驗證中繼裝 置在LoRaWAN 的架構下運作的可行性。

(5)

ii

Design and implement a relay mechanism to extend the

transmission distance in LoRa networks

Advisor: Dr. Chin-Fu Kuo

Department of Computer Science and Information Engineering National University of Kaohsiung

Student: Jiang-Yuan Chen

Department of Computer Science and Information Engineering National University of Kaohsiung

ABSTRACT

The Internet of Things (IoT) is a network that connects many independent objects. The architecture of IoT consists of the Sensor Layer, Network Layer, and Application Layer. Sensor Layer is responsible for receiving environment-related data; Network Layer is responsible for transmitting the data received by sensor devices; Application Layer is for analyzing the data from the sensor nodes. Network Layer plays a vital role in IoT, and how to increase the coverage of a network is a critical issue, especial for a wireless network. The communication technologies of the networks can be divided into two major categories: near-distance communication and long-distance communication. In many applications, it is necessary to send messages to faraway places, such as agricultural monitoring, fishery monitoring, pasture monitoring, and smart cities, etc. LoRa is long-distance communication technology and uses unlicensed bands. Besides, users can construct their private LoRa networks. The operation of LoRaWAN is to send messages through LoRa's communication module, and then a LoRa's gateway receives the messages. Finally, the gateway will upload the messages to the network server. This paper proposes a relay transmission mechanism to extend the transmission distance of the original LoRa network. We also use LoRa communication modules, development boards, and LoRa gateways to implement relay devices. With the relay devices, the original transmission distance is extended.

(6)

iii

圖目錄

2.1 LoRaWAN 網路架構圖………10

2.2 類別 A、B、C 傳送與接收流程………12

3.1 閘道器的 MQTT broker 選項………14

3.2 GW 設定可接收 LoRa 通訊模組的 Mac address………14

3.3 Gateway 閘道器………14

3.4 (a) 終端裝置(End Device) (b) ED 結構圖………15

3.5 ED 中開發板的程式演算法………15

3.6 ED 傳送訊息例子………17

3.7 (a) 中繼節點(Relay Node) (b) RN 結構圖.………17

3.8 RN 中開發板的程式流程圖………18 3.9 應用伺服器………19 3.10 應用伺服器的程式流程圖………20 3.11 網路伺服器……….………22 3.12 一般 LoRa 通訊傳送示意圖………….………23 3.13 使用單一 RN 情境……….………24 3.14 多個 RN 且為鏈狀拓撲(Chain topology)的訊息情境………25 3.15 多個 RN 且非鏈狀拓撲(Chain topology)的訊息傳遞情境-1………26 3.16 多個 RN 且非鏈狀拓撲(Chain topology)的訊息傳遞情境-2………27 4.1 ED 裝置………29 4.2 ED 開發板上的程式碼-1………31 4.3 ED 開發板上的程式碼-2………32 4.4 RN 裝置………34 4.5 RN 開發板上的程式碼………35

(7)

iv 4.6 伺服器上的程式碼-1………38 4.7 伺服器上的程式碼-2….………39 5.1 高雄大學地圖………46 5.2 鏈狀拓撲場地佈置-1………47 5.3 鏈狀拓撲場地佈置-2………48 5.4 只有一個 RN 時,ED 與 RN 採用相同的 DR 號碼下, 不同傳送時間間格之訊息接收成功率………50 5.5 只有一個 RN 時,ED 與 RN 採用不同的 DR 號碼下, 不同傳送時間間格之訊息接收成功率………51 5.6 2 個 RN 時不同傳送時間間格之訊息接收成功率………52 5.7 訊息長度之訊息接收成功率………54 5.8 2 個 ED 使用不同傳送時間間格之訊息接收失敗率………55

(8)

v

表目錄

(9)

vi

目錄

圖目錄 iii 表目錄 v 第一章、緒論 1 1.1 前言……….1 1.2 文獻回顧……….4 1.3 全文架構……….6 第二章、背景介紹 7 2.1 LPWAN介紹………7 2.1 LoRa介紹……….9 第三章、能夠延長LoRa訊號傳遞距離的機制 13 3.1 裝置名詞定義與運作模式……….13 3.1.1 LoRa閘道器(Gateway).……….13 3.1.2 終端裝置(End Device)………15 3.1.3 中繼節點(Relay Node)………17 3.1.4 應用伺服器(Application Server)……….19 3.1.5 網路伺服器(Network Server)……….……….22 3.2 不同拓撲架構下機制運作說明………23 3.2.1 無使用RN的一般傳送………23 3.2.2 使用一個RN進行訊息轉送………24 3.2.3 多個RN且為鏈狀拓撲(Chain topology)的訊息傳遞………25 3.2.4 多個RN且非鏈狀拓撲(Chain topology)的訊息傳遞………26 第四章、機制實作 28 4.1 硬體與軟體介紹………28

(10)

vii 4.1.1 ED硬體與軟體說明……….………28 4.1.2 RN硬體與軟體說明………34 4.1.3 AS硬體與軟體說明………37 4.1.4 NS硬體與軟體說明………42 4.2 實作重點整理………43 4.2.1 RN運作……….43 4.2.2 GW接收多個訊息………44 第五章、效能評估 45 5.1 實驗條件與評估準則………45 5.1.1 實驗場域與GW裝置佈置……….46 5.1.2 鏈狀拓撲(Chain topology)的實驗-只有一個RN………47 5.1.3 鏈狀拓撲(Chain topology)的實驗-有兩個RN………48 5.1.4 實驗評估準則……….49 5.2 實驗結果………50 5.2.1 鏈狀拓撲(Chain topology)下ED傳送的時間變化-只有一個RN………50 5.2.2 鏈狀拓撲(Chain topology)下ED傳送的時間變化-有兩個RN………52 5.2.3 ED在鏈狀拓撲(Chain topology)傳送的封包長度變化………54 5.2.4 兩個ED在鏈狀拓撲(Chain topology)傳送的時間間格變化………55 第六章、結論與未來方向 56 參考文獻 57

(11)

1

第一章

緒論

1.1 前言

近幾年來物聯網蓬勃發展,而物聯網是結合網際網路與傳統電信網等的資訊乘載體, 讓原本只能行使獨立功能的普通物體實現互聯互通的網絡。這項概念是在 1999 年所提 出,原始定義很簡單,將各式各樣的物件以無線射頻辨識(Radio Frequency IDentification: RFID)感測設備(例如:RFID 標籤、感測器和收發器等等)與網際網路(Internet)連接,利 用數位化的方式達到物件的識別與管理,以某種通訊協定將資料傳至其他物件(如:伺 服器或是邊緣計算設備)進行後續處理,並且進行資料運算與決策[7]。 物聯網與我們的生活中的食衣住行育樂可以說是息息相關,人們可以藉由各式各樣 的感應器、微控器或是主動元件與物件進行溝通,例如:家中的電器、監視攝影機、顯 示器和車輛,甚至工廠中的生產線設備,公共設備如供水、電系統、電網物件等等,經 由感應器接收的大量數據傳至具極大儲存與計算能力後端伺服器,之後進行分析使用, 在後續上這些大量的資料又可以被應用在家庭自動化、工業自動化、智慧醫療、智慧城 市、汽車交通管理等各種應用[7],提升人類生活與提高生產力。物聯網時代的來臨將使 人類的生活產生極大的改變,但真正要進入物聯網時代可能還有一段很長的時間。 然而,物聯網這項技術也被預測在未來幾年當中會呈現指數性爆炸的成長[10]。甚 至有人提出萬物聯網(IoE)的概念,Gartner 組織將萬物聯網列為 2015 年的重要趨勢,其 想法為將人員、流程、數據和事務結合在一起[15],也就是說它所涵蓋的範圍將比物聯 網還要更大,將對於各個領域產生改變,並產生全新的經濟機會。但是以現今的物聯網 的架構下來說,物聯網距離萬物聯網的架構還有一段距離,也就說明了這個市場可開發 性非常之龐大。 物聯網的架構分為三個主要層次:感知層(Sensor Layer):顧名思義,是物聯網中用 來感知各式外界環境的資料,例如聲音、光線、溫度、壓力等。常用的感知工具有:感

(12)

2

測器(Sensor)、辨識器(Identifier)、影音監控(Video Surveillance)等等。利用相關感知工具 取得資料後,再藉由網路層傳遞至遠端。網路層(Network Layer):負責將感知層所接收 到的資料,藉由專屬的近距與遠距通訊協定將資料接收或傳送。近距通訊技術,例如: 藍芽、Wifi、4G、ZigBee 等,屬於高功耗、距離短、成本高的傳輸技術。而遠距通訊, 又分為LoRa(Long Range),為目前最受產業支持,以及窄頻物聯網(Narrow Band-IOT), 相較 LoRa 速度更快,覆蓋範圍更大,是未來被看好的產業標準。應用層(Application Layer):主要是將感知層所收到的資料,透過演算法、機器學習、AI 等等方式,把資料 分析成有用的數據。 其中,物聯網的網路層屬於相當重要的一環,若是沒有辦法接收或發送訊息,那麼 一切將會是紙上談兵。在許多實際運用上都會需要將訊號傳遞至很遠的距離,例如:農 漁牧場監測、山區海洋氣象監測、智慧城市等等,這些應用上的訊號覆蓋範圍非常廣。 在物聯網遠距通訊的技術中,LoRa(Long Range)是最受產業支持,且使用的是非授權頻 譜。所以在本篇論文中,我們將以LoRa 通訊技術主軸,提出有效改善 LoRa 通訊技術 的機制。 以 LoRa 的傳送距離來說,理論上最遠的傳送距離可長達 20 公里。但實際上當超 過某個距離或是受地形與遮蔽物影響時,LoRa 的傳送與接收上就會有訊號不穩定的情 況,開始出現資料掉包的狀況。由於原本LoRa 的拓譜結構是以閘道器為中心的星狀結 構,閘道器之間並無法進行溝通,為了解決這項問題,可以加設接收資料的閘道器,使 訊號的接收範圍增加。但這樣就會多付出建置網路的成本,像是在偏遠地區的農場、深 山、沙漠甚至海洋等等,網路基礎設備建置成本與增進利益不成比例。試想如可以製作 出不付出架設網路線路成本即可以架設的轉送硬體,類似於強波器的中繼節點裝置,藉 由此裝置來接收資料並轉送給LoRa 閘道器,這樣既能解決延長訊號範圍,亦能減少建 置網路的成本。 本篇論文將介紹如何在LoRa 的通訊協定下,創造一個能夠延長訊號傳送距離的機 制,在其機制下擁有下列優點:增加基地台訊號接收範圍、延長傳送資料的距離、減少 架設基地台網路的成本、減少資料重複的機制、減少資料掉包的機制。利用本篇論文所

(13)

3

提出的機制,將能增加LoRa 的可用性,並增加更多靈活性,也將在物聯網的應用中增 加資料的接收穩定性。

(14)

4

1.2 文獻回顧

Wixed 等人[8]研究關於 LoRa 無線通訊技術,以及 LoRaWAN 網路架構的貢獻,論 文中介紹了最基本的 LoRaWAN,以及藉由一些測試來評估 LoRa 的實用性和效能以及 對於物聯網中的應用。要使用一項技術時,我們必須知道其能力範圍,在文獻[1]中探討 了LoRa 的極限,包含了模擬 LoRa 在傳送不同大小的訊息長度訊息傳送的時間長度變 化,和在多個裝置所接收到的封包等等。LoRa 是一項低功耗、遠距離傳送的通訊技術, 適合用在農場監測的應用,Davcev 等人在[2]提到如何使用 LoRa 去實作農場監測,藉 由LoRaWAN 的網路架構,將農場監測的訊息,透過 LoRa 的無線通訊技術傳送至 LoRa 閘道器,接著藉由有線網路上傳訊息,使用者可以架設應用伺服器拿取訊息。 關於在LoRa 網路建置中繼節點部分文線為[3、4、6],在[6]中有提到如何利用 LoRa 通訊模組製作出中繼節點的裝置,但此篇論文提出的方法,是屬於利用底層的硬體設計 為基礎,需要使中繼節點裝置有週期性的接收終端裝置訊號,並且與網路伺服器 (Network Server)有著許多特定的協定機制,如綁定、訊息傳送、解綁定。例如在終端裝 置在需要中繼節點轉送訊息時,它必須先與中繼節點綁定(Binding),接著才能傳送訊息。 當終端裝置傳送訊息完畢後,它必須再與中繼節點解綁定(Unbinding)。因此,LoRa 通 訊的底層硬體設計是需要許多控制封包的運作之下,才能達成訊息的傳送與接收。與我 們所提出的機制相比,我們希望能夠使用既有的現成硬體,如閘道器、開發板、LoRa 通 訊模組,以撰寫軟體程式處理閘道器收到訊息並控制LoRa 通訊模組,達成延長訊息傳 送距離的效果 而Diop 等人在[3]中,則提出使用 Arduino 開發板控制通訊模組,與我們提出的機 制相似,雖然此篇論文所提出的中繼節點裝置優點為裝置器材簡單、體積小,但缺點為 訊號接收範圍小、使用電池實作。而在此篇論文中的實作,只使用了一個中繼節點,而 我們希望能設計與實作多個RN 能夠同時運作,增加訊息的傳送距離。中繼節點裝置的 主要功能為延長訊息的傳送距離,所以接收範圍極為重要,以一般的兩個LoRa 通訊模 組互相接收的距離,比使用LoRa 閘道器接收訊息的距離差距很遠。因此在我們所提出

(15)

5 的機制中,我們以LoRa 閘道器的接收範圍為考量設計可以加強中繼節點訊息接收範圍 的裝置。 Diap 等人在[4]中所提出的方法與我們所提出的機制相似,使用開發板、LoRa 通訊 模組與 LoRa 閘道器組合成可以中繼訊息的裝置。在文中提到,他們實作了 Class A 與 Class C,確實可以達到延長 LoRa 傳送距離,但此篇論文探討的是硬體層訊號雜訊比的 改善。而我們的研究方向則是希望利用既有的底層設計之下,探討利用應用層的程式運 作,達到多跳的(Multi-hop)中繼轉送機制。

(16)

6

1.3 全文架構

本篇論文的架構如下:第二章將說明背景知識,介紹 LPWAN 與 LoRa 相關知識; 第三章將說明能夠延長LoRa 訊號傳遞距離的機制,首先定義裝置名詞,接著說明在鏈 狀與非鏈狀的拓撲架構下,我們所提出的機制如何運作;第四章說明我們如何實作所提 的機制;第五章將會作機制的驗證,並觀察鏈狀拓撲下的訊息接收成功率,說明其背後 的原因;第六章將進行結論與提出未來的研究方向。

(17)

7

第二章

背景介紹

在介紹本篇論文的所提出的LoRa 中繼站機制前,首先我們將介紹物聯網中廣泛被 使用的長距離低功率的 Low-Power Wide-Area Network (LPWAN) [5],並說明屬於 LPWAN 中的 LoRaWAN[16]、Sigfox[20]與 NB-IoT[14]。在本論文中我們探討建置非授 權頻帶的 LoRaWAN,建製其中繼站,本節除介紹 LoRaWAN 通訊技術協定外,並將 Sigfox 與 NB-IoT 技術的特性做比較。

2.1 LPWAN 介紹

LPWAN(Low-Power Wide-Area Network)顧名思義就是使用低功耗、遠距離傳送資

料的一項無線網路技術。而LPWAN 可以用來建立私有的無線感測網路,也可以是一

個第三方提供的服務或基礎設施,使感測器的擁有者可以直接部屬感測器,不必投資 經費於基地台的建設。

在LPWAN[5]中有包含 Sigfox、NB-IoT 和 LoRaWAN 等技術, Sigfox[20]使用的是 Binary Phase Shift Keying (BPSK)無線調變傳送技術,最大傳送的訊息的速率為 100 bps。 每天只能傳送140 則上行訊息和 4 則下行訊息,每則上行訊息的最大長度為 12 bytes, 下行為8bytes。在市區中的傳送距離最遠 10 km,在郊區最遠傳送距離為 40 km,且不 能使用私人網域,必須向Sigfox 公司申請才可以使用。由於不能使用私人網域的限制, 故在建置延伸網路時,有其限制。

NB-IoT[14]使用的是 Quadrature Phase Shift Keying (QPSK)調變技術,最大傳送速率 為200 kbps,傳送的訊息數量沒有限制,而訊息的最大長度可達 1600 bytes。在市區中 最遠傳送距離為1 km,在郊區則是 100 km,且不能使用私人網域,必須向提供 NB-IoT

(18)

8

通訊服務電信公司申請帳號才能夠使用。以傳送的訊息數量與限制而言,比 Sigfox 較 佔優勢,但與Sigfox 有相同的缺點,就是不能建製私人網域。

LoRaWAN[5]是使用 Chirp Spread Spectrum (CSS)的調變技術,最大的傳送速率為 50 kbps,傳送訊息數量沒有限制,訊息最大長度可達 243 bytes。在市區中最遠傳送距離為 5 km,在郊區則是 20 km。而最重要的是,使用者可以建立自己的私人網域。雖然傳送 的距離不及Sigfox,且訊息最大長度不及 NB-IoT,但以實作的方便性來說,LoRaWAN 是最為方便的,本篇論文以LoRaWAN 的技術做為研究對象。

(19)

9

2.2 LoRa 介紹

LoRa(Long Range)[16]是一種無線通訊技術,由 Cycleo 公司在 2010 年發明,該公 司在 2012 年被 Semtech(半導體公司)收購,LoRa 使用 Chirp Spread Spectrum (CSS)的 調變技術做為物理層(Physical Layer),比起 Frequency Shifting Keying (FSK)的調變技術, LoRa 有相同的低功率特性,但卻明顯提高了通訊範圍。而 CSS 的調變技術在軍事與太 空通訊中已經使用超過了數十年,具有長距離通訊和抗干擾等優點,且LoRa 是第一個 用於商業用途且低成本的通訊技術。LoRa 的 MAC 層被稱為 LoRaWAN™(LoRa for Wide AreaNetworks)規範,該規範由 LoRa® Alliance 支援並開放。

LoRa 有著遠距離傳送訊息的優點,在單一個閘道器下,理論上即可覆蓋數百平方 公里的通訊範圍。而LoRa 的低功耗特性大幅增加了 LoRa 裝置的使用時間,並且使用 的頻段是免照頻段(Unlicensed Band)頻譜,使得 LoRa 網路的架設成本降低許多。

LoRa 的網路架構是使用 LoRaWAN 的網路架構,其架構採用的是星狀拓撲,每個 終端節點與閘道器形成一個星狀結構。當終端節點裝置(End Device:ED)接收到感測器 的資料時,會藉由 LoRa 通訊協定,將資料傳送至 LoRa 閘道器(Gateway:GW)。當閘 道器收到終端節點裝置的訊息時,會接著上傳至網路伺服器(Network Server:NS),使用 者可以架設應用伺服器(Application Server:AS)擷取傳到網路伺服器的資料,將這些資 料做處理或分析,如圖2.1 所示。

(20)

10 圖2.1 LoRaWAN 網路架構圖 裝置與閘道器的通訊模式可分為三類,分別為Class A、B 和 C,在說明這三類通訊 模式前,我們必須先說明LoRaWAN 中的兩種傳輸行為。在圖 2.1 為 LoRaWAN 的網路 架構圖,從圖中我們可以看出 LoRaWAN 所採用的的是星狀(Star)拓譜。終端節點裝置 收到感測器的資料後,將資料傳送到閘道器(Gateway),終端節點裝置不需要挑選要使用 哪個 Gateway 收發資料,而是終端裝置會向周邊所有的閘道器發送資料,再傳送到網 路伺服器(Network Server),這樣的傳輸行為我們稱之為上行傳輸(Uplink transmission)。 相反的,當網路伺服器將訊息從右到左傳送至終端節點裝置,這樣的傳輸行為我們稱之 為下行傳輸(Downlink transmission)。

LoRaWAN 協議中定義了類別(Class) A、B、C 三種不同溝通的協議,讓不同需求 設備選擇適合的協議方式,使得LoRaWAN 裝置依據其使用協議,被分成了三種裝置類 別。圖 2.2 為類別 A、B、與 C 的傳送與接收訊息之運作流程,當裝置使用類別 A 通 訊協議模式時,允許雙向溝通(Uplink 與 Downlink),在使用上行(Uplink)發射窗口傳輸 資料後,會開啟兩段短暫的時間作為接收下行傳輸訊息的窗口,除了這兩段時間,在其 他時間都無法接收下行訊息,這是為了省電。只有在RX1 與 RX2 這兩段時間內才可以 接收下行訊息,而從發送完上行訊息到RX1 的這段期間我們稱之為 RX Delay 1,發送 終端節點裝置 (End Device) 閘道器 (Gateway) 網路伺服器 (Network Server) 應用伺服器 (Application Server)

ED

1 GW1

NS

AS

1

ED

2

ED

3

ED

4 GW2 GW3

AS

2

AS

3 LoRa RF LoRaWAN TCP/IP SSL LoRaWAN TCP/IP SSL Secure Payload

(21)

11

完上行到RX2 的期間則為 RX Delay 2,根據 LoRa Alliance 官方釋出的區域參數規格書 [18],在台灣 RX Delay 1 約為 1 秒,RX Delay 2 則約為 2 秒。因為這樣的特性,使得 Class A 為三種通訊協議模式中最為省電。 而使用類別B 通訊協議模式終端節點裝置也會具有類別 A 的模式,當類別 B 模式 運作時,裝置會在固定的時間接收下行訊息,因此閘道器必須配合終端節點裝置所接收 下行訊息的時間,通常這種模式會先在裝置的底層硬體設計,使用者無法進行調整或修 改。在終端節點裝置要發送信號前,需要先接收閘道器發送的信標(Beacon)訊息,此訊 息是用來校正閘道器與終端節點裝置發送與接收的時間。接著終端節點裝置在發送上行 訊息前,終端節點裝置會先發送 ping 訊息告知閘道器它要發送上行訊息。因此類別 B 終端節點裝置的網路伺服器必須先知道裝置的ping slot 的時間、Data rate(數據傳輸速率) 和傳送與接收的頻率頻道。相較於類別A,類別 B 接收下行訊息的效率較好,但較為耗 電。 採用類別 C 通訊模式的終端節點裝置幾乎連續打開的接收通道,可以隨時接收下 行訊息,只在發送時關閉。因此在三個通訊模式中,它是最為耗電的模式。當發送完上 行訊息後都是RX,代表一直是接收下行訊息的期間,直到又發生下一次發送上行訊息 為止。 總結類別的各項優缺點,類別 A 的優點為省電,但缺點為接收下行訊息的效率較 差。類別 B 的優點為接收下行的效率較佳,缺點較為耗電。類別 C 的優點為在執行完 發送上行訊息時,都可以接收下行訊息,為三個類別中最耗電。

(22)

12

(23)

13

第三章

可延長傳送距離之

LoRa 中繼轉傳機制

為了能夠延長終端裝置與閘道器的LoRa 訊息傳遞距離,我們提出了架設能夠轉送 訊息的中繼節點機制,本章定義與說明整個機制運作過程中有關的所有裝置與其功能, 並且解釋裝置上的設定與採用的開發板上的程式流程。最後,我們將說明中繼節點如何 在不同應用情境下運作,達到延長傳送距離的效果。

3.1 裝置名詞定義與運作模式

本節將會介紹機制運作中使用到的相關裝置,包含具有LoRa 傳送模組的終端裝置、 接收LoRa 訊息的閘道器、以及儲存資料之應用伺服器。此外,為能夠延長 LoRa 訊號 的距離,也將說明本論文提出的機制中需要的LoRa 中繼節點。 3.1.1 LoRa 閘道器(Gateway) LoRa 閘道器是用來接收 LoRa 通訊模組所發送的訊息,並且連接上網路才能將所 收到的訊息傳到網路伺服器。利用設定閘道器的網路伺服器選項,填入網路伺服器所在 機器的IP 後,如圖 3.1 所示的設定畫面,這樣才能讓閘道器所收到的訊息,夠透過網路 伺服器發布給訂閱者。在我們所探討的應用情境中,會向網路伺服器訂閱以閘道器裝置 位址(Mac address)與上行或是下行資訊所組合成的主題。一般使用者可以利用 MQTT 的 客戶端應用程式(例如:MQTT.fx)或是撰寫程式與網路伺服器連線,並訂閱該主題即可 取得閘道器收到來自LoRa 通訊模組的訊息。閘道器能接收某個 LoRa 通訊模組的訊息, 是因為閘道器中做了相關設定,只要該LoRa 通訊模組的 Mac address 有在接收清單中, 閘道器才會接收傳遞過來的訊息。如圖3.2 所示,Mac address 右邊的欄位為使用 LoRa

(24)

14

通訊協定下所使用的認證,使用預設即可。在本篇論文中將以 GW 作為簡稱,並以圖

3.3 表示。

圖3.1 閘道器的網路伺服器選項

圖3.2 GW 設定可接收 LoRa 通訊模組的 Mac address

圖3.3 Gateway 閘道器 GW

(25)

15 3.1.2 終端裝置(End Device) 終端裝置的硬體設備主要是開發板與 LoRa 通訊模組所組成,圖 3.4(b)為 ED 的結 構圖。在實際應用中,終端裝置可能還連接了感測器(例如:溫溼度感測器、GPS 定位 模組等等),開發板將從感應器所收到的感測資料,藉由 LoRa 通訊模組傳送出去。在本 論文中,我們將在開發板上以程式碼控制發送訊息,而終端裝置以圖3.4(a)表示,以 ED 作為簡稱。 (a) (b) 圖3.4 (a)終端裝置(End Device) (b) ED 結構圖 Algorithm 1 ED 程式演算法 1: Function 𝑆𝑒𝑛𝑑𝑀𝑒𝑠𝑠𝑎𝑔𝑒(𝑀𝑎𝑐𝐴𝑑𝑑𝑟𝑒𝑠𝑠, 𝑇𝐻, 𝑡) 2: 定義訊息檢查碼SerNumber,並初始化為 0; 3: 定義感測資料SensorData; 4: 定義傳送訊息SendMessage; 5: While(1) 6: 讀取感測器,並將數值存在SendData;

7: 將 MacAddress、SerNumber、與 SensorData 合併成 SendMessage; 8: 將 SendMessage 轉換成 16 進制數值; 9: for i=1 to TH 10: 對 LoRa 通訊模組下指令傳送 SendMessage 的 16 進制形式的內 容; 11: if 接受到 GW 的 ack 回應 then 12: break; 13: 閒置 t 秒; 14: SerNumber++; 15: Function end 圖3.5 ED 中開發板的程式演算法 ED 開發板 LoRa通訊模組

ED

(26)

16 ED 的運作流程如圖 3.5 中的演算法所示,𝑀𝑎𝑐𝐴𝑑𝑑𝑟𝑒𝑠𝑠、𝑇𝐻、與𝑡分別為 Mac Address、最多重傳次數與傳完後閒置時間。為讓應用伺服器辨別訊息是由哪個 ED 傳送 過來,我們將在傳送的訊息中增加 Mac address;為了避免傳送時封包遺失,我們將在 訊息傳遞後,沒有收到回應時,將嘗試再傳送,而重傳次數最多為TH 次;為了避免資 料庫中資料重複,我們增加訊息檢查碼SerNumber。 每次開 發板 讀取 完感 測器資 料後 ,將 MacAddress 、SerNumber 、與感測資料 SensorData 合併。由於 LoRa 通訊模組無法直接傳送字串,所以需要將字串中每個位元 組轉成兩個16 進制的數值後,才能將訊息傳送。傳送後,如果能收到從 GW 回傳的回 應(ack),代表訊息已正常被 GW 收到,系統將閒置 t 秒;否則,將嘗試再傳送當筆訊 息,直到傳送訊息成功,或是重送次數達到使用者自訂的次數為止。訊息檢查碼數值將 在ED 傳送訊息過程中逐漸加 1,由於檢查碼不應過長,我們建議利用一個八位元數字 維護即可。 在我們所提出的機制中,傳送的訊息有一定的格式。訊息中包含LoRa 通訊模組的 裝置位址(MAC address)、判斷訊息是否重複的訊息檢查碼,以及所要傳送的資料(Data)。 圖3.6 為一個傳送的訊息例子,通訊模組的 MAC address 為 0x1234ABCD,如果該筆訊 息的編號為245,則檢查碼數值為 0xF5,也就是 245 的 16 進制數字。如果感測資料 Data 為25.6,數字 2 在 ASCII 碼中的 16 進制為 0x32,依此類推。將每個數字或是符號轉成 兩個16 進制數字,25.6 所轉換的 16 進位數字即為 0x32352E36。當要傳送時,開發板 對LoRa 通訊模組下指令 mac tx cnf 1 1234ABCDFf532352E36。應用伺服器接收到訊息 後,必須依照ACSII 編碼方式將收到的訊息(包含 MAC address、Data、與檢查碼)做解 碼,才能得到ED 原本傳送的訊息。如果 ED 有多種感測資料(如:GPS 位置、溫度、溼 度等)要傳送,可以將感測資料合併在傳送訊息中,只要在資料間安插辨識碼(如:分號、 逗號等),在應用伺服器收到時利用辨識碼,即可分割出多個個別資料。

(27)

17

裝置位址(MAC address) 檢查碼 資料(Data)

編號 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 訊息 1 2 3 4 A B C D F 5 3 2 3 5 2 E 3 6 圖3.6 ED 傳送訊息例子 3.1.3 中繼節點(Relay Node) 由於原本的閘道器無法在接收訊息後,直接再將訊息透過天線傳出來。為了能將訊 息傳送更遠,本論文提出以中繼節點來轉送LoRa 訊息,轉送的對象可能是 GW 或是其 它的中繼節點。我們所設計的中繼節點裝置包含一個LoRa 的閘道器、網路集線器(Hub) 以及一個具有 LoRa 通訊模組的開發板,圖 3.7(b)為 RN 的結構圖。RN 中的閘道器與 GW 是相同的裝置,但閘道器是無法將收到的訊息直接轉送,因此 RN 中需要藉由開發 板接收閘道器訊息後,再將訊息傳送出去,達到轉送給RN 或是 GW 的目的。閘道器與 開發板利用集線器連結形成一個Class C 的區域網路,所使用的是 Private IP,無須連接 到 Internet。在開發板上安裝網路伺服器,並且在閘道器上設定此網路伺服器的 IP。而 開發板所連接的LoRa 通訊模組,在當閘道器接收到訊息時,可以再藉由 LoRa 通訊模 組將訊息發送出去,達到轉送的效果。在本篇論文中以圖3.7(a)表示,並以 RN 簡稱。

(a) (b)

圖3.7 (a) 中繼節點(Relay Node) (b) RN 結構圖

當 ED 距離 GW 太遠或是之間有遮蔽物導致訊號不良時,我們可以在這之間架設 RN。RN 將會接收涵蓋範圍內且有列在接收 Mac address 清單的 LoRa 通訊模組所傳送

RN

開發板 LoRa通訊模組

RN

(28)

18 過來的訊息,並且將此訊息再轉送給其它的RN 或是 GW,利用 RN 的設置可以延長傳 遞距離,或是減少欲傳遞訊息遺失的情況。此外,RN 無須連接 Internet,只須要有電源 即可讓RN 運作,RN 中開發板的程式流程圖如圖 3.8 所示。 圖3.8 RN 中開發板的程式流程圖 在RN 轉送訊息的過程中,其 LoRa 通訊模組發送出的訊息,會由 RN 的閘道器收 到。為了避免這樣的情況發生,RN 中閘道器可接收的 Mac address 清單,將不會把 RN 的LoRa 通訊模組 MAC address 列在其中。如此一來,當 RN 在轉送訊息時,RN 的閘 道器就不會收到RN 的 LoRa 通訊模組所發送的訊息。 程式開始 與RN中開發板所架設 的網路伺服器連線 訂閱RN中 閘道器的主題 是否收到 網路伺服器 傳來的訊息 對LoRa通訊模組 下指令傳送訊息 否 是

(29)

19 3.1.4 應用伺服器(Application Server) 應用伺服器目的在於儲存ED 所傳送過來的訊息,我們將以資料庫儲存。應用伺服 器架設在電腦或是開發板(例如:Raspberry Pi),應用伺服器要能夠與 GW 所設定的網路 伺服器連線,並且訂閱 GW 的主題。在我們提出的機制下,RN 訊息轉送時,ED 的位 置可能是在GW 與 RN 訊號涵蓋範圍,這樣會造成 GW 收到直接來自 ED 和由 RN 轉送 的重複訊息,因此應用伺服器必須過濾 GW 所接收到的訊息,以確保同一筆訊息不會 在資料庫中重複,並且當多個 ED 傳送時,能夠存入相對應的資料表中,因為每個 ED 所要記錄的資料個數與型態可能不一樣,譬如:有些ED 上可能是收集溫度,有些可能 GPS 經緯度與濕度。在本篇論文中,以圖 3.9 表示,並以 AS 簡稱。 圖3.9 應用伺服器 應用伺服器的運作模式是接收到由網路伺服器傳送過來的訊息後,將依這筆訊息的 檢查碼以及位址(Mac address)做過濾。過濾的原因是當 RN 在做訊息轉送時,ED 的位 置是在 GW 與 RN 訊號涵蓋範圍,這樣會造成 GW 收到重複訊息,而應用伺服器要過 濾重複訊息,在資料庫中只需留下一筆訊息,應用伺服器的程式流程圖如圖3.10 所示。

(30)

20 圖3.10 應用伺服器的程式流程圖 程式開始 與網路伺服器連線 訂閱GW的主題 使用空的資料結構 紀錄訊息的 Mac address和檢查碼 檢查所有 資料結構中的ma欄位 是否有與此訊息的 Mac address相同? 檢查資料結構中 相對應的sn 是否與次訊息的 檢查碼相同? 否 是 更新資料結構中 相對應的ma和sn 儲存此訊息 至資料庫 否 是

(31)

21 應用伺服器程式運作方式如下:首先,針對每個ED,有一個專屬於它的資料結構, 裡面有2 個欄位:ma 和 sn,分別是用來紀錄從該 ED 所接收的上筆訊息的裝置位址(Mac address)以及檢查碼。檢查碼是由 2 個各為 4 位元的 16 進制數字所組成的,檢查碼從 00 開始,每次ED 傳送訊息時都會加 1。檢查碼的範圍為 00 到 FF,總共可使用 256 個數 值。每當應用伺服器收到訊息時,先判斷所有ED 資料結構的 ma 欄位內容,是否與此 訊息的Mac address 相同。如果沒有,則代表傳送此訊息的 ED 是第一次傳送訊息,需 將此訊息的Mac address 以及檢查碼,存入空的資料結構中所對應的欄位,作為下次收 到訊息時判斷是否可存入資料庫的依據,再將此訊息存入資料庫中。 若該筆訊息的 Mac address 與某個 ma 欄位的內容相同,代表傳送此訊息的 ED 有 傳送過訊息給應用伺服器。所以我們需要檢查與此資料結構中的 sn 欄位的內容,是否 與此筆訊息中的檢查碼相同。若是不同,則代表此訊息為新訊息,需將此ED 的資料結 構中的欄位更新,再將此訊息存入資料庫中。如果有多個感測資料,可以以辨別碼分離 出個別資料,再存入資料表的不同欄位中。 最後,若是該筆訊息的裝置位址(Mac address),與某個 ma 欄位內容相同,且該筆 訊息的檢查碼也與相對應sn 欄位中的內容相同,則代表此筆訊息是 GW 接收到重複多 餘的訊息,可能是RN 轉送時所造成的重複訊息,所以不需將此筆訊息存入資料庫。

(32)

22 3.1.5 網路伺服器(Network Server) 網路伺服器的目的是將 GW 所收到的上行訊息,發送給有訂閱此 GW 的應用伺服 器。GW 會藉由有線網路的方式,將 GW 接收的上行訊息推送給有訂閱該 GW 的 AS, 藉此讓AS 取得 GW 所收到從 ED 發送的上行訊息。在本篇論文中以圖 3.11 表示,並以 NS 簡稱。 。 圖3.11 網路伺服器

NS

(33)

23

3.2 不同拓撲架構下機制運作說明

本節將介紹在本論文所提出的機制在不同的拓撲情境下,各個裝置的對應關係以及 運作方式。要探討的拓撲情境如下所示: (1)無使用 RN 的一般傳送 (2)使用一個 RN 進行訊息轉送 (3)多個 RN 且為鏈狀拓撲(Chain topology)的訊息傳遞 (4)多個 RN 且非鏈狀拓撲(Chain topology)的訊息傳遞 3.2.1 無使用 RN 的一般傳送 在一般的情況下,ED 在 GW 的訊號接收範圍內,ED 就可以藉由 LoRa 的通訊模組 將訊息傳送給GW。圖 3.12 為一般 LoRa 通訊傳送的示意圖,實線箭頭代表使用有線網 路,當GW 收到訊息後,會傳至網路伺服器。因為應用伺服器向網路伺服器訂閱 GW 的 主題,所以訊息會再傳給應用伺服器。在應用伺服器收到來自網路伺服器傳送的訊息後, 判斷如果不是重複訊息,就會將此訊息存入資料庫。虛線箭頭代表使用LoRa 通訊網路 傳送訊息,對GW 而言,ED 向 GW 傳送訊息的動作被稱之為上行傳送,因此應用伺服 器向網路伺服器訂閱的主題,會是由上行傳送的資訊與GW 的 Mac address 所組成的。 圖3.12 一般 LoRa 通訊傳送示意圖 ED GW

NS

AS

GW

ED

(34)

24 3.2.2 使用一個 RN 進行訊息轉送 當ED 不在 GW 的訊號接收範圍內時,ED 傳送的訊號就會不穩,訊息的傳送可能 出現遺失的情況。為解決這個問題,可以在ED 與 GW 之間設製一個我們所設計的 RN。 此RN 的位置必須安置在 GW 的訊號接收範圍,並且在可以接收 ED 的訊號接收範圍。 如此一來,ED 即可藉由 RN 將訊息轉送給 GW,如圖 3.13 所示。RN 中閘道器的可接 收訊息Mac address 清單中需要有 ED 的 LoRa 通訊模組的 Mac address,而 GW 的可接 收訊息Mac address 清單中需要有 RN 之 LoRa 通訊模組的 Mac address。

圖3.13 使用單一 RN 情境

RN

ED

GW

NS

(35)

25

3.2.3 多個 RN 且為鏈狀拓撲(Chain topology)的訊息傳遞

當ED 與 GW 之間的距離無法以一個 RN 轉送時,將需要在 ED 與 GW 之間設置多 個RN,且呈現簡單的鏈狀型式。利用多個 RN 轉送訊息,讓訊息能抵達 GW,情境的 示意圖如3.14。為了避免相鄰的兩個 RN 一直互相轉送同一筆訊息,如 RN1和RN2,我 們只要將 RN2閘道器的可接收 Mac address 清單中不列入 RN1的 LoRa 通訊模組 Mac address,即可解決。可接收 Mac address 清單的訂定原則:距離 GW 較遠的 RN 不要將 距離GW 較近的 RN 之 LoRa 通訊模組 Mac address 列在它的可接收清單中,即可避免 一直互相轉送的問題。 圖3.14 多個 RN 且為鏈狀拓撲(Chain topology)的訊息情境

ED

RN

1

RN

2

RN

k

GW

NS

AS

(36)

26 3.2.4 多個 RN 且非鏈狀拓撲(Chain topology)的訊息傳遞 在當多個RN 設置時,RN 的設置有可能步是鏈狀拓撲,而是一個較複雜的拓撲, 我們說明兩種情境,分別為圖3.15 與 3.16 所示。 圖3.15 多個 RN 且非鏈狀拓撲(Chain topology)的訊息傳遞情境-1 圖 3.15 中 GW 的接收範圍在範圍(1)內,RN1和 RN2架設在弧形範圍(1)的最外圍 上,使得訊號的接收範圍延伸至範圍(2)內。RN3架設在範圍(2)的最外圍上,使得訊號接 收範圍延伸至範圍(3)的最外圍內。 當ED1發送訊息時,會產生GW、RN1和RN2都收到, 範圍(1)內的 3 個虛線箭頭 表示三者皆會收到。經由轉送後,GW 會收到三筆相同訊息並傳給網路伺服器,如指向 GW 的三個虛線箭頭。應用伺服器會收到來自網路伺服器傳來的訊息,以應用伺服器來 說,這三筆訊息為同一筆訊息,為避免資料重複現象,應用伺服器需要做過濾,只將一 筆訊息存入資料庫內。 RN3 RN1 RN2 ED1 GW

(1)

(2)

(3)

NS

AS

(37)

27 圖3.16 多個 RN 且非鏈狀拓撲(Chain topology)的訊息傳遞情境-2 另一個情境如圖3.16 所示,當 ED2發送訊息時,RN1和RN3都收到訊息,如ED2 指向RN1與RN3的兩個虛線箭頭所示。接著,當RN3收到訊息後,會再將此訊息轉送 給RN1 與 RN2,以RN3指向RN1與RN2的兩個虛線箭頭表示。最後,GW 會收到 RN1 轉送的兩筆訊息,和 RN2轉送的一筆相同訊息,如指向 GW 的三個虛線箭頭。在這個 情況下,即使應用伺服器收到三筆相同的訊息,只要依照應用伺服器的過濾條件,即可 避免同筆資訊的重複。 RN3 RN1 RN2 ED2 GW

(1)

(2)

(3)

NS

AS

(38)

28

第四章

機制實作

本章將依據第三章所提出的機制想法,利用實際的軟硬體實作出使用中繼節 點轉送LoRa 訊息,藉此延長傳送距離。首先說明將所使用到的軟體和硬體,並 且解釋各個裝置的軟體與硬體是如何互相應用。而在實作過程中所遇到的問題, 也會在本章做說明以及解釋我們的解決方式。

4.1 硬體與軟體介紹

本節將介紹本論文的機制實作,說明各個機制中各個裝置採用什麼硬體所組成的, 並且說明我們在裝置上所撰寫的軟體程式,以達到本論文所提到的機制。 4.1.1 ED 硬體與軟體說明

ED 是由樹莓派開發板(Raspberry Pi)[19]使用連接杜邦線連接 LoRa 通訊模組(使用 群登科技股份有限公司的 EK-S76SXB LoRa 通訊模組)[9],將樹莓派上的 TX/RX 腳位 與通訊模組RX/TX 腳位連接,在樹莓派上執行以 Python 程式語言所撰寫的程式控制通 訊模組。而LoRaWAN 使用 Spreading Factor (SF)展頻技術,相同的頻率通道中,可再以 不同的SF 來切割通道做 multiple access,但會影響資料傳輸率。閘道器可以同時接收不 同SF 的 LoRa 通訊模組訊息,不同的 SF 會影響訊息傳送的速率,我們可以對 LoRa 通 訊模組下達指令更改其傳送速率(Data Rate),即可變更 SF、傳送訊息的速率和傳送訊息 的長度,根據LoRa Alliance 官方釋出的區域參數規格書[17],台灣所使用的區域參數為 AS923,由於我們所使用的硬體傳送速率(Data Rate)只能設定在 0~4 的範圍,表 4.1 為

(39)

29 傳送速率與其對應之參數設定。從表 4.1 中可以看到,當更改 Data Rate 時,將使用對 應的SF、傳送上行訊息的長度和傳送上信訊息的速度。 Data Rate Spreading Factor

Uplink Payload Size (bytes)

Indicative physical bit rate (bit/s)

0 12 59 250 1 11 59 440 2 10 59 980 3 9 123 1760 4 8 250 3125 表4.1 Data Rate 關係對應表 我們也在樹莓派上接上 DHT11 溫溼度感測器接收資料,將透過 LoRa 通訊模組週 期性持續將溫度訊息傳送出去,裝置如圖4.1 所示。 圖4.1 ED 裝置

(40)

30

我們利用Python 程式語言開發樹莓派上的應用軟體,為了能夠從樹莓派與 LoRa 通 訊模組溝通,程式中我們將寫入和讀取LoRa 通訊模組在樹莓派的 Linux 作業系統上序 列埠(Serial port)裝置檔案(Device file),達到傳送與接收目的。對裝置檔案寫入指令,是 用來對 LoRa 通訊模組下達指令,指令主要是用來更改 LoRa 通訊模組的設定(例如: MAC Address、Data Rate、傳送頻率等等)或是傳送上行訊息。而從裝置檔案讀取資料, 使用來接受LoRa 通訊模組所接收的回應訊息,我們也可以透過終端程式去對 LoRa 通 訊模組下指令(例如:Termite[11]),圖 4.2 和圖 4.3 為 ED 的樹莓派開發板所執行的程式 碼。在此實作中,我們假設ED 只要傳送一種感測資料,如溫度。

(41)

31 ED 程式碼 1: import serial 2: import time 3: import Adafruit_DHT 4: 5: ser = serial.Serial("/dev/ttyAMA0", 115200) 6: MacAddress = "11065517" 7: 8: def loop(): 9: Number = 0

10: ser.write("mac join abp".encode())

11: while True: #持續讀取裝置檔案,判斷回傳訊息 12: if ser.inWaiting:

13: data = ser.readline()

14: if data.decode().find(">> accepted") != -1: 15: break

16: while True: #持續讀取感測器資料,更新訊息的資料(SensorData) 17: SensorData = "" 18: h, t = Adafruit_DHT.read_retry(Adafruit_DHT.DHT11, 4) 19: t = str(t) 20: for i in t: 21: SensorData += str(hex(ord(i))[2:]) 22: if Number < 16: 23: SerNumber = "0" + str(hex(Number))[2:] 24: elif Number == 256: 25: Number = 0 26: SerNumber = "0" + str(hex(Number))[2:] 27: else: 28: SerNumber = str(hex(Number))[2:] 29: for TH in range(5): #整理傳送指令,將指令寫入裝置檔案 30: flag = 0

31: SendMessage = "mac tx cnf 1 " + MacAddress + SerNumber + SensorData

(42)

32 32: ser.write(SendMessage.encode()) 33: while True: #持續讀取裝置檔案,判斷回傳訊息 34: if ser.inWaiting: 35: data = ser.readline() 36: if data.decode().find(">> tx_ok") != -1: 37: flag = 1 38: break

39: elif data.decode().find(">> err") != -1: 40: break 41: time.sleep(5) 42: if flag == 1: 43: break 44: Number = Number + 1 45: 46: if __name__ == "__main__": 47: try: 48: loop() 49: except KeyboardInterrupt: 50: ser.close() 圖4.3 ED 開發板上的程式碼-2 第1~3 行,我們先匯入所需要的套件,包含 serial、time 和讀取感測器的套件,這 邊是以DHT11 感測器做示範。匯入 serial 套件的原因,在於開發板讓使用序列埠(Serial port)與 LoRa 通訊模組連接,使得樹莓派在操作通訊模組時,將該硬體視作一種虛擬裝 置檔案(Device file)。只要對裝置檔案進行寫入正確的訊息傳送指令字串,即可完成傳送 動作;相反的,從裝置檔案中讀取訊息,即可取得模組所接收到的訊息。匯入time 套件 的原因,是為了能夠在傳送每筆訊息之間有時間間格,程式碼中使用sleep 讓行程閒置 一段時間。

第5~6 行中,我們設定 LoRa 通訊模組的序列埠(Serial port)和鮑率(Baud rate),才 能夠使程式開啟序列埠裝置檔案,以及使用適當讀取和寫入LoRa 通訊模組的速率。在 3.1.2 中有提到 ED 所傳送的訊息中,包含 LoRa 通訊模組的 Mac address 以及所要傳送

(43)

33

的資料(Data),所以在設置一個 MacAddress 的變數,此變數的字串要設置為 LoRa 通訊 模組的Mac address。

第8~44 行,此為程式主要執行的 loop 函式,而在第 46~50 行該函式被呼叫執行, 觸發中斷按鍵,之後關閉序列埠結束程式。第9~15 行,首先設置 Number 變數為 0,此 為訊息中的檢查碼,與圖3.1 的 ED 演算法中 SerNumber 相互呼應。在 LoRa 通訊模組 在傳送訊息前,將其設置為ABP 模式(Activation by personalization),此模式會以 LoRa 通訊模組自身的Mac address 和裝置金鑰傳送訊息。所以先對裝置檔案寫入 mac join abp 指令,接著用while 迴圈去讀取裝置檔案,如果收到“>> accepted”字串,則代表模式設 置指令執行完畢。

第16~44 行,為函式的主迴圈,在這個迴圈內要將感測器的資料和檢查碼與 LoRa 通訊模組的 Mac adddress 合併成字串放入 SendMessage。最後再將此字串寫入裝置檔 案,再讀取裝置檔案判斷回應的訊息。第17~28 行將感測器的資料和檢查碼轉換為對應 的ASCII 碼,放入對應的字串中。而第 29~32 行,此 for 迴圈對應到 ED 演算法,若無 反應嘗試重傳,TH 為重新傳送的次數。flag 是為了判斷傳送成功後跳離迴圈的變數, SendMessage 是合併 LoRa 指令、Mac address、檢查碼和感測器資料的字串,接著將 SendMessage 轉成 16 進制寫入裝置檔案。第 33~40 行的迴圈是為了讀取裝置檔案,直 到收到“>> tx_ok”或“>> err”字串。收到前者字串代表傳送訊息成功,將 flag 設置為 1 之後跳離迴圈;收到後者,則是沒有收到 ack 回應訊息,代表傳送失敗直接跳離讀取 迴圈。第41~43 行,在傳送每筆訊息之間,需使程式閒置一段時間,這邊以 5 秒為例。 接著判斷flag 為 1 則跳離 for 迴圈,傳送下一筆訊息。否則傳送此筆訊息直到 TH 等於 5 會自動跳離 for 迴圈。第 44 行,為了使每筆訊息的檢查碼不同,最後將 Number 加 1。

(44)

34

4.1.2 RN 硬體與軟體說明

RN 是由一台 LoRa 的閘道器(使用正文科技股份有限公司的 WLRGFM-100 LoRa 室 內閘道器)[13]藉由網路線連至集線器,與樹莓派(Raspberry Pi)連線形成一個區域網路。 而樹莓派(Raspberry Pi)會再以杜邦線連接一塊 LoRa 通訊模組,當閘道器接收到訊息時, 樹莓派(Raspberry Pi)會使用 Python 程式驅動 LoRa 通訊模組,藉此將訊息傳遞至其他 RN 或 GW。 圖4.4 RN 裝置 RN 中的開發板上需架設網路伺服器,我們採用 MQTT Broker[12],且 RN 中的閘 道器須設定此網路伺服器,而開發板上的的程式碼必須與此網路伺服器連線,並做訂閱 動作,樹莓派(Raspberry Pi)就能夠接收到藉由閘道器所收到的訊息,並透過與樹莓派控 制LoRa 通訊模組再發送出去,圖 4.5 為 RN 中開發板的程式碼。

(45)

35 RN 程式碼 1: import paho.mqtt.client as mqtt 2: import serial 3: 4: ser = serial.Serial("/dev/ttyAMA0",115200) 5: client = mqtt.Client() 6:

7: def on_connect(client, userdata, flags, rc): #向 broker 訂閱 RN 中的閘道器 8: client.subscribe("GIOT-GW/UL/1C497BFA2D28")

9:

10: def on_message(client, userdata, msg): #接收來自 broker 的訊息 11: msgStr = str(msg.payload)

12: dataStart = msgStr.find("data") + 7 13: dataEnd = msgStr.find("\", \"frameCnt") 14: data = ""

15: for i in range(dataEnd - dataStart): 16: data += msgStr[i + dataStart] 17: redata = "mac tx cnf 1 " + data 18: ser.write(redata.encode()) 19: 20: if __name__ == '__main__': 21: try: 22: client.on_connect = on_connect 23: client.on_message = on_message 24: client.connect("192.168.1.1", 1883, 60) 25: ser.write("mac join abp".encode()) 26: while True: 27: if ser.inWaiting: 28: data = ser.readline() 29: if data.decode().find(">> accepted") != -1: 30: break 31: while True: 32: client.loop() 33: except KeyboardInterrupt: 34: ser.close() 圖4.5 RN 開發板上的程式碼

(46)

36

第1~2 行匯入所需套件,藉由 paho.mqtt.client 套件與開發板上的網路伺服器連線, 來對網路伺服器進行訂閱(Subscribe)或發布(Publish)的動作,在本程式碼中我們只需使 用訂閱。而匯入Serial 套件與 ED 的原因相同,都是為使用序列埠(Serial port)與 LoRa 通 訊模組連接,利用寫入或讀取裝置檔案,對LoRa 通訊模組下指令或讀取其接收到的訊 息。

第4~5 行,設定 LoRa 通訊模組的序列埠(Serial port)和鮑率(Baud rate),以及宣告 MQTT 客戶類別的實體。 第 7~8 行為與網路伺服器連線訂閱 RN 中閘道器的函式,向 subscribe 欲跟 RN 中 的閘道器訂閱的主題字串。主題是由閘道器所要接收的上行資訊與其Mac address 組成 的,前者是因為我們是要接收ED 上行至閘道器的資訊,所以上行資訊為 GIOT-GW/UL/。 而後者是要選定連結的閘道器,所以要寫入RN 中閘道器的 Mac address。 第 10~18 行為收到 broker 的訊息時所執行的處理函式,當收到訊息後會將此訊息 放入 msg.payload。而此訊息會包含許多資訊,包含閘道器接收訊息的時間、傳送此訊 息的 Mac address、訊號接收的雜訊比和收到訊息的內容等等。由於我們只需要收到的 訊息內容,所以在 11~16 行中要擷取訊息內容。最後將擷取完的訊息內容寫入裝置檔 案,透過LoRa 通訊模組將訊息傳送出去。 第20~34 行,為程式主要執行部分,首先設定 MQTT 客戶類別實體(Class instance) 中函式 on_connect 和 on_message 與我們所撰寫的函式對應。接著傳入 connect 所需的 相關參數,包含網路伺服器的IP、port 和連線時間參數值。為了要使用 LoRa 通訊模組 轉送訊息,對其裝置檔案寫入指令進入ABP 模式(activation by personalization)切換指令。 設置完後,在收到“>> accepted”後,代表模式切換完成,將持續執行 client.loop(),它會 持續與網路伺服器連線。在連線過程中,如果RN 中的閘道器收到訊息時,on_message 函式中就會收到網路伺服器發布過來的訊息。因此我們只要在 on_message 函式將接收 的訊息擷取出來,再藉由寫入裝置檔案將訊息透過LoRa 通訊模組傳送出去,即可達到 訊息轉送的效果。

(47)

37 4.1.3 AS 硬體與軟體說明 在本篇論文所定義 AS 的運作模式是向 NS 訂閱由上行資訊與 GW 的 Mac address 所組成的主題 ,藉此將 GW 所接收到的訊息中的感測資料存入資料庫中每個 ED 專屬 的特定資料表格中。在AS 平台上需要架設資料庫,我們使用樹莓派當作應用伺服器平 台並安裝MySQL 資料庫。 軟體的部分一樣也是撰寫 Python 語言進行操作控制,並且藉由程式碼過濾資料。 而過濾訊息的條件,是以GW 接收訊息的 Mac address 與檢查碼為依據。依照這些條件 過濾訊息,即可實現在3.2.4 中所提到的情境,而圖 4.6 和圖 4.7 為 AS 的程式碼。

(48)

38 應用伺服器程式碼 1: import paho.mqtt.client as mqtt 2: import mysql.connector 3: import datetime 4: 5: class devmsg(): 6: 7: def __init__(self): 8: self.ma = "" 9: self.sn = "" 10:

11: def compare(self, Mac_address, SerNumber, Data): 12: if self.ma == Mac_address: 13: if self.sn != SerNumber: 14: self.sn = SerNumber 15: self.updateSql(Data) 16: return True 17: elif self.ma == "": 18: self.ma = Mac_address 19: self.sn = SerNumber 20: self.updateSql(Data) 21: return True 22: return False 23:

24: def updateSql(self, Data):

25: DT = datetime.datetime.now()

26: sql = "INSERT INTO " + self.ma +" (time, data) VALUES (%s, %s)" 27: val = (DT, Data, self.ma)

28: mycursor.execute(sql, val) 29: mydb.commit()

(49)

39 30: dev_list = [] 31: 32: for i in range(3): 33: dev_list.append(devmsg()) 34:

35: def on_connect(client, userdata, flags, rc):

36: client.subscribe("GIOT-GW/UL/1C497BFA2D78") 37:

38: def on_message(client, userdata, msg): 39: global dev_list

40: msgStr = str(msg.payload)

41: dataStart = msgStr.find("data") + 7 42: dataEnd = msgStr.find("\", \"frameCnt") 43: data = ""

44: for i in range(dataEnd - dataStart): 45: data += msgStr[i + dataStart] 46:

47: for i in dev_list:

48: if i.compare(data[0:8], data[8:10], data[10:]): 49: break 50: 51: if __name__ == '__main__': 52: try: 53: mydb=mysql.connector.connect(host="localhost",user="root", passwd="pi",database="GWrelay") 54: mycursor = mydb.cursor() 55: client = mqtt.Client() 56: client.on_connect = on_connect 57: client.on_message = on_message 58: client.connect("140.127.208.176", 1883, 60) 59: while True: 60: client.loop() 61: except KeyboardInterrupt: 62: print("STOP") 圖4.7 伺服器上的程式碼-2

(50)

40 第1~3 行匯入與 NS 連線所需要的套件,以及匯入使用 MySql 所需要的套件。最後 由於存入資料庫時,需要存入接收時間,所以匯入datetime 套件。 第5 行宣告 devmsg 類別,在這個類別中第 7~9 行裡宣告兩個空字串欄位,分別為 ma 與 sn,與第 3.1.4 節中的伺服器流程相對應。接著在這個類別裡,宣告兩個函式: compare 是用來比較當前收到的訊息與前一筆訊息,而 updataSql 則是將訊息存入資料 庫。 第11~22 行為 compare 函式,當 GW 接收到訊息時,也就是 on_message 函式運作 時,會被呼叫來比較訊息內容,訊息中的Mac address、訊息檢查碼 SerNumber 和資料 Data 被傳入此函式。函式先判斷 ma 資料結構中是否與此筆訊息 Mac address 是否相同, 若不相同,則判斷是否有空的ma 空間;若有空的空間,則表示傳送此訊息的 ED 是第 一次傳送訊息,所以將ma 與 sn 更新,並且使用 updataSql 上傳至資料庫,回傳 True。 由於資料結構的空間是已經設定好的,所以不用擔心找不到相同的 Mac address,或是 沒有空的資料結構。 若有ma 與此訊息的 Mac address 相同,則接著判斷訊息檢查碼是否相同,若不同, 則表示此訊息為新的訊息,將sn 更新並使用 updataSql 上傳至資料庫,回傳 True。若檢 查碼相同,則表示此訊息是重複的,可能是多個RN 在轉送訊息時接收到的,因此不做 動作,並回傳False。 第24~29 行為存入資料庫所使用的 updateSql 函式,需要將訊息的 Data 傳入。由於 Mac address 在類別中已用空間存放,故可不用傳入。為了把存入資料庫的時間點一併 存入資料庫,使用datatime 擷取當前時間放入 DT。Sql 為 MySql 資料庫使用的語法, 其中self.ma 是為了將此訊息放入對應的資料表中。val 為放入資料庫所需要的參數,包 含接收時間與 Data。最後呼叫 MySql 的指令執行函式,將接收時間與感測資料數值加 入MySql 資料庫中。在這個實作程式中,我們假設每個 ED 的資料表中只有一個感測資 料欄位,實際應用時可以依據使用者需要建立多個欄位的資料表。

(51)

41 第30~33 行為每個 ED 裝置各別建立一個專屬的 devmsg 類別實體並放置到 dev_list 中,我們以3 個 ED 為例。由於每次接收到 NS 訊息所執行的 on_message 函式將會存取 類別裡的ma 和 sn 欄位,因此將 dev_list 宣告成全域變數。 第 35~36 行為與 NS 連線訂閱主題的函式,主題訊息中的 Mac address 為 GW 的 Mac address。 第38~49 行中,由於在此函式中要使用到全域變數,因此首先以 global 宣告 dev_list。 接著與RN 相同,將收到的擷取收到的訊息,分割成 Mac address、檢查碼和 Data,之 後傳入copmpare 函式,而 for 迴圈是為了當有多個 ED 時,要依序比較,當為 True 時 則跳出迴圈,否則持續比較。

第51~62 行,為程式主要執行部分,與 RN 不同的是,需要設置與 MySql 連線的參 數,包含host(主機 IP)、user(使用者帳號)、passwd(使用者密碼)和 database(資料庫名稱)。 Host 為資料庫所在的 IP,若資料庫架設在本地,使用 localhost 即可。user 為資料庫的 使用者名稱,passwd 為使用者的密碼,database 為存入的資料庫名稱。

(52)

42

4.1.4 NS 硬體與軟體說明

在本篇論文所定義的NS 是使用 MQTT Broker 所架設的網路伺服器,硬體的部分 是在有固定IP 的電腦架設,在 GW 的 Network Server 設定中設定此 IP,GW 即可將收 到的上行訊息,藉由網路傳送至NS。AS 的程式可與 NS 進行連線並且訂閱 GW 的主 題,即可收到GW 所收到的上行訊息。

(53)

43

4.2 實作重點整理

在本節中,將整理我們提出的機制下所實作的裝置能夠達成哪些功能,以及裝置在 運作時會產什麼麼樣的情況,並說明裝置是如何在這些情況下運作的。 4.2.1 RN 運作 RN 的主要功能為將接收到的訊息轉送給 GW 或 RN,當 RN 在轉送訊息時,可能 會收到自身轉送的訊息,這樣的情況下會造成訊息在RN 上一直傳送造成空轉的現象。 為了解決這種問題,我們利用更改RN 中閘道器的訊息接收清單設定,使接收清單中不 包含RN 自身中的 LoRa 通訊模組,這樣即可避免 RN 傳給自身空轉的情況。 當多個RN 在轉送訊息時,遠離 GW 的 RN 可能會收到訊息,這樣的情況會造成訊 息傳送的路徑增長。為了解決這個問題,當多個RN 為鏈狀拓撲的情境下,如圖 3.13。 RN1的閘道器只需將RN2的LoRa 通訊模組 Mac Address 列入接收清單,另外 RN2的閘 道器只需將RN3的 LoRa 通訊模組 Mac Address 列入接收清單,而 RNk-1的閘道器只將 RNk的LoRa 通訊模組 Mac Address 接收列入清單,即可解決問題。而多個 RN 且非鏈 狀拓撲的情境時,如圖 3.14 所示,在範圍(1)邊界上的 RN 彼此不將 LoRa 通訊模組的 Mac Address 互相列入清單,且列入所有在範圍(2)邊界上所有的 RN,依此類推至更遠 的區域。只要以此原則設置RN 中閘道器的接收清單設定,即可避免訊息傳送至離 GW 更遠的RN。

(54)

44 4.2.2 GW 接收多個訊息 各個裝置在運作時, 當 GW 多個 ED 的訊息時,應用伺服器可以依照收到訊息中 的Mac address,將訊息中的資料存入相對應的資料表。若是直接收到 ED 或間接從多個 RN 轉送過來的同一筆訊息,為了讓資料庫中只存入一筆資料,應用伺服器中制定過濾 條件,只要比較訊息中的檢查碼,即可知道此筆訊息是否需要存入資料庫。我們依照訊 息中的Mac address 將資料放置到相對應的資料表中,讓多個 ED 資料不會混在一起。

(55)

45

第五章

效能評估

本章將利用第四章中的實作架構以實驗驗證我們所提出的機制,檢視是否可以達到 延長傳送距離的效益。我們先介紹實驗的變因與條件,包含 GW、RN、ED 擺放的場地、 RN 和 ED 的個數以及 ED 參數的調整。接著說明評估準則,最後,分析與討論在不同 的實驗變因下,實驗結果的呈現與探討現象的原因。

5.1 實驗條件與評估準則

在本節中,我們會先說明實驗的場地以及裝置的位置、個數和調整參數,並依照我 們所提出的機制來制定實驗條件

(56)

46 5.1.1 實驗場域與 GW 裝置佈置 我們的實驗場域位於高雄大學的校園內,如圖5.1 所示。 圖5.1 高雄大學地圖 我們在綜合第一大樓的2 樓架設 GW,如圖 5.1 中的 GW 圖示。接著我們會依照情 境與實驗的目的,在其他地方架設 RN 和 ED。我們先驗證 ED 近距離下直接傳送訊息 給GW,且間格時間為 0 秒時,訊息接收成功率為 100%,在下一節的實驗中,我們將 觀察增設RN 會對於訊息接收成功率有什麼影響。

(57)

47 5.1.2 鏈狀拓撲(Chain topology)的實驗-只有一個 RN 在我們提出的機制下,我們實做出了RN 能夠轉送訊息的機制,首先我們將實驗在 一般LoRa 傳送訊息情境下,架設一個 RN 觀察是否可以達到轉送訊息的功能。因此我 們架設了1 個 RN 和 1 個 ED,分別為 RN1和ED,裝置佈署位置如圖 5.2 所示。 圖5.2 鏈狀拓撲場地佈置-1

在此實驗前,我們測試讓兩個在一起的 LoRa 通訊模組以相同 Data Rate 號碼同時 傳送訊息,或是設定傳送上行訊息速率較低的Data Rate 號碼先傳送,都會互相影響訊 息傳送的訊號,因此所有裝置所設定的Data Rate 號碼,會需要依照傳送上行訊息速率 的大小關係設定:ED>RN1。而實驗中我們將調整 ED 每筆間的傳送時間間格,觀察增 設RN 後對 ED 的 LoRa 傳送訊息造成的影響。

(58)

48 5.1.3 鏈狀拓撲(Chain topology)的實驗-有兩個 RN 若要實現鏈狀拓撲,RN 要能夠直接接收 ED 訊息或由其他 RN 轉送的訊息,因此 在此實驗情境中,我們架設了2 個 RN 和 1 個 ED,分別為 RN1、RN2和ED,裝置佈署 位置如圖5.3 所示。 圖5.3 鏈狀拓撲場地佈置-2 在沒有RN1與RN2的情況下,ED 的訊息無法直接被 GW 所接收,因此需要架設 2 個RN 轉送 ED 的訊息,如圖 5.3 中的圖示,才能將訊息傳遞至 GW。將裝置如圖 5.3 的 位置佈署後,只要確定RN2接收 ED 的訊息,而 RN1能接收 RN2轉送的訊息,而即可 完成鏈狀拓撲網路設備架設。

在上一節提到的 LoRa 通訊模組會因為 Data Rate 號碼而互相影響,因此傳送上行 訊息速率的大小關係設定:ED>RN2>RN1。而實驗中我們將調整ED 每筆間的傳送時間 間格,觀察增設RN 後對 ED 的 LoRa 傳送訊息造成的影響。接著再調整封包大小,進 行傳送封包的壓力測試。最後多增設一個ED,觀察 2 個 ED 在我們提出的機制下的運 作狀況。

(59)

49

5.1.4 實驗評估準則

在每組實驗條件下,我們將從ED 傳送 100 筆資料。而我們的實驗評估準則為伺服

器接收訊息的成功率,接收成功率定義為資料庫中的資料筆數除以 ED 傳送的次數(包

(60)

50

5.2 實驗結果

在本節我們將說明實驗結果,並且做背後原因的分析討論,而實驗的項目有以下 四部分: (1) ED 在鏈狀拓撲(Chain topology)傳送的時間間格變化-只有一個 RN (2) ED 在鏈狀拓撲(Chain topology)傳送的時間間格變化-有兩個 RN (3) ED 在鏈狀拓撲(Chain topology)傳送的封包長度變化 (4) 兩個 ED 在鏈狀拓撲(Chain topology)傳送的時間間格變化 5.2.1 鏈狀拓撲(Chain topology)下 ED 傳送的時間變化-只有一個 RN 此實驗是為了觀察LoRa 通訊模組在傳送訊息時,若在 GW 與 ED 之間增設一個 中繼節點裝置,訊息在傳送過程中,傳送時間間格是否影響接收訊息的成功率。 首先我們實驗當RN 中 LoRa 通訊模組的 DR 與 ED 中 LoRa 通訊模組的 DR 設置 相同的DR 號碼,觀察在相同 DR 號碼下訊息接收的成功率,裝置的佈置如圖 5.2 所 示,實驗的變因為ED 傳送訊息後的休眠時間間格,間格每次更動 1 秒,圖 5.4 為實 驗結果。 圖5.4 只有一個 RN 時,ED 與 RN 採用相同的 DR 號碼下, 不同傳送時間間格之訊息接收成功率 0% 20% 40% 60% 80% 100% 1 2 3 4 5 6 7 8 9 10 成 功 率( 百 分 比) 傳送時間間格(秒) ED:RN1 = 4:4 ED:RN1 = 3:3 ED:RN1 = 2:2 ED:RN1 = 1:1 ED:RN1 = 0:0

(61)

51

當ED 與 RN1 採用的 DR 為 0 或是 1 時,ED 與 RN1傳送的訊號會產生互相干擾的 情況,導致無論傳送間格為多少,訊息接收成功率只有20%。當 ED 與 RN1的DR 為 2 至4 時,訊息接收成功率幾乎為 100%。

為使ED 與 RN1的LoRa 的通訊模組不會互相干擾,我們將 ED 和 RN1的Data Rate 號碼設定為不同,分別設定為(4:3)、(3:2),(2:1)和(1:0),總共有 4 組不同 Data Rate 號碼設定組合,觀察在不同的Data Rate 組合下傳送時間間格與訊息接收成功率變化。 裝置的佈置如圖5.2 所示,實驗的變因為 ED 傳送訊息後的休眠時間間格,間格每次更 動1 秒,圖 5.5 為實驗結果。 圖5.5 只有一個 RN 時,ED 與 RN 採用不同的 DR 號碼下, 不同傳送時間間格之訊息接收成功率 當ED 經過一個 RN 轉送訊息時,RN 基本上都能夠及時處理訊息,即使 RN 中 LoRa 通訊模組的傳送速率比ED 慢,只要間格時間大於 1 秒都能夠處理。在圖中的 ED:RN1 的DR 為 1:0 的訊息接收成功率中可以看到,當間格時間為 1 秒,成功率只有 85%左 右,原因為ED 和 RN 的 DR 號碼分別設定為 1 和 0 時,傳送速率太低,需要大於 1 秒 的時間才能夠將訊息轉送完畢。因此我們將在下個實驗2 個 RN 的訊息接收成功率,觀 察在2 個 RN 環境下,需要多少的時間才能使訊息接收成功率接近至 100%。 0% 20% 40% 60% 80% 100% 1 2 3 4 5 6 7 8 9 10 成 功 率( 百 分 比) 傳送時間間格(秒) ED:RN1 = 4:3 ED:RN1 = 3:2 ED:RN1 = 2:1 ED:RN1 = 1:0

(62)

52

5.2.2 鏈狀拓撲(Chain topology)下 ED 傳送的時間變化-有兩個 RN

此實驗為延續前一節之實驗,本次實驗中架設2 個 RN 轉送訊息,我們將觀察由於 增設RN 的關係,是否會影響 ED 將訊息傳遞到伺服器的成功率。

我們將ED、RN1和RN2的Data Rate 號碼分別設定為 4、3、2。為了觀察在不同的 Data Rate 下,傳送時間間格與訊息接收成功率變化,因此我們也將實驗 Data Rate 號碼 更改為3、2、1 和 2、1、0,並觀察其成功率與時間間格之間的變化,總共會有 3 組設 定不同Data Rate 號碼組合的結果。裝置的佈置如圖 5.3 所示,實驗的變因為每筆 ED 傳 送訊息後的時間間格,時間間格每次更動1 秒,並且裝置間三組不同的 Data Rate 號碼 的設定,圖5.6 為實驗結果。 圖5.6 2 個 RN 時不同傳送時間間格之訊息接收成功率 從圖 5.6 中可以看出,若 LoRa 通訊模組透過 RN 傳送訊息,會影響訊息接收的 成功率,其原因為RN 在轉送訊息時需要時間進行運作,若 ED 的傳送時間間格太短, 會導致 RN 在還沒處理完 ED 前段時間傳來的訊息時,另一筆訊息又已經要傳給它處 理,這將導致後來的訊息無法被RN 接收。 從圖中的ED:RN2:RN1的DR 為 4:3:2 的訊息接收成功率可以看出與使用一個 RN 所實驗出來的結果相似,表示在這樣 DR 的設定下,2 個 RN 可以穩定的運作,有 極高的成功率。而當ED:RN2:RN1的DR 為 3:2:1 和 2:1:0 時,在時間間隔秒數 為1 到 6 秒時,成功率逐漸提升,其原因為這樣設定的 DR 會使 RN1與 RN2無法快速 0% 20% 40% 60% 80% 100% 1 2 3 4 5 6 7 8 9 10 成 功 率( 百 分 比) 傳送時間間格(秒) ED:RN2:RN1 = 4:3:2 ED:RN2:RN1 = 3:2:1 ED:RN2:RN1 = 2:1:0

數據

圖 2.2  類別  A、B、C 傳送與接收流程
圖 3.2 GW 設定可接收 LoRa 通訊模組的 Mac address
圖 3.7 (a)  中繼節點(Relay Node)    (b) RN 結構圖
圖 3.13  使用單一 RN 情境
+3

參考文獻

相關文件

報告人:中國科技大學 室內設計系 漆作裝潢 青少年組 裁判長 周亞寬

螺紋、偏心、輥花等。CNC 車床設計 CNC 加工程 式,模擬加工路徑;或經由電腦輔助設計製造系

軟體至 NI ELVIS 環境。現在,您在紙上或黑板上的設計可在 Multisim 內進 行模擬,並模擬為 NI ELVIS 或 NI ELVIS II 電路板配置上的傳統電路圖。設 計趨於成熟後,使用者即可在 NI

國立高雄師範大學數學教育研究所碩士論文。全國博碩士論文資訊網 全國博碩士論文資訊網 全國博碩士論文資訊網,

Thus, our future instruction may take advantages from both the Web-based instruction and the traditional way.. Keywords:Traditional Instruction、Web-based Instruction、Teaching media

教育局課程發展處製作了一系列網上教學資源供教師參考,鼓勵

1.本招生以參與「工業工程與設備管理產學攜手專班」之國立霧峰農工 104 學年度日間部機 械科、國立秀水高工 104

進而能自行分析、設計與裝配各 種控制電路,並能應用本班已符 合機電整合術科技能檢定的實習 設備進行實務上的實習。本課程 可習得習得氣壓-機構連結控制