0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

LoRa節(jié)點、LoRa服務器和終端應用之間的數(shù)據(jù)傳輸

STM32單片機 ? 來源:STM32單片機 ? 作者:STM32單片機 ? 2022-06-16 16:43 ? 次閱讀

1、目標

通過本 LAT 實現(xiàn)一個從 LoRa 節(jié)點、LoRa 服務器、終端應用之間的數(shù)據(jù)或者命令的相互傳輸?shù)倪^程。

3fb35a70-e91f-11ec-ba43-dac502259ad0.png

2. 實驗準備

為了實現(xiàn)上面目標,需要準備一些必要的軟件和硬件。軟件的安裝、硬件的介紹和STM32CUBEMX 工具的使用,在本 LAT 中不做介紹。

3fed6454-e91f-11ec-ba43-dac502259ad0.png

4010e15e-e91f-11ec-ba43-dac502259ad0.png

3.. 服務器端賬號和網(wǎng)關注冊

這里只是簡單描述,詳情請參考 UM2587,可以到 WWW.ST.COM 網(wǎng)站下載

405df78c-e91f-11ec-ba43-dac502259ad0.png

3.1. 賬號注冊

首先,要在遠程服務器上注冊自己的賬戶,本實驗以 www.loriot.io 提供的免費服務器為例,創(chuàng)建自己的賬戶, 見圖 2。請注意,在注冊時選擇正確的服務器網(wǎng)站。在本實驗中,我們選擇了 Singapore 的服務器,網(wǎng)址是 ap1.loriot.io

3.2.配置網(wǎng)關

在成功正確的注冊完賬戶之后,我們需要在這個賬戶下注冊我們需要的網(wǎng)關。其中需要注意幾個方面:

?配置網(wǎng)關使用不同的頻段,在本實驗中我們使用的是 CN470,如果網(wǎng)關地址不是的CN470 的話,需要使用下面 AT 指令對網(wǎng)關設備進行修改:

AT+CH=CN470PREQUEL

AT+CH=0,471.5,A

AT+CH=1,471.7,A

AT+CH=2,472.9,A

AT+CH=3,472.1,A

AT+CH=4,472.3,B

AT+CH=5,472.5,B

AT+CH=6,472.7,B

AT+CH=7,472.9,B

AT+CH=8,OFF

AT+CH=9,OFF

?調(diào)整 LoRaWAN 服務器, MAC 地址, 網(wǎng)關的 EUI。在做實驗之前需要確認網(wǎng)關鏈接網(wǎng)絡服務器和你注冊這個網(wǎng)關的服務器一致。本實驗中使用的是 Singapore,而缺省的是 EU1,所以要使用下面 AT 指令進行修改。

AT+PKTFWD=ap1.loriot.io,1780,1780

3.3.注冊網(wǎng)關和設備

? 注冊網(wǎng)關, 登錄注冊的賬戶后,可以看到下圖的 LORIOT 的 Dashboard。選擇“Register a new gateway”進行網(wǎng)關注冊,一般我們選擇基礎平臺為“PacketForwarder STM”,然后從我們網(wǎng)關設備的串口 log 拷貝 MAC 地址。

? 注冊設備,請注意這點需要用到后面的一些參數(shù)(device EUI, Join EUI, Applicationkey),所以剛開始實驗可以先跳過這里。請選擇[Loriot Dashboard]>[Application]>[SampleApp]>[Enroll Device]。然后按照步驟注冊。

? 在注冊完成后,[Loriot Dashboard]>[Application]>[SampleApp]>[output]拷貝外部應用訪問服務器的連接,后面的 cubemx 需要用到。

4098e996-e91f-11ec-ba43-dac502259ad0.png

40c9214c-e91f-11ec-ba43-dac502259ad0.png

下面兩個范例分別為參考地為相鄰層 L2 和參考地為兩側(cè)共面加參考層 L2 的仿真結果,仿真的阻抗為

單端 50ohm。從結果可以看出增加兩側(cè)共面為參考層可以減小阻抗線的寬度。

下面的范例圖 8 為采用 L3 參考層為參考地時的仿真結果,與圖 7 相比,結果顯示由于參考地距離射

頻走線更遠,在保持共面地間距不變的情況下需要更寬的走線來達到同樣的 50ohm 阻抗。如果覺得阻

抗線的寬度不理想可以適當調(diào)整阻抗線與兩側(cè) GND 之間的間距。

圖 9 為差分 100ohm 阻抗線設置范例,可通過差分線之間的間距,差分線寬度,差分線與兩側(cè) GND

間距以及參考平面來調(diào)整阻抗。

4.設備搭建

在創(chuàng)建工程之前,下載最新的 STM32CUBEWL 軟件包、X-CUBE-MEMS1和 STM32CUBEMX 并安裝。

4.1. 創(chuàng)建工程

? 首先,打開 STM32CUBEMX,選擇從“Start my project from Example”生成工程,然后搜索 Keyword “LoRaWAN_End_Node”.

? 然后,雙擊選中的工程。并且選擇一個保存實驗工程的路徑。這個時候,我們就可以看到一個基本的 STM32CUBEMX 工程。

? 也可以直接從 STM32WL 的 Library 路徑下面,在下面路徑下,復制并粘貼工程文件STM32Cube_FW_WL_V x.x.xProjectsNUCLEO

WL55JCApplicationsLoRaWANLoRaWAN_End_Node , 然后重命名為LoRaWAN_End_Node_Sensor,最后打開工程文件里面的 STM32CUEMX 工程文件。

? 接著對工程做一些簡單的修改:

1. 配置頻段,缺省的頻段是歐洲頻段,本實驗使用的中國頻段 CN470.見圖 4.

2. 增加 sensor 的配置。

a) 選擇正確的 sensor 型號驅(qū)動軟件,使用溫度、濕度和壓力。見圖 5。

b) 使能訪問 sensor 板的 I2C2 外設,根據(jù) NUCLEO-WL55JC2 原理圖,

配置對應的 I2C 總線 GPIO 為 PA11 和 PA12,見圖 6。

c) 使能 senor 板,并且選擇正確的 i2c 驅(qū)動見圖 7.

d) 生成代碼。見圖 8

4134ad2c-e91f-11ec-ba43-dac502259ad0.png

416f85e6-e91f-11ec-ba43-dac502259ad0.png

41a667b4-e91f-11ec-ba43-dac502259ad0.png

41d31f98-e91f-11ec-ba43-dac502259ad0.png

420fce3e-e91f-11ec-ba43-dac502259ad0.png

3. 代碼修改

(i) 添加宏定義,在 IAR 的“Option 設置->C/C++ Compiler->Preprocessor”的 “Define symbols”中添加 X_NUCLEO_IKS01A3”,見圖 9。

(ii) 找到 sys_sensors.h 使能 Sensor, 見圖 10.#define SENSOR_ENABLED 1

(iii) 在“l(fā)ora_app.c”的“SendTxData”函數(shù)中,修改 Lora 提取的上傳數(shù)據(jù),見圖 11.

(iv) 為了更加容易加入網(wǎng)絡,將CN470_FIRST_RX1_CHANNEL 改為“( (uint32_t) 470300000 )”。

(v) 將 BSP_BUTTON_SWx_IT_PRIORITY 改為 15。

(vi)將由于有 sensor 讀取,所以關掉低功耗模式。

#define LOW_POWER_DISABLE 1

(vii)最后編譯運行,可以從串口 log 看到下面的運行信息,如圖 12,然后拷貝設

備信息(device EUI, Join EUI, Application key)繼續(xù)完成 3.3 對設備的注冊。

424080ce-e91f-11ec-ba43-dac502259ad0.png

429a8b14-e91f-11ec-ba43-dac502259ad0.png

42d22bfa-e91f-11ec-ba43-dac502259ad0.png

4317392a-e91f-11ec-ba43-dac502259ad0.png

5.創(chuàng)建 STM32CubeMonitor 工程

通過創(chuàng)建一個 STM32CubeMonitor 工程,來顯示 sensor 的數(shù)據(jù),從而達到終端數(shù)據(jù)的利用展示。

5.1. 創(chuàng)建一個新的 STM32CubeMonitor 工程。

1. 打開 STM32CubeMonitor, 單擊圖 12 的“+”圖標,創(chuàng)建一個 flow。

2. 雙擊默認 basic flow, 然后單擊“Delete”按鈕,見圖 13。

3. 修改 新 flow 的名字為自己想要的名字,這里改為STM32WL_Sensor_Dashboard,見圖 14。

4. 創(chuàng)建與 flow 關聯(lián)的 Dashboard, 見圖 15。

5. 創(chuàng)建關聯(lián)的 group 并且修改,將鼠標放置在新建 tab 上,選擇“+tab”添加 group ,并且通過選擇“edit”編輯需要的名字,這里設為

“STM32WL_Sensor_Dashboard”,見圖 16。

6. 用與步驟 5 相同的方式,修改 group 為“STM32WL_Sensor”

436a1fc8-e91f-11ec-ba43-dac502259ad0.png

43933bd8-e91f-11ec-ba43-dac502259ad0.png

43be4eea-e91f-11ec-ba43-dac502259ad0.png

43e99f8c-e91f-11ec-ba43-dac502259ad0.png

44412d7e-e91f-11ec-ba43-dac502259ad0.png

5.2. 添加需要的控件。

1. 從控件面板中拖拽需要的控件到 flow 中,從而實現(xiàn)需要顯示的功能。這里需要用到 2個 TEXT 控件來顯示文本信息;3 個 gauge 來顯示 sensor 數(shù)據(jù);兩個 function 控件來,轉(zhuǎn)換 json 格式,一個 comment 來提示輸入;一個 websocket 輸入和一個websocket 輸出;一個 led 來顯示板子 LED 燈狀態(tài),一個 switch 來個控制板子的LED 燈的顯示。見圖 17。

447561a2-e91f-11ec-ba43-dac502259ad0.png

2. 逐個雙擊 flow 上的每個控件打開其屬性窗口,接著對逐個的參數(shù)進行修改,并將它關聯(lián)到“STM32WL_Sensor”group。

? 修改“comment”控件,修改名字為“Remind”在文本框內(nèi)添加一些提醒內(nèi)容,如“Edit the "Loriot Uplink" node with your LORIOT WebSocketToken;you will find your LORIOT WebSocket Token under Application ->SampleApp -> Output.”

? 修改其中一個“TEXT”控件,修改 Label 為“STM32WL_Sensor_Dashboard”;修改 Name 為 “Title”;選擇 group 為“STM32WL_Sensor”;size 設置 6x2,最后我們還再統(tǒng)一調(diào)整。在 layout 根據(jù)需要選擇顯示時的字體排列。

? 修改另外一個“TEXT”控件,修改 Label 為“LED”;修改 Name 為 “LED Status”;選擇 group 為“STM32WL_Sensor”;size 設置 1x1,在 layout 根據(jù)需要選擇顯示時的字體排列。

? 修改“Websocket in”控件,選擇 Type 為“connect on”;修改 Name 為“Loriot uplink”;添加 path 為前面提到的從服務器獲取的 link(見 3.3),

這個例程中用到為“wss://ap1.loriot.io/app?token=vnoGCAAAAA1hcDEubG9yaW90LmlvXyeT

wWbRSI-MCBQC04gzTg==”

? 修改“Websocket out ”控件,選擇 Type 為“Connect to”;修改 name 為“Loriot DownLink”,path 它會自動填充 websocket in 的路徑。

? 修改 “LED”控件,修改 Name 為 “LED”;選擇 group 為“STM32WL_Sensor”;size 設置 1x1;在“Colors for value of msg.payload”下,單擊“X”刪掉一個選項,并且點擊下拉箭頭將類型選為“number”,同時將 number 設為“1”,然后選擇一個你喜歡的顏色,意思是當收到數(shù)字為“1”時,顯示紅色。如圖 18.

449fad7c-e91f-11ec-ba43-dac502259ad0.png

? 修改 “json”控件,修改 Name 為 “json”,其它的默認就可以了。

? 修改一個 function 控件,修改名字為“Decode Sensor Parameter ”,這里我們需要寫一個函數(shù)來提取 sensor 數(shù)據(jù),在“ON message”選項添加函數(shù)如圖 19:

if (msg.payload.cmd ==="tx") return ;

var LedState = {payload: parseInt("0x" + msg.payload.data.substring(0, 2))};

var Pressure = {payload: parseInt("0x" + msg.payload.data.substring(2, 6))};

var Temperature = {payload: parseInt("0x" + msg.payload.data.substring(6, 8))};

var Humidity = {payload: parseInt("0x" + msg.payload.data.substring(8, 12))};

return [ LedState,Pressure, Temperature, Humidity];

同時在“Setup”選項中設置輸出個數(shù)為 4;

44c1d3d4-e91f-11ec-ba43-dac502259ad0.png

? 修改“Switch”控件,修改 Label 為“LED ON/OFF”;修改 Name 為 “LED Switch”;選擇 group 為“STM32WL_Sensor”;size 設置為 3x1; 添加一個topic 域為“MessageTx_LED”,如圖 20.

4519d908-e91f-11ec-ba43-dac502259ad0.png

? 修改另一個“function”控件,修改名字為“Encode LED Parameter ”,這里需要一個函數(shù)來提取 sensor 數(shù)據(jù),在“ON message”選項添加函數(shù)如圖 21,請注意這里用了 Device EUI, 這里需要從節(jié)點設備的信息 log 中獲取。

4544c3f2-e91f-11ec-ba43-dac502259ad0.png

? 修改“Gauge”控件,現(xiàn)在任意一個“Gauge”控件,雙擊設置屬性,選擇group為“STM32WL_Sensor”,size設置為4x3,Label為“Pressure”, range的 min 為“900”,max 為“1100”,如圖 22.

? 同理修改其它“Gauge”控件,選擇一個“Gauge”控件,雙擊設置屬性,選擇group 為“STM32WL_Sensor”,size 設置為 4x3,Label 為“Temperature”,range 的 min 為“0”,max 為“50”。

?修改“Gauge”控件,將最后一個“Gauge”控件,雙擊設置屬性,選擇group為“STM32WL_Sensor”,size設置為 4x3,Label為“Humidity”, range的 min 為“0”,max 為“100 “.

4577c25c-e91f-11ec-ba43-dac502259ad0.png

3. 修改完控件之后,我們需要將其所有的控件關聯(lián)在一起。將一個控件的節(jié)點拖拽到另外一個需要關聯(lián)的控件即可,如圖 23。這里要特別注意的是 decoder 的輸出函數(shù)的輸出值的順序必須跟你需要顯示的值一致,這里是按照“LedState,Pressure,Temperature, Humidity”順序,所以必須是 led 控件連接到最上面一個輸出口。

45b1a878-e91f-11ec-ba43-dac502259ad0.png

4. 按照之前 5.1.5 的方式再次選擇 Dashboard-》layout 對顯示界面進行布局。如圖 24。

圖中右側(cè)寬度是總的顯示寬度,長度自動根據(jù)顯示而設定的。單擊控件上的鎖定圖標,從而鎖定顯示,然后拖拽而改變大小,按住鼠標左鍵移動位置。在在適當調(diào)整之后,點擊 STM32CubeMonitor 右上角的“DEPLOY”部署工程,然后點擊“DASHBOARD”,顯示效果,如果不滿意,可以再次用前面的方式對界面多次布局,直到滿意為止。如圖 25。

45e723c2-e91f-11ec-ba43-dac502259ad0.png

462278dc-e91f-11ec-ba43-dac502259ad0.png

5. 將網(wǎng)關通電確保接入外部網(wǎng)絡(Internet),然后 sensor 節(jié)點通電,確保節(jié)點加入LoRa 網(wǎng)絡,可以通過節(jié)點和網(wǎng)關的串口數(shù)據(jù)確認是否正確,在網(wǎng)關和節(jié)點工作正常后,點擊“DASHBOARD”按鈕,我們就可以看到圖 26 的效果。

4670ecb0-e91f-11ec-ba43-dac502259ad0.png

文檔中所用到的工具及版本

? STM32CUBEMX 版本 6.3

? STM32CUBEMonitor 版本 1.3

? IAR 編譯器 版本 9.0

? X-CUBE-MEMS1 版本 9.0

原文標題:工程師筆記|如何用STM32CubeMonitor圖形化顯示Lora節(jié)點信息

文章出處:【微信公眾號:STM32單片機】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 節(jié)點
    +關注

    關注

    0

    文章

    217

    瀏覽量

    24363
  • 服務器
    +關注

    關注

    12

    文章

    8961

    瀏覽量

    85085
  • stm32cubemx
    +關注

    關注

    5

    文章

    280

    瀏覽量

    14713
  • LoRa
    +關注

    關注

    349

    文章

    1663

    瀏覽量

    231714

原文標題:工程師筆記|如何用STM32CubeMonitor圖形化顯示Lora節(jié)點信息

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    LoRa技術科普

    kbps,為了最大化終端設備電池的壽命和整個網(wǎng)絡容量,LoRaWAN網(wǎng)絡服務器通過一種速率自適應(Adaptive Data Rate , ADR)方案來控制數(shù)據(jù)傳輸速率和每一終端
    發(fā)表于 11-03 13:08

    【轉(zhuǎn)帖】什么是LoRa技術

    是一個透明的中繼,連接終端設備和服務器。網(wǎng)關與服務器通過標準IP連接,而終端設備采用單跳與一個或多個網(wǎng)關通信,所有的節(jié)點均是雙向通信。
    發(fā)表于 12-12 11:26

    LoRa技術科普

    ,為了最大化終端設備電池的壽命和整個網(wǎng)絡容量,LoRaWAN網(wǎng)絡服務器通過一種速率自適應(Adaptive Data Rate , ADR)方案來控制數(shù)據(jù)傳輸速率和每一終端設備的射頻輸
    發(fā)表于 01-23 06:35

    Lora技術和市場應用揭秘

    ,LoRa網(wǎng)關是一個透明的中繼,連接前端終端設備和后端中央服務器。網(wǎng)關與服務器通過標準IP連接,而終端設備采用單跳與一個或多個網(wǎng)關通信,所有
    發(fā)表于 09-18 09:05

    lora無線通信模塊技術介紹

    太高的傳輸速率。 LoRa網(wǎng)絡主要由終端、網(wǎng)關、網(wǎng)絡服務器及應用服務器組成。在LoRaWAN網(wǎng)絡架構中,
    發(fā)表于 09-10 16:30

    LoRa終端節(jié)點的網(wǎng)絡連接方式有哪些?

    什么是Lora? LoRa的主要特點? LoRa的系統(tǒng)架構? LoRa終端節(jié)點的網(wǎng)絡連接方式? LoRa
    發(fā)表于 09-27 07:45

    Lora sx1278是怎樣利用串口協(xié)議去實現(xiàn)數(shù)據(jù)傳輸的呢

    Lora sx1278是怎樣利用串口協(xié)議去實現(xiàn)數(shù)據(jù)傳輸的呢?其代碼該怎樣去實現(xiàn)呢?
    發(fā)表于 02-21 06:37

    LoRa低功耗的秘訣是什么?怎么挑選合適的無線傳輸lora模塊?

    。在此網(wǎng)絡架構中,LoRa網(wǎng)關是連接終端設備和后端中央服務的透明傳輸中繼。 三、LoRa終端設備
    發(fā)表于 12-14 14:48

    基于NuMicro ML51芯片中的SPI和GPIO功能實現(xiàn)LoRa模塊的數(shù)據(jù)傳輸

    應用:該樣本代碼基于NuMicro ML51芯片中的SPI和GPIO功能,以實現(xiàn)LoRa模塊的數(shù)據(jù)傳輸。 BSP 版本: ML51_BSP_Keil_C51_V1.0.0 硬件:NT-ML51PC
    發(fā)表于 08-23 06:15

    基于NuMicro ML51芯片中的SPI和GPIO功能實現(xiàn)LoRa模塊的數(shù)據(jù)傳輸

    應用:該樣本代碼基于NuMicro ML51芯片中的SPI和GPIO功能,以實現(xiàn)LoRa模塊的數(shù)據(jù)傳輸。 BSP 版本: ML51_BSP_Keil_C51_V1.0.0 硬件:NT-ML51PC
    發(fā)表于 09-01 07:26

    F8L10T LoRa 數(shù)據(jù)傳輸終端的技術規(guī)范和數(shù)據(jù)手冊免費下載

    F8L10T LoRa 數(shù)據(jù)傳輸終端是一種基于 LoRa 擴頻技術的無線數(shù)據(jù)傳輸終端,利用
    發(fā)表于 12-10 08:00 ?21次下載

    如何測試LoRa節(jié)點內(nèi)置MQTT SERVER的數(shù)據(jù)傳輸是否正常

    LoRa節(jié)點數(shù)據(jù)。 本文介紹如何測試我們之前的設置是否成功,LoRa節(jié)點與MQTTSERVER之間
    發(fā)表于 06-12 17:31 ?1796次閱讀
    如何測試<b class='flag-5'>LoRa</b><b class='flag-5'>節(jié)點</b>內(nèi)置MQTT SERVER的<b class='flag-5'>數(shù)據(jù)傳輸</b>是否正常

    lora和wifi的區(qū)別 lora怎么傳輸數(shù)據(jù)

    LoRa是一種低功耗、長距離的無線通信技術,可以用于物聯(lián)網(wǎng)設備之間的通信。數(shù)據(jù)傳輸的過程包括以下步驟。
    的頭像 發(fā)表于 06-13 17:52 ?8362次閱讀

    LoRa網(wǎng)關+LoRa節(jié)點的特點和優(yōu)勢

    LoRa網(wǎng)關是連接終端設備和LoRaWAN網(wǎng)絡的設備,負責收集來自多個LoRa基站的數(shù)據(jù)并將其傳輸到云端。
    的頭像 發(fā)表于 03-19 17:02 ?1285次閱讀
    <b class='flag-5'>LoRa</b>網(wǎng)關+<b class='flag-5'>LoRa</b><b class='flag-5'>節(jié)點</b>的特點和優(yōu)勢

    LORA模塊的數(shù)據(jù)傳輸速率

    LoRa(Long Range)是一種用于物聯(lián)網(wǎng)(IoT)應用的低功耗廣域網(wǎng)(LPWAN)技術。它以其長距離通信能力和低功耗特性而聞名。LoRa模塊的數(shù)據(jù)傳輸速率可以根據(jù)不同的配置和地區(qū)的規(guī)定
    的頭像 發(fā)表于 10-31 17:03 ?477次閱讀