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

STM32单片机 2022-06-11 08:30


关键词:

STM32CubeMonitor, Lora,节点, 图形化


1、目标

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


2. 实验准备

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



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

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


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”进行网关注册,一般我们选择基础平台为“Packet Forwarder STM”,然后从我们网关设备的串口 log 拷贝 MAC 地址。


➢ 注册设备,请注意这点需要用到后面的一些参数(device EUI, Join EUI, Application key),所以刚开始实验可以先跳过这里。请选择[Loriot Dashboard]>[Application]>[SampleApp]>[Enroll Device]。然后按照步骤注册。


➢ 在注册完成后,[Loriot Dashboard]>[Application]>[SampleApp]>[output]拷贝外部应用访问服务器的连接,后面的 cubemx 需要用到。


下面两个范例分别为参考地为相邻层 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.x\Projects\NUCLEO

WL55JC\Applications\LoRaWAN\LoRaWAN_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


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 对设备的注册。




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”


5.2. 添加需要的控件。


1. 从控件面板中拖拽需要的控件到 flow 中,从而实现需要显示的功能。这里需要用到 2个 TEXT 控件来显示文本信息;3 个 gauge 来显示 sensor 数据;两个 function 控件来,转换 json 格式,一个 comment 来提示输入;一个 websocket 输入和一个 websocket 输出;一个 led 来显示板子 LED 灯状态,一个 switch 来个控制板子的LED 灯的显示。见图 17。


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


➢ 修改“comment”控件,修改名字为“Remind”在文本框内添加一些提醒内容,如“Edit the "Loriot Uplink" node with your LORIOT WebSocket Token;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.


➢ 修改 “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;


➢ 修改“Switch”控件,修改 Label 为“LED ON/OFF”;修改 Name 为 “LED Switch”;选择 group 为“STM32WL_Sensor”;size 设置为 3x1; 添加一个 topic 域为“ MessageTx_LED”,如图 20.


➢ 修改另一个“function”控件,修改名字为“Encode LED Parameter ”,这里需要一个函数来提取 sensor 数据,在“ON message”选项添加函数如图 21,请注意这里用了 Device EUI, 这里需要从节点设备的信息 log 中获取。


➢ 修改“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 “.

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


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

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



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



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

➢ STM32CUBEMX 版本 6.3

➢ STM32CUBEMonitor 版本 1.3

➢ IAR 编译器 版本 9.0

➢ X-CUBE-MEMS1 版本 9.0



                

© THE END



点击“阅读原文”,可下载原文档

STM32单片机 ST MCU (产品+工具+资料+技术+市场+活动)x 您的关注x您的支持 = STM32 单片机蝴蝶乐园
评论
  • 近日,搭载紫光展锐W517芯片平台的INMO GO2由影目科技正式推出。作为全球首款专为商务场景设计的智能翻译眼镜,INMO GO2 以“快、准、稳”三大核心优势,突破传统翻译产品局限,为全球商务人士带来高效、自然、稳定的跨语言交流体验。 INMO GO2内置的W517芯片,是紫光展锐4G旗舰级智能穿戴平台,采用四核处理器,具有高性能、低功耗的优势,内置超微高集成技术,采用先进工艺,计算能力相比同档位竞品提升4倍,强大的性能提供更加多样化的应用场景。【视频见P盘链接】 依托“
    紫光展锐 2024-12-11 11:50 44浏览
  •         霍尔传感器是根据霍尔效应制作的一种磁场传感器。霍尔效应是磁电效应的一种,这一现象是霍尔(A.H.Hall,1855—1938)于1879年在研究金属的导电机构时发现的。后来发现半导体、导电流体等也有这种效应,而半导体的霍尔效应比金属强得多,利用这现象制成的各种霍尔元件,广泛地应用于工业自动化技术、检测技术及信息处理等方面。霍尔效应是研究半导体材料性能的基本方法。通过霍尔效应实验测定的霍尔系数,能够判断半导体材料的导电类型、载流子浓度及载流子
    锦正茂科技 2024-12-10 11:07 64浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-10 16:13 105浏览
  • 时源芯微——RE超标整机定位与解决详细流程一、 初步测量与问题确认使用专业的电磁辐射测量设备,对整机的辐射发射进行精确测量。确认是否存在RE超标问题,并记录超标频段和幅度。二、电缆检查与处理若存在信号电缆:步骤一:拔掉所有信号电缆,仅保留电源线,再次测量整机的辐射发射。若测量合格:判定问题出在信号电缆上,可能是电缆的共模电流导致。逐一连接信号电缆,每次连接后测量,定位具体哪根电缆或接口导致超标。对问题电缆进行处理,如加共模扼流圈、滤波器,或优化电缆布局和屏蔽。重新连接所有电缆,再次测量
    时源芯微 2024-12-11 17:11 70浏览
  • 天问Block和Mixly是两个不同的编程工具,分别在单片机开发和教育编程领域有各自的应用。以下是对它们的详细比较: 基本定义 天问Block:天问Block是一个基于区块链技术的数字身份验证和数据交换平台。它的目标是为用户提供一个安全、去中心化、可信任的数字身份验证和数据交换解决方案。 Mixly:Mixly是一款由北京师范大学教育学部创客教育实验室开发的图形化编程软件,旨在为初学者提供一个易于学习和使用的Arduino编程环境。 主要功能 天问Block:支持STC全系列8位单片机,32位
    丙丁先生 2024-12-11 13:15 45浏览
  • 概述 通过前面的研究学习,已经可以在CycloneVGX器件中成功实现完整的TDC(或者说完整的TDL,即延时线),测试结果也比较满足,解决了超大BIN尺寸以及大量0尺寸BIN的问题,但是还是存在一些之前系列器件还未遇到的问题,这些问题将在本文中进行详细描述介绍。 在五代Cyclone器件内部系统时钟受限的情况下,意味着大量逻辑资源将被浪费在于实现较大长度的TDL上面。是否可以找到方法可以对此前TDL的长度进行优化呢?本文还将探讨这个问题。TDC前段BIN颗粒堵塞问题分析 将延时链在逻辑中实现后
    coyoo 2024-12-10 13:28 101浏览
  • 一、SAE J1939协议概述SAE J1939协议是由美国汽车工程师协会(SAE,Society of Automotive Engineers)定义的一种用于重型车辆和工业设备中的通信协议,主要应用于车辆和设备之间的实时数据交换。J1939基于CAN(Controller Area Network)总线技术,使用29bit的扩展标识符和扩展数据帧,CAN通信速率为250Kbps,用于车载电子控制单元(ECU)之间的通信和控制。小北同学在之前也对J1939协议做过扫盲科普【科普系列】SAE J
    北汇信息 2024-12-11 15:45 74浏览
  • 【萤火工场CEM5826-M11测评】OLED显示雷达数据本文结合之前关于串口打印雷达监测数据的研究,进一步扩展至 OLED 屏幕显示。该项目整体分为两部分: 一、框架显示; 二、数据采集与填充显示。为了减小 MCU 负担,采用 局部刷新 的方案。1. 显示框架所需库函数 Wire.h 、Adafruit_GFX.h 、Adafruit_SSD1306.h . 代码#include #include #include #include "logo_128x64.h"#include "logo_
    无垠的广袤 2024-12-10 14:03 69浏览
  • 智能汽车可替换LED前照灯控制运行的原理涉及多个方面,包括自适应前照灯系统(AFS)的工作原理、传感器的应用、步进电机的控制以及模糊控制策略等。当下时代的智能汽车灯光控制系统通过车载网关控制单元集中控制,表现特殊点的有特斯拉,仅通过前车身控制器,整个系统就包括了灯光旋转开关、车灯变光开关、左LED前照灯总成、右LED前照灯总成、转向柱电子控制单元、CAN数据总线接口、组合仪表控制单元、车载网关控制单元等器件。变光开关、转向开关和辅助操作系统一般连为一体,开关之间通过内部线束和转向柱装置连接为多,
    lauguo2013 2024-12-10 15:53 78浏览
  • 本文介绍Linux系统(Ubuntu/Debian通用)挂载exfat格式U盘的方法,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。修改对应的内核配置文件# 进入sdk目录cdrk3562_linux# 编辑内核配置文件vi./kernel-5.10/arch/arm64/configs/rockchip_linux_defconfig注:不清楚内核使用哪个defc
    Industio_触觉智能 2024-12-10 09:44 90浏览
  •         在有电流流过的导线周围会感生出磁场,再用霍尔器件检测由电流感生的磁场,即可测出产生这个磁场的电流的量值。由此就可以构成霍尔电流、电压传感器。因为霍尔器件的输出电压与加在它上面的磁感应强度以及流过其中的工作电流的乘积成比例,是一个具有乘法器功能的器件,并且可与各种逻辑电路直接接口,还可以直接驱动各种性质的负载。因为霍尔器件的应用原理简单,信号处理方便,器件本身又具有一系列的du特优点,所以在变频器中也发挥了非常重要的作用。  &nb
    锦正茂科技 2024-12-10 12:57 76浏览
  • 全球知名半导体制造商ROHM Co., Ltd.(以下简称“罗姆”)宣布与Taiwan Semiconductor Manufacturing Company Limited(以下简称“台积公司”)就车载氮化镓功率器件的开发和量产事宜建立战略合作伙伴关系。通过该合作关系,双方将致力于将罗姆的氮化镓器件开发技术与台积公司业界先进的GaN-on-Silicon工艺技术优势结合起来,满足市场对高耐压和高频特性优异的功率元器件日益增长的需求。氮化镓功率器件目前主要被用于AC适配器和服务器电源等消费电子和
    电子资讯报 2024-12-10 17:09 84浏览
  • 我的一台很多年前人家不要了的九十年代SONY台式组合音响,接手时只有CD功能不行了,因为不需要,也就没修,只使用收音机、磁带机和外接信号功能就够了。最近五年在外地,就断电闲置,没使用了。今年9月回到家里,就一个劲儿地忙着收拾家当,忙了一个多月,太多事啦!修了电气,清理了闲置不用了的电器和电子,就是一个劲儿地扔扔扔!几十年的“工匠式”收留收藏,只能断舍离,拆解不过来的了。一天,忽然感觉室内有股臭味,用鼻子的嗅觉功能朝着臭味重的方向寻找,觉得应该就是这台组合音响?怎么会呢?这无机物的东西不会腐臭吧?
    自做自受 2024-12-10 16:34 136浏览
  • RK3506 是瑞芯微推出的MPU产品,芯片制程为22nm,定位于轻量级、低成本解决方案。该MPU具有低功耗、外设接口丰富、实时性高的特点,适合用多种工商业场景。本文将基于RK3506的设计特点,为大家分析其应用场景。RK3506核心板主要分为三个型号,各型号间的区别如下图:​图 1  RK3506核心板处理器型号场景1:显示HMIRK3506核心板显示接口支持RGB、MIPI、QSPI输出,且支持2D图形加速,轻松运行QT、LVGL等GUI,最快3S内开
    万象奥科 2024-12-11 15:42 66浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦