0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

LoRa节点、LoRa服务器和终端应用之间的数据传输

STM32单片机 来源:STM32单片机 作者:STM32单片机 2022-06-16 16:43 次阅读

1、目标

通过本 LAT 实现一个从 LoRa 节点、LoRa 服务器、终端应用之间的数据或者命令的相互传输的过程。

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

2. 实验准备

为了实现上面目标,需要准备一些必要的软件和硬件。软件的安装、硬件的介绍和STM32CUBEMX 工具的使用,在本 LAT 中不做介绍。

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

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

3.. 服务器端账号和网关注册

这里只是简单描述,详情请参考 UM2587,可以到 WWW.ST.COM 网站下载

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

3.1. 账号注册

首先,要在远程服务器上注册自己的账户,本实验以 www.loriot.io 提供的免费服务器为例,创建自己的账户, 见图 2。请注意,在注册时选择正确的服务器网站。在本实验中,我们选择了 Singapore 的服务器,网址是 ap1.loriot.io

3.2.配置网关

在成功正确的注册完账户之后,我们需要在这个账户下注册我们需要的网关。其中需要注意几个方面:

配置网关使用不同的频段,在本实验中我们使用的是 CN470,如果网关地址不是的CN470 的话,需要使用下面 AT 指令对网关设备进行修改:

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

调整 LoRaWAN 服务器, MAC 地址, 网关的 EUI。在做实验之前需要确认网关链接网络服务器和你注册这个网关的服务器一致。本实验中使用的是 Singapore,而缺省的是 EU1,所以要使用下面 AT 指令进行修改。

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

3.3.注册网关和设备

➢ 注册网关, 登录注册的账户后,可以看到下图的 LORIOT 的 Dashboard。选择“Register a new gateway”进行网关注册,一般我们选择基础平台为“PacketForwarder STM”,然后从我们网关设备的串口 log 拷贝 MAC 地址。

➢ 注册设备,请注意这点需要用到后面的一些参数(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 和参考地为两侧共面加参考层 L2 的仿真结果,仿真的阻抗为

单端 50ohm。从结果可以看出增加两侧共面为参考层可以减小阻抗线的宽度。

下面的范例图 8 为采用 L3 参考层为参考地时的仿真结果,与图 7 相比,结果显示由于参考地距离射

频走线更远,在保持共面地间距不变的情况下需要更宽的走线来达到同样的 50ohm 阻抗。如果觉得阻

抗线的宽度不理想可以适当调整阻抗线与两侧 GND 之间的间距。

图 9 为差分 100ohm 阻抗线设置范例,可通过差分线之间的间距,差分线宽度,差分线与两侧 GND

间距以及参考平面来调整阻抗。

4.设备搭建

在创建工程之前,下载最新的 STM32CUBEWL 软件包、X-CUBE-MEMS1和 STM32CUBEMX 并安装。

4.1. 创建工程

➢ 首先,打开 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 型号驱动软件,使用温度、湿度和压力。见图 5。

b) 使能访问 sensor 板的 I2C2 外设,根据 NUCLEO-WL55JC2 原理图,

配置对应的 I2C 总线 GPIO 为 PA11 和 PA12,见图 6。

c) 使能 senor 板,并且选择正确的 i2c 驱动见图 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) 在“lora_app.c”的“SendTxData”函数中,修改 Lora 提取的上传数据,见图 11.

(iv) 为了更加容易加入网络,将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)继续完成 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.创建 STM32CubeMonitor 工程

通过创建一个 STM32CubeMonitor 工程,来显示 sensor 的数据,从而达到终端数据的利用展示。

5.1. 创建一个新的 STM32CubeMonitor 工程。

1. 打开 STM32CubeMonitor, 单击图 12 的“+”图标,创建一个 flow。

2. 双击默认 basic flow, 然后单击“Delete”按钮,见图 13。

3. 修改 新 flow 的名字为自己想要的名字,这里改为STM32WL_Sensor_Dashboard,见图 14。

4. 创建与 flow 关联的 Dashboard, 见图 15。

5. 创建关联的 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 中,从而实现需要显示的功能。这里需要用到 2个 TEXT 控件来显示文本信息;3 个 gauge 来显示 sensor 数据;两个 function 控件来,转换 json 格式,一个 comment 来提示输入;一个 websocket 输入和一个websocket 输出;一个 led 来显示板子 LED 灯状态,一个 switch 来个控制板子的LED 灯的显示。见图 17。

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

2. 逐个双击 flow 上的每个控件打开其属性窗口,接着对逐个的参数进行修改,并将它关联到“STM32WL_Sensor”group。

➢ 修改“comment”控件,修改名字为“Remind”在文本框内添加一些提醒内容,如“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,最后我们还再统一调整。在 layout 根据需要选择显示时的字体排列。

➢ 修改另外一个“TEXT”控件,修改 Label 为“LED”;修改 Name 为 “LED Status”;选择 group 为“STM32WL_Sensor”;size 设置 1x1,在 layout 根据需要选择显示时的字体排列。

➢ 修改“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”,然后选择一个你喜欢的颜色,意思是当收到数字为“1”时,显示红色。如图 18.

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

➢ 修改 “json”控件,修改 Name 为 “json”,其它的默认就可以了。

➢ 修改一个 function 控件,修改名字为“Decode Sensor Parameter ”,这里我们需要写一个函数来提取 sensor 数据,在“ON message”选项添加函数如图 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”选项中设置输出个数为 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 ”,这里需要一个函数来提取 sensor 数据,在“ON message”选项添加函数如图 21,请注意这里用了 Device EUI, 这里需要从节点设备的信息 log 中获取。

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

➢ 修改“Gauge”控件,现在任意一个“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. 修改完控件之后,我们需要将其所有的控件关联在一起。将一个控件的节点拖拽到另外一个需要关联的控件即可,如图 23。这里要特别注意的是 decoder 的输出函数的输出值的顺序必须跟你需要显示的值一致,这里是按照“LedState,Pressure,Temperature, Humidity”顺序,所以必须是 led 控件连接到最上面一个输出口。

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

4. 按照之前 5.1.5 的方式再次选择 Dashboard-》layout 对显示界面进行布局。如图 24。

图中右侧宽度是总的显示宽度,长度自动根据显示而设定的。单击控件上的锁定图标,从而锁定显示,然后拖拽而改变大小,按住鼠标左键移动位置。在在适当调整之后,点击 STM32CubeMonitor 右上角的“DEPLOY”部署工程,然后点击“DASHBOARD”,显示效果,如果不满意,可以再次用前面的方式对界面多次布局,直到满意为止。如图 25。

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

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

5. 将网关通电确保接入外部网络(Internet),然后 sensor 节点通电,确保节点加入LoRa 网络,可以通过节点和网关的串口数据确认是否正确,在网关和节点工作正常后,点击“DASHBOARD”按钮,我们就可以看到图 26 的效果。

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

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

➢ STM32CUBEMX 版本 6.3

➢ STM32CUBEMonitor 版本 1.3

➢ IAR 编译器 版本 9.0

➢ X-CUBE-MEMS1 版本 9.0

原文标题:工程师笔记|如何用STM32CubeMonitor图形化显示Lora节点信息

文章出处:【微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 节点
    +关注

    关注

    0

    文章

    208

    浏览量

    24078
  • 服务器
    +关注

    关注

    12

    文章

    8101

    浏览量

    82485
  • stm32cubemx
    +关注

    关注

    5

    文章

    260

    浏览量

    14444
  • LoRa
    +关注

    关注

    346

    文章

    1537

    浏览量

    230317

原文标题:工程师笔记|如何用STM32CubeMonitor图形化显示Lora节点信息

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    LoRa技术科普

    kbps,为了最大化终端设备电池的寿命和整个网络容量,LoRaWAN网络服务器通过一种速率自适应(Adaptive Data Rate , ADR)方案来控制数据传输速率和每一终端
    发表于 11-03 13:08

    LoRa技术关键特性和优势,你知道吗?

    、低成本的通讯系统。LoRa主要在全球免费频段运行(即非授权频段),包括433、868、915 MHz等。LoRa网络主要由终端(内置LoRa模块)、网关(或称基站)、
    发表于 01-06 17:31

    【转帖】什么是LoRa技术

    是一个透明的中继,连接终端设备和服务器。网关与服务器通过标准IP连接,而终端设备采用单跳与一个或多个网关通信,所有的节点均是双向通信。
    发表于 12-12 11:26

    LoRa技术科普

    ,为了最大化终端设备电池的寿命和整个网络容量,LoRaWAN网络服务器通过一种速率自适应(Adaptive Data Rate , ADR)方案来控制数据传输速率和每一终端设备的射频输
    发表于 01-23 06:35

    Lora技术和市场应用揭秘

    LoRa网关是一个透明的中继,连接前端终端设备和后端中央服务器。网关与服务器通过标准IP连接,而终端设备采用单跳与一个或多个网关通信,所有
    发表于 09-18 09:05

    lora无线通信模块技术介绍

    太高的传输速率。 LoRa网络主要由终端、网关、网络服务器及应用服务器组成。在LoRaWAN网络架构中,
    发表于 09-10 16:30

    LoRa终端节点的网络连接方式有哪些?

    什么是LoraLoRa的主要特点? LoRa的系统架构? LoRa终端节点的网络连接方式? LoRa
    发表于 09-27 07:45

    Lora sx1278是怎样利用串口协议去实现数据传输的呢

    Lora sx1278是怎样利用串口协议去实现数据传输的呢?其代码该怎样去实现呢?
    发表于 02-21 06:37

    LoRa低功耗的秘诀是什么?怎么挑选合适的无线传输lora模块?

    。在此网络架构中,LoRa网关是连接终端设备和后端中央服务的透明传输中继。 三、LoRa终端设备
    发表于 12-14 14:48

    基于NuMicro ML51芯片中的SPI和GPIO功能实现LoRa模块的数据传输

    应用:该样本代码基于NuMicro ML51芯片中的SPI和GPIO功能,以实现LoRa模块的数据传输。 BSP 版本: ML51_BSP_Keil_C51_V1.0.0 硬件:NT-ML51PC
    发表于 08-23 06:15

    基于NuMicro ML51芯片中的SPI和GPIO功能实现LoRa模块的数据传输

    应用:该样本代码基于NuMicro ML51芯片中的SPI和GPIO功能,以实现LoRa模块的数据传输。 BSP 版本: ML51_BSP_Keil_C51_V1.0.0 硬件:NT-ML51PC
    发表于 09-01 07:26

    F8L10T LoRa 数据传输终端的技术规范和数据手册免费下载

    F8L10T LoRa 数据传输终端是一种基于 LoRa 扩频技术的无线数据传输终端,利用
    发表于 12-10 08:00 21次下载

    如何测试LoRa节点内置MQTT SERVER的数据传输是否正常

    LoRa节点数据。 本文介绍如何测试我们之前的设置是否成功,LoRa节点与MQTTSERVER之间
    发表于 06-12 17:31 1623次阅读
    如何测试<b class='flag-5'>LoRa</b><b class='flag-5'>节点</b>内置MQTT SERVER的<b class='flag-5'>数据传输</b>是否正常

    lora和wifi的区别 lora怎么传输数据

    LoRa是一种低功耗、长距离的无线通信技术,可以用于物联网设备之间的通信。数据传输的过程包括以下步骤。
    的头像 发表于 06-13 17:52 6262次阅读

    LoRa网关+LoRa节点的特点和优势

    LoRa网关是连接终端设备和LoRaWAN网络的设备,负责收集来自多个LoRa基站的数据并将其传输到云端。
    的头像 发表于 03-19 17:02 646次阅读
    <b class='flag-5'>LoRa</b>网关+<b class='flag-5'>LoRa</b><b class='flag-5'>节点</b>的特点和优势