- LoRaWAN 需要正確設定網關(頻率、IP 網路、伺服器)並向 TTN 註冊,節點才能進行通訊。
- 終端設備透過 DevEUI、JoinEUI/AppEUI 和 AppKey (OTAA) 或 NWKSKEY/APPSKEY/DEVADDR (ABP) 在 TTN 應用程式中註冊。
- 可以使用商用感測器(SenseCAP、Decentlab、Dragino、Tabs)或具有 ESP32/Arduino 和 LMIC 庫的 DIY 節點向 TTN 發送資料。
- TTN 可促進與 Node-RED 和外部平台的集成,以視覺化和利用 LoRaWAN 網路收集的物聯網資料。
如果你已經看到這裡,表示你想知道方法。 將 LoRaWAN 節點端到端連接到 TTN它涵蓋了所有內容:網關、節點、感測器、庫、金鑰和網路配置。最棒的是,您無需成為電信專家;只需一份結構清晰的指南和一點耐心,您就能立即建立自己的 LoRaWAN 網路。
接下來,您將逐步看到如何 設定網關,將其註冊到物聯網網路 (The Things Network),註冊應用程式和終端設備,並對 LoRaWAN 節點進行程式設計。 本書基於 ESP32 或 Arduino 類開發板,並提供使用商用感測器(SenseCAP、Decentlab、Dragino、Tabs Brown)的範例。此外,我們還將介紹一些手冊中不常提及的實用細節:常見的按鍵問題、頻率選擇、實體接腳連接,以及驗證所有裝置是否真正與 TTN 通訊的技巧。
什麼是 LoRa 和 LoRaWAN?為什麼要使用 TTN?
LoRa 和 LoRaWAN 是兩個相關的概念,但它們並不相同。LoRa 是 Semtech 公司專有的遠距離、低功耗射頻調變技術。 LoRaWAN 是一種網路協議,它依賴 LoRa 技術來管理終端設備(節點)與網關和網路伺服器之間的通訊。
典型的LoRaWAN網路中,我們有 兩個主要組成部分:網關和節點網關充當 LoRa(無線電)世界和 IP(網際網路)世界之間的“橋樑”,將資料包轉發到 LoRaWAN 伺服器。節點是感測器或執行器,它們使用 LoRa 與這些網關發送和接收訊息。
要連接所有這些設備,你需要一個 LoRaWAN 伺服器。 付費使用私人服務(例如 Movistar、Vodafone 等業者或 Loriot、Actility、Kerlink 等平台) 或者選擇使用 The Things Network (TTN) 的社區路線,這是一個由社區維護的公共開放網路。
TTN的優勢在於: 它尊重資料治理,保持中立,並允許您向網路貢獻網關。在許多城市,人們自發性安裝網關,任何人都可以免費享受網路覆蓋,只需支付節點的硬體費用。
LoRaWAN 頻率、頻道和限制
在購買任何設備之前,關鍵是要明確以下幾點: LoRa頻率必須與您所在地區相容。在歐洲工作與在美國或亞洲工作不同;如果使用錯誤的腕帶,設備可能毫無用處,甚至違法。
在歐洲,主要使用以下幾種: 868 MHz 頻段 (EU868)在美國,常用的頻段是915 MHz(US915)。中國商店提供各種各樣的433 MHz模組,價格可能很誘人,但它們並不總是與LoRaWAN或您所在國家/地區的網路相容。
除了頻率之外,LoRaWAN 還以以下方式組織: 通道、擴頻因子 (SF) 和頻率方案SF 決定速度和航程:更高的 SF 意味著更遠的航程,但空中停留時間更長,這會消耗更多能量並佔用更多通道。
在歐洲,著名的 “1%法則”每個設備只能佔用無線電頻道的時間比例很小,通常約 1%。這限制了資料發送的頻率,也是 LoRaWAN 感測器通常每隔幾分鐘而不是每隔幾秒鐘傳輸一次資料的原因之一。
網關和節點硬體的準備和選擇
要建立一個實用的網絡,您至少需要… 一個 LoRaWAN 網關和一個或多個節點(感測器)我們可以將不同製造商的硬體組合在一起,只要它們符合 LoRaWAN 標準並且使用相同的頻段即可。
室內網關最常使用的型號之一是 Dragino LPS8它整合了一個 SX1308 集中器,最多支援 10 個並行通道。它預先配置了不同的頻率方案,取決於所在國家/地區,在歐洲,它將以 868 MHz 的頻率運作。它透過 USB-C 介面以 5V 電壓供電,並透過 RJ-45 或 Wi-Fi 連接到 IP 網路。
其他與 TTN 相容性良好的網關範例包括: 拉克7289 (適用於戶外環境,堅固耐用,可選配 LTE/4G 網路)或官方的 TTN-GW-868 MHz 網關,專為在城市或智慧城市專案中部署網路覆蓋而設計。也可以設定一個 基於 ESP32 開發板和 SX1262 LoRa 模組的單小區網關就像使用 Wio-SX1262 套件和 XIAO ESP32S3 一樣。
作為節點,您有兩條路徑: 使用市售的、已配置好 LoRaWAN 功能的感測器 (SenseCAP S210x、Tabs Browan TBHH100、Dragino TrackerD、Decentlab 等)或使用 TTGO LoRa32 V2.0、ESP32 + RMF95、Arduino + LoRa 模組等開發板建立自己的節點。
配置 LoRaWAN 網關並將其連接到 TTN
該專案的第一個主要模組是 啟動網關,並在 TTN 中顯示「已連線」狀態。雖然每個製造商都有自己的面板,但概念步驟非常相似。
例如,使用 Dragino LPS8,您可以 透過 SSH 或 HTTP 進行管理如果使用 RJ-45 網路線連接,您需要找到 DHCP 伺服器指派的 IP 位址(可使用 IP 位址掃描器或透過路由器檢視)。如果您喜歡透過 Wi-Fi 進行初始設置,LPS8 會建立一個 SSID 類似於「dragino-xxxxx」、預設密碼為「dragino+dragino」的網路。存取 IP 位址 10.130.1.1 將進入 Web 管理面板,初始使用者名稱和密碼通常為「admin/dragino」。
進入後,您會看到一個分成幾個部分的菜單,您可以… 某些選項會顯示一個紅色叉號,表示缺少配置。首先,請在 LoRa 標籤中選擇您所在地區的正確頻率方案;在歐洲,選擇 EU868(約 868 MHz)。
然後點選標籤頁 LoRaWAN 或網路伺服器在這裡,您可以定義網關將連接到哪個 LoRaWAN 伺服器。對於 TTN,請選擇「TTN」作為供應商,並輸入歐洲伺服器的位址(例如,eu1.cloud.thethings.network),同時保留 UDP 連接埠(通常上傳和下載連接埠均為 1700)。在同一部分,您還會看到網關 ID 或 EUI,稍後在 TTN 中會使用它。
在「網路」部分進行配置 網關如何連接到網際網路?LAN、WAN 或 WiFi WAN。 WAN 介面可以選擇靜態 IP 位址或 DHCP;建議盡可能使用有線靜態 IP 位址,以獲得更穩定的連線和更方便的管理存取。 LAN 介面通常用於網關的內部存取點網路;在完全了解操作步驟之前,最好不要隨意更改 LAN 接口,因為一旦出現問題,它可能是您的生命線。
在 WiFi 部分,您將能夠 調整網關本身產生的存取點及其與外部 WiFi 網路的連接。為了安全起見,建議更改出廠時 AP 的預設 SSID 和密碼。
RAK7289 閘道的原理類似:您進入 Web 控制面板, 您可以在「網路」→「WAN介面」中設定IP位址(靜態或DHCP)。 然後,在 LoRa 網路 → 網路設定 → 封包轉發器中,輸入 TTN 伺服器詳細信息,並記下網關 EUI,以便稍後將其註冊到 TTN。如果您使用的是提供 DHCP 的路由器,則可以透過查看租約表(例如,透過主機名稱「RAK7289」)或使用 nmap 等工具來找到網關的 IP 位址。
在 The Things Network 上註冊網關
網關上網後,就可以… 在 TTN 中註冊他/她如果您沒有帳戶,請先在 The Things Network 網站上註冊,然後造訪對應區域的控制台(例如 https://eu1.cloud.thethings.network/)。
在控制台中,選擇該部分 選擇網關,然後點選「註冊網關」。TTN會要求您提供網關ID(您帳戶中的唯一名稱),並且根據網關類型,可能還會要求您提供網關EUI。對於使用傳統資料包轉發器的Dragino LPS8網關,您必須選擇「我使用的是傳統資料包轉發器」選項。
此外,您還需要指出… 頻率方案(歐洲地區為 EU868)對應的區域或路由器,以及可選的位置資訊(座標、室內/室外等)。對於像採用 XIAO ESP32S3 和 Wio-SX1262 的單基地台網關,韌體本身可能會在啟動時透過串列埠顯示網關 ID;只需複製該 ID 並將其用於註冊表單即可。
填寫完這些資訊並註冊網關後,TTN 將顯示一個表單,您可以在其中進行檢查。 狀態(「已連線」或「已斷線」) 此外,還有一個「流量」部分,您可以在其中即時查看資料包流。如果網關和 TTN 上的所有配置都正確,一兩分鐘後,您應該會看到狀態變為“已連接”,並且當節點開始傳輸資料時,您應該會看到流量。
這意味著 基礎設施部分(網關+伺服器)已投入運作。接下來,就需要對應用程式和終端設備進行設定了。
TTN中的應用程式建立和節點註冊
在 TTN 中,設備並非直接註冊在帳戶根目錄下,而是註冊在帳戶內部。 應用程式應用程式將一個或多個發送相關資料的節點分組,例如建築物的所有環境感測器,或教育專案的多個 GPS 追蹤器。
在 TTN 控制台中,您可以存取以下部分 應用程式並創建新應用程式您需要為其指派一個唯一的 ID,也可以選擇新增描述,並選擇對應的區域。在該應用程式中,您將使用其憑證(DevEUI、JoinEUI/AppEUI 和 AppKey 或其他金鑰,具體取決於啟動方法)註冊每個 LoRaWAN 節點。
對於商用感測器,例如 棕色標籤 TBHH100-868 溫濕度感測器通常貼在帶有 DevEUI、AppEUI 和 AppKey 的標籤上。它們通常使用 OTAA(空中啟動)方式,這種方式會在每次連接網路時產生金鑰會話,因此比 ABP 更安全。
使用 OTAA,在 TTN 中選擇註冊新的終端設備。 您引入了 JoinEUI (AppEUI)、DevEUI 和 AppKey您仔細核對數據並確認。儲存後,如果節點配置正確且在網關訊號範圍內,它將接收到網路信標,執行加入過程,您將在控制台中看到包含測量值的上行鏈路訊息。
這同樣適用於感測器,例如 Decentlab 液位和溫度製造商會提供 ID、DevEUI、AppEUI 和 AppKey,但事先並不知道您將使用哪個伺服器。您需要負責將這些資訊註冊到 TTN(或其他伺服器),以便註冊感測器。如果您提出要求,許多 Decentlab 設備都已預先註冊到 TTN,這進一步簡化了流程。
配置商用 LoRaWAN 感測器
讓我們來看一些具體的例子,看看如何 準備並註冊商用 LoRaWAN 感測器 然後它將透過您的網關與 TTN 通訊。
在 SenseCAP S210x 系列(例如,環境感測器)中,典型的工作流程是使用 製造商的 SenseCraft 應用首先,下載應用程序,用按鈕打開感測器(按住幾秒鐘,直到 LED 每秒閃爍一次),然後在應用程式中選擇「掃描」來讀取裝置的二維碼。
應用程式內有一種模式 在「進階配置」中選擇「The Things Network」作為平台您必須選擇與閘道相同的頻段方案(例如 EU868),並確認加入模式為 OTAA。應用程式將顯示設備 EUI、AppEUI(JoinEUI)和 AppKey;建議您記下這些信息,因為在 TTN 註冊設備時需要輸入這些信息。
在的情況下,中 Browna TBHH100-868 感測器標籤這些密鑰已在工廠預先配置。感測器測量溫度和濕度,由 3,6V 電池供電,並按照以下規則傳輸資料:如果沒有變化,則每 60 分鐘傳輸一次;如果溫度變化超過 ±2°C 或濕度變化超過 ±5%,則提前傳輸。要註冊該感測器,只需將製造商提供的 APPKey、APPEUI 和 DevEUI 輸入到您的 LoRaWAN 伺服器(例如 TTN)中即可。有時可能會出現格式或位元組順序(最高有效位元/最低有效位元)問題,因此如果首次連線失敗,請務必檢查這些設定。
很多 Dragino TrackerD 追蹤器 它們用作帶有緊急按鈕的 GPS 追蹤器。每個單元都有自己的一組 LoRaWAN 金鑰。在 TTN 中,它們通常註冊在同一個應用程式(例如「路線追蹤」)中,如有必要,可透過串列埠(USB)使用 AT 指令設定裝置。文件詳細介紹了用於調整傳輸速率、警報行為等的命令。重要提示:許多 Dragino 韌體要求將 AT 命令完整貼上到終端機中,而不是逐個字元輸入。
在諸如…之類的感應器中 Decentlab 用於液位、壓力或環境數據。原則類似:DevEUI、AppEUI 和 AppKey 用於連接到 TTN(或其他網路)。 Decentlab 通常設定 10 分鐘的傳輸間隔,因為這是資料消耗和解析度之間經過驗證的折衷方案,當然也可以根據要求或透過設定進行修改。用戶可以在製造商的雲端平台上查看數據,也可以透過添加相應的有效載荷解碼器將設備整合到第三方平台(例如 MyDevices、ResIoT、WMW 等)中。
使用開源硬體建立您自己的 LoRaWAN 節點
如果你喜歡動手做東西,最有趣的通常是… 建置並編程您自己的 LoRaWAN 節點一個非常受歡迎的組合是使用基於 ESP32 的板子,整合 LoRa,例如 TTGO LoRa32 V2.0 868 MHz,並添加一個簡單的感測器,例如 DS18B20 溫度感測器。
這種方法需要四個部分: 控制板(ESP32、Arduino 等)、LoRa 無線電模組(例如 RFM95 型 SX1276/78)、待測量的感測器 還可以選擇連接 OLED 螢幕等周邊設備,用於在本地顯示資料。
TTGO LoRa32 V2.0 整合了一個 LoRa 收發器,並且根據版本不同,還配備了一個小型 OLED 顯示器。它基於 ESP32,提供 WiFi 和藍牙功能,在許多情況下,連接到網路後,它也非常適合建立單通道迷你網關。然而,在這款開發板以及類似的開發板上, 來自 LoRa 模組的某些訊號(DIO1、DIO2)未連接到微控制器。 而且你得自己接線。
例如,TTGO LoRa32 V2.0 中通常使用以下 LoRa 引腳排列: SCK 接 GPIO5,MISO 接 GPIO19,MOSI 接 GPIO27,CS 接 GPIO18,RESET 接 GPIO14,DIO0 接 GPIO26對於 DIO1 和 DIO2,它們通常分別與 GPIO33 和 GPIO32 物理連接,而 GPIO33 和 GPIO32 位於相反一行的正對面,因此很容易直接連接跳線。
製作這些關節通常有三種方法: 將導線直接焊接到引腳上(用於最終組裝),如果電路板位於麵包板上,則使用跳線。 或者,也可以在定制的PCB板上佈線,然後將TTGO插入該PCB板。跳線方式通常是最方便的測試方式。
節點軟體:LMIC庫、頻率和TTN密鑰
要在 Arduino/ESP32 上對 LoRaWAN 節點進行編程,通常會使用以下方法: MCCI LoRaWAN LMIC 書店它實現了 LoRaWAN 協定棧,並管理與通道、加入、重試、接收視窗等相關的一切。
首先,您需要從以下位置安裝庫: Arduino IDE 庫管理器 搜尋“LMIC”並選擇“MCCI LoRaWAN LMIC 庫”。安裝後,請注意一個關鍵細節:預設情況下,它配置為 US915(美國),因此如果您在歐洲,則必須將其變更為 EU868。
為此,你需要查找該文件。 庫資料夾中的 lmic_project_config.h 文件 (例如 /Arduino/libraries/MCCI_LoRaWAN_LMIC_library/project_config/ 目錄)並編輯定義。註解掉 CFG_us915,啟用 CFG_eu868,同時啟用正確的無線電類型(例如,SX1276/78 模組啟用 CFG_sx1276_radio)。此變更只需一次,即可應用於所有 LMIC 專案。
然後,您可以打開其中一個內建範例,例如 ttn-abp它會定期發送“Hello, world!”作為有效載荷。此範例可作為基礎,您可以根據自己的開發板和 TTN 憑證進行調整。
在程式碼中,你會看到一個結構體 lmic_pinmap 中指定了 NSS (CS)、RST 和 DIO 腳位。預設情況下,它通常會對應到 Feather M0 LoRa,因此如果您使用的是 TTGO LoRa32 V2.0,則需要更改該結構,使用 .nss = 18、.rst = 14 和 .dio = {26, 33, 32}(假設您已將 DIO1 連接到 GPIO33,DIO32)。如果您的硬體不同,則需要查閱其文件或尋找特定範例。
腳位定義正確後,即可開始遊戲。 配置用於在 TTN 中標識您的節點的金鑰。在 ttn-abp 範例中,變數 NWKSKEY、APPSKEY 和 DEVADDR 帶有 FILLMEIN 字樣,以便您可以用自己的值填充它們。
您在建立啟用 ABP 的裝置時,可以從 TTN 控制台取得此資訊。 TTN 為您提供 網路會話金鑰 (NWKSKEY)、應用程式會話金鑰 (APPSKEY) 和裝置位址 (DEVADDR)出於安全考慮,介面中按鍵預設為隱藏,但您可以將其顯示出來。更方便的是,您可以直接以 C 數組格式(使用“<>”按鈕)複製值,並保持正確的位元組順序(最高有效位元)。點擊複製圖示會將陣列複製到剪貼簿,您可以直接將其貼上到程式碼中每個 FILLMEIN 所在的位置。
對於 NWKSKEY 和 APPSKEY,您將使用 TTN提供的位元組數組格式對於 DEVADDR,您需要將十六進位值設為 u4_t 類型的單一整數,例如 `static const u4_t DEVADDR = 0x26011111;`。這將允許您的節點進行身份驗證並將其資料包路由到您的 TTN 應用程式。
將感測器整合到節點代碼中
LoRaWAN 框架建置完成後,就可以… 用真實的感測器資料取代典型的“Hello, world!”繼續以 TTGO LoRa32 和 DS18B20 為例,您可以使用 OneWire 總線和 DallasTemperature 庫。
在草圖的開頭,您需要包含接頭並定義總線引腳: #包括, #包括並 #define ONE_WIRE_BUS X其中 X 是您連接感測器的 GPIO 接腳。您需要建立 OneWire 物件 oneWire(ONE_WIRE_BUS) 和 DallasTemperature 感測器(&oneWire)。如果您尚未安裝 DS18B20 庫,請從庫管理器中新增。
在 setup() 函數中,你使用以下方式初始化感測器: sensor.begin(),如果需要,也可以設定解析度(例如 sensor.setResolution(11))。從那時起,感測器就可以隨時讀取溫度了。
LMIC 中用來傳送資料的關鍵函數是 `do_send(osjob_t* j)`。此函數內部會檢查是否有正在進行的傳輸(`OP_TXRXPEND`)。如果沒有,則呼叫 `sensor.requestTemperatures()`,使用 `sensor.getTempCByIndex(0)` 取得溫度值,並將其儲存在 `mydata` 陣列中。例如,可以使用 `mydata[0] = (uint8_t)sensor.getTempCByIndex(0);` 僅傳送溫度的整數部分。
然後你打電話 LMIC_setTxData2(1, mydata, sizeof(mydata), 0)其中第一個參數是 LoRaWAN 連接埠(本例為 1),第二個參數是緩衝區,第三個參數是緩衝區大小,最後一個參數指示訊息是否已確認(1)或未確認(0)。該庫負責在下一個可用時隙中調度傳輸。
還有很多可以改進的地方: 擴展有效載荷以包含小數部分,添加其他感測器,並將資料以高效的二進位格式打包。等等。但即使在這個簡單的版本中,您也已經擁有一個可以定期向 TTN 發送真實測量資料的節點,這些資料可以在控制台上看到,並且可以隨時與其他系統整合。
OTAA啟動、安全性和實務經驗
到目前為止,我們主要討論的是ABP的程式碼範例,但在生產環境中… 強烈建議使用OTAA(空中激活)方式。OTAA 是 Decentlab 感測器和許多 SenseCAP 感測器等採用的方法,因為它能增強安全性。
透過 OTAA,LoRaWAN 會話 每次設備接取網路時,它都會進行「空中」協商。當節點關閉、重新啟動或失去連線時,下次加入時會產生新的會話金鑰,這使得其他人很難透過複製靜態金鑰來複製裝置。
在 TTN 控制台中,為裝置選擇 OTAA 時,您將不再使用靜態的 NWKSKEY 和 APPSKEY,而是使用: DevEUI、JoinEUI/AppEUI 與 AppKey每次會話金鑰都是根據這些值以及與伺服器的交換而產生的,您只能在會話期間看到派生的金鑰。
實際上,從零開始使用 LoRaWAN 的使用者發現: 如果網關已在 TTN 註冊,且 OTAA 感測器已正確配置,則註冊過程可以非常簡單。在 TTN 上建立帳戶,啟動網關,使用製造商提供的金鑰註冊感測器,幾分鐘後即可在網路平台(Decentlab 自己的 SenseCAP 或第三方儀表板)上查看資料。
諸如 LoRa感測器盒位置(最好垂直放置,這樣有利於內部天線的輻射方向圖)無線電環境和網關高度對實際覆蓋範圍有很大影響,但一旦了解配置流程,配置過程就相當機械化。
從 TTN 到您的應用程式:整合和視覺化
現在節點正在上傳數據,下一步是 將這些資訊匯入到您自己的應用程式、儀表板或自動化工作流程中。TTN為此提供了整合和非常強大的API。
一個非常普遍的方法是使用 使用 Node-RED 從 TTN 接收資料並按您所需的方式進行處理您可以使用 TTN 應用程式憑證配置 MQTT 或 HTTP 連接,解碼有效負載(根據感測器的格式),然後您幾乎可以執行任何操作:儲存到資料庫、顯示圖表、觸發警報等。
另一種選擇是使用 已與 TTN 整合的第三方平台例如 Datacake、MyDevices、ResIoT、WMW 等。其中許多平台已經為 Decentlab 感測器或某些 Dragino 型號等設備提供了特定的模板,因此您只需選擇設備類型,將其連結到您的 TTN 應用程序,即可在「人性化」的儀表板上查看數據。
例如,在教育計畫中,TTN 已被與以下因素結合使用: RAK7289網關和Dragino TrackerD追蹤器 用於定位人員或車輛。工作流程如下:註冊網關,在 TTN 中註冊追蹤器,在控制台上查看數據,然後即時顯示在公共 Datacake 儀表板上,儀表板上會顯示位置、電池電量等地圖和圖表。
重要的是要明白 TTN 扮演 LoRaWAN 網路層和資料路由器的角色。您可以自行決定應用和視覺化層:從使用 API 的 Python 腳本到工業物聯網資料平台。
簡而言之,將 LoRaWAN 節點連接到 TTN 需要幾個步驟(正確的頻率、正確配置的網關、TTN 註冊、節點金鑰、OTAA 或 ABP 啟動、設備軟體,以及後續集成,如果需要),但只要遵循正確的指南,即使沒有經驗,每個步驟都易於操作。初始設定完成後,部署更多節點或網關將成為一個高度可重複且可擴展的過程,非常適合大規模感測器專案、智慧城市計劃,或只是學習和試驗遠端物聯網。