在 LORIOT 創建你的 LoRa 網路
如果沒有這樣做,請先閱讀建立創建你自己的私有 LoRa 網路。
現在你已經建立了網關,數據可以到達互聯網,是時候安裝 LORIOT 軟體了,它可以發送 LoRa 數據包。
注意在 Kerlink IoT 站:通常,Kerlink IoT 站預先配置了數據包轉發器(運行 ps | grep pkt 以查看是否正在運行)。如果是這種情況,請通過從 /etc/init.d 中刪除該條目來確保數據包轉發器在啟動時不啟動。
安裝 LORIOT 軟體
- 1.註冊一個帳號,註冊頁面。
- 2.您被重定向到儀錶板頁面。
- 3.點擊鏈接註冊新網關。
- 4.有一個嚮導頁面,選擇您擁有的網關,並按照步驟。
- 5.進入網關頁面,在其中找到你平台的 LORIOT 二進位文件和設置文檔的鏈接。
提示:使用像 scp 這樣的工具將二進位文件從計算機複製到網關。例如:
scp?/ Downloads / loriot_pi_2_iC880A_USB_1.0.1.tar pi@192.168.2.7:?/
- 6.在網關上,運行LORIOT二進位文件。
- 7.網關顯示為連接在 LORIOT 網關頁面上,已準備好在設備上工作。
提示:LORIOT 有一個「網關點擊」,可以從你的網關頁面訪問。這允許你查看網關正在拾取哪些消息,這在調試時非常有用。
網關啟動時自動啟動LORIOT二進位文件
Kerlink IoT站
如果您遵循 LORIOT 文檔中的安裝步驟,則每當網橋引導時,二進位文件自動啟動。
MultiTech Conduit
- 通過 SSH 或串列埠登錄。
- 創建一個新文件 /etc/init.d/start-loriot.sh。
- 編輯此文件(通過nano /etc/init.d/start-loriot.sh),並添加以下內容:cd / home / root / && ./loriot_multitech_conduit_mCard_USB_1.0.1
- 如果你在其他地方提取了LORIOT二進位文件,請編輯該路徑。
- CD 首先進入文件夾;否則,LORIOT 找不到其證書。
- 使文件可執行:chmod + x /etc/init.d/start-loriot.sh
- 鏈接腳本:ln -s /etc/init.d/start-loriot.sh /etc/rc5.d/S99start-loriot.sh
- 現在,重新啟動網關,並驗證LORIOT二進位文件是否正在運行(通過ps aux | grep loriot)。
Raspberry Pi and IMST iC880A
當Raspberry Pi啟動時,按照此頁面上的步驟啟動LORIOT二進位文件。
構建設備
現在開始有趣的工作:構建可以通過 LoRa 網路發送感測器數據的設備。例如,您可以使用 PIR 感測器創建運動感測器(當地五金店不到10歐元,從中國訂購時為2歐元)。當然,你可以使用任何其他感測器。
一些關於寫固件的筆記
不斷發送數據
由於占空比限制,你不能持續發送數據。這是使用開放頻譜的要求。如果發送太快,發送將失敗。允許發送的速度取決於你使用的擴展因子。以較高的擴展因子,儘管網關收到的機會增加,但發送消息需要更長時間。因此,您需要等待更長時間才能再次發送。在開發過程中,您可以將擴展因子設置為SF7(最低),它可以每6-7秒發送一次。
LoRaWAN 具有稱為自適應數據評估(ADR)的功能,網路可以通過該功能來控制擴展因子。 ?你可能希望啟用此功能。
阻塞針
LoRa 屏蔽的一個缺點是它會阻塞所有引腳。您可以在屏蔽背面焊接一些新的接頭以添加新的外圍設備,或者使用像 nRF51-DK 這樣的微控制器,其引腳可用兩次,一次通孔連接器,一次通過母頭。
在 LORIOT 上註冊設備
LoRa 是端對端加密的,帶有兩組密鑰。你需要將這些密鑰和設備 ID 編程到設備固件中。你將使用這些密鑰簽署郵件,並由網路伺服器進行驗證。
生成新的密鑰對:
- 轉到 LORIOT 儀錶板。
- 單擊應用程序>示例應用程序>管理設備>生成新設備。
- 將設備添加到列表中。
- 單擊設備以轉到設備頁面。
- 在頁面的底部,找到 Seqno 檢查,並將此設置更改為 Relax。 (如果按鈕不顯示,則從 JS 控制台調用 setRelax())。
現在你有 keys,你可以開始編寫軟體。
使用LoRa屏蔽
將樣板程序導入在線IDE
- 在ARM mbed上註冊一個帳戶,它將託管你將要使用的在線編譯器。
- 在「平台」頁面上找到你的微控制器。
- 單擊添加到你的 mbed 編譯器。
- 去 LoRaWAN-lmic 應用程序。
- 單擊導入此程序。
- 你被重定向到在線編譯器,可以在其中給程序一個名稱。
注意:確保您選擇編譯器右上角的正確微處理器。
設置屏蔽頻率
你需要為你擁有的屏蔽版本(以及?你在世界上的哪個位置)設置正確的頻率。
打開 LMiC / lmic.h,找到以下幾行:
// mbed compiler optionsn//#define CFG_eu868 n#define CFG_us915 n
確保正確的行被取消注釋,具體取決於你擁有的屏蔽版本。
如果使用 SX1276MB1LAS:
//#define CFG_eu868 n#define CFG_us915 n
如果使用 SX1276MB1MAS:
#define CFG_eu868 n//#define CFG_us915 n
添加 LORIOT keys
將 keys 從 LORIOT 編程到設備固件中。
打開 "main.cpp",並更改以下行:
#define LORAWAN_DEV_ADDR ( uint32_t )0x12345678nnstatic uint8_t NwkSKey[] =n{n 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,n 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3Cn};nn// application session keynstatic uint8_t ArtSKey[] =n{n 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,n 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3Cn};n
- 將 LORAWAN_DEV_ADDR從LORIOT(綠色)設置為大端的 DevAddr,前綴為0x。
- 將 NwkSKey 和 ArtSKey 從 LORIOT 設置為 NWKSKEY(橙色)和APPSKEY(黃色),但將其轉換為十六進位數。例如,您的代碼中,5ADA30AA的 LORIOT 鍵應為0x5A,0xDA,0x30,0xAA。
?驗證設置
現在,您可以通過單擊編譯按鈕來驗證設置是否工作。
當編譯成功時,下載一個文件。
將開發板插入計算機(通過 micro-USB)將其作為 USB 大容量存儲設備進行安裝。在大多數情況下,您不需要驅動程序,但?你可以在此找到驅動程序,以防萬一。
設備掛載後,將編譯好的文件拖到板上。這將導致設備啟動。然後,你可以看到消息進入 LORIOT 設備頁面:
切換到手動發送
默認情況下,應用程序會自動發送數據。如果要更改此選項,請從 main.cpp 中刪除這些行:
if( txOn == true )n{n //Sends frame every APP_TX_DUTYCYCLE +/- APP_TX_DUTYCYCLE_RND random time (if not duty cycle limited)n os_setTimedCallback( &sendFrameJob,n os_getTime( ) + ms2osticks( APP_TX_DUTYCYCLE + randr( -APP_TX_DUTYCYCLE_RND, APP_TX_DUTYCYCLE_RND ) ),n onSendFrame );nn ////Sends frame as soon as possible (duty cycle limitations)n //onSendFrame( NULL );n}n
現在,您可以隨時添加發送消息的代碼,例如當有人在PIR感測器前移動時中斷觸發:
InterruptIn pir(D5);nnstatic void prepareTxFrame( void )n{n LMIC.frame[0] = pir; // current state of the pir sensorn#if ( LORAWAN_CONFIRMED_MSG_ON == 1 )n LMIC.frame[1] = LMIC.seqnoDn >> 8;n LMIC.frame[2] = LMIC.seqnoDn;n LMIC.frame[3] = LMIC.rssi >> 8;n LMIC.frame[4] = LMIC.rssi;n LMIC.frame[5] = LMIC.snr;n#endifn}nnvoid movement() {n onSendFrame(NULL);n}nnvoid no_movement() {n onSendFrame(NULL);n}nnint main( void ) {nn pir.rise(movement);n pir.fall(no_movement);nn // ... lora related thingsn}n
更改 prepareTxFrame 函數的內容以更改你要發送的數據(也更新 LORAWAN_APP_DATA_SIZE)。每當 PIR 感測器改變狀態(從運動到不運動,另一方面)時,你會收到消息
使用 MultiTech mDot
將樣板程序導入在線IDE
- 在 ARM mbed 上註冊一個帳戶,它將託管您將使用的在線編譯器。
- 轉到 MultiTech mDot 平台頁面。
- 單擊添加到您的 mbed 編譯器。
- 轉到 mdot_personalized_activation 項目頁面。
- 單擊導入此程序。
- 你被重定向到在線編譯器,可以在其中給程序一個名稱。
添加 LORIOT 鍵
現在,將密鑰從 LORIOT 編程到設備固件中。
打開 main.cpp,並從 LORIOT 將大碼頭 DevAddr(綠色),NWKSKEY(橙色)和 NWKSKEY(黃色)複製到應用程序中:
static const char LORIOT_DEV_ADDR[] = "AABBCCDD"; // greennstatic const char LORIOT_NWK_S_KEY[] = "E8A25EBD07F85800E08478A041FACBA7"; // orangenstatic const char LORIOT_APP_S_KEY[] = "BE8EF84E745D0AB14D4507B0BA600555"; // yellown
驗證設置
現在, 你可以通過單擊編譯按鈕來驗證設置是否工作。
當編譯成功時,下載一個文件。
將開發板插入計算機(通過 micro-USB)將其作為 USB 大容量存儲設備進行安裝。在大多數情況下,您不需要驅動程序,但你可以在此找到驅動程序,以防萬一。
設備掛載後,將編譯好的文件拖到板上。這將導致設備啟動。然後,你可以看到消息進入 LORIOT 設備頁面:
切換到手動發送
默認情況下,應用程序會自動發送數據。如果要更改,請刪除 send_data();調用,並手動調用(例如從中斷)。有關更多信息,請參閱上面有關 LoRa 屏蔽的部分。
構建Web應用程序
現在網路的前三個部分一句就緒,到了在一個小應用程序中使用感測器數據的時候了。 LORIOT 提供了將數據從服務中刪除的方法,但最簡單的方法是使用 Websocket。您可以編寫一個 Web 應用程序,當檢測到移動時將頁面變紅,當一切正常時,都會顯示綠色。您可以通過檢查 LoRa 有效負載的第一個位元組(1=運動,0=無運動)來執行此操作。
1.在 LORIOT 中:轉到你的信息中心,然後單擊應用程序>示例應用程序>輸出。
2.將輸出類型更改為 WebSocket。3.在當前輸出設置下複製 URL 和令牌,並將其粘貼到下面的代碼示例中:
<!DOCTYPE html>n<html>n<head>n <title>PIR Sensor monitoring!</title>n</head>n<body>n <p id="status">Connecting...</p>n <script>n var token = YOUR_AUTHENTICATION_TOKEN_HERE;n var url = YOUR_TARGET_URL_HERE (incl {token} part);n var ws = new WebSocket(url.replace({token}, token));n ws.onopen = function() {n document.querySelector(#status).textContent = Connected;n };n ws.onclose = function() {n document.querySelector(#status).textContent = Disconnected;n };n ws.onmessage = function(e) {n console.log(onmessage, e);n var data = JSON.parse(e.data);n if (data.cmd !== rx) return;nn switch (Number(data.data.slice(0, 2))) {n case 0: document.body.style.backgroundColor = green; break;n case 1: document.body.style.backgroundColor = red; break;n }n };n </script>n</body>n</html>n
您現在擁有一個功能齊全的 LoRa 網路,其中包含設備,網關和 Web 應用程序:
結束語
LoRa 是一項具有很大潛力的偉大技術,特別是因為任何人都可以建立網路,並開始建立投影相對較小的遠程 IoT 設備。我們希望本指南幫助您開始使用,我們很樂意看到你使用 LoRa 和 ARM mbed 製作的內容!
原文鏈接:https://docs.mbed.com/docs/lora-with-mbed/en/latest/loriot/
推薦閱讀:
※手機上的4x4 MIMO是什麼?平時用得上嗎?
※2g3g4g下,干相同的事,消耗的流量是一樣多嗎?
※獨家重磅:5G時代能否提前到來——專訪中興通訊首席科學家向際鷹
※我國4G為什麼要求五模十頻?
※鮮棗課堂到底是做什麼的?