当前位置: 首页 > news >正文

如何在米尔-STM32MP257开发板上部署环境监测系统

本文将介绍基于米尔电子MYD-LD25X开发板(米尔基于STM35MP257开发板)的环境监测系统方案测试。

摘自优秀创作者-lugl4313820


一、前言

环境监测是当前很多场景需要的项目,刚好我正在论坛参与的一个项目:Thingy:91X 蜂窝物联网原型开发平台的试用。把两个项目结合起来,实现一个简单的环境监测系统。

二、硬件平台

1、米尔-STM32MP257开发板

2、Thingy:91X 

三、项目规划

1、米尔-STM32MP257开发板,板载了wifi模块,通过wifi连接到互联网。

2、启用MQTT,连接到私有的服务器,并订阅指定的主题。

3、使用QT设计UI界面。

4、接收数据并在UI界面中展示。

四、QT设计

1、QT安装

1.1. 下载在线安装包,现在好像只有一个在线安装包了。网址:

Index of /qtproject/official_releases/online_installers/

1.2. 下载好后,上传给虚拟机,执行安装。安装有几个地方要注意。

其他的按官方的教程就可以安装了。

2、Kit的配置

在官方给出的示例中,与这个版本的不一样,首先设置GCC只需要选择gcc就行了,然后g++自动在下面选择:

最后是QT version的选择要按下图选择。

这样就可以进行交叉编译了,然后如下:

3、创建桌面程序

在文章介绍的基础上,我创建了一个基于QT的桌面程序,其UI界面如下:

4、定义标签值

给相应的需要显示的label根据接收的数据,定义了相应的标签值:

5、引入QT的QtMqtt/QMqttClient 库

#include <QtMqtt/QMqttClient>

【注】在官方发布的固件中,是没有QTMqtt的连接文件的,当运行带的QtMqtt的程序会报错:

error while loading shared libraries: libQt5Mqtt.so.5: cannot open shared object file: No such file or directory

需要从SDK中复制到开发板目录中。

6、检测连接状态

同时为了实现检测与MQTT服务器的连接状态,需要引入一个线程,用于检测是否连接到服务器:

    void run() override
{while (true){ if (m_client){ QString statusText = m_client->state() == QMqttClient::Connected? "连接服务器:成功" : "连接服务器:失败";emit updateStatus(statusText); }msleep(1000); // 每秒检测一次}}

7、在main中编写代码如下:

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow), m_client(new QMqttClient(this)) // 初始化MQTT客户端实例
{ui->setupUi(this);// 设置MQTT客户端参数m_client->setHostname("hostname");m_client->setPort(1883); // 默认MQTT端口m_client->setClientId("client_id");m_client->setUsername("usrename");m_client->setPassword("pwd");// 连接信号槽,处理连接成功事件connect(m_client, &QMqttClient::connected, this, [this](){// 连接成功,修改label的文本ui->mqtt_client_state->setText("连接服务器:成功");// 订阅主题m_client->subscribe(QMqttTopicFilter("devacademy/publish/topic")); });// 连接信号槽,处理消息接收事件connect(m_client, &QMqttClient::messageReceived, this, &MainWindow::onMessageReceived);// 启动MQTT连接m_client->connectToHost();// 创建并启动连接状态检测线程MqttConnectionChecker *checker = new MqttConnectionChecker(m_client, ui->mqtt_client_state, this);connect(checker, &MqttConnectionChecker::updateStatus, this, [this](const QString &status){ ui->mqtt_client_state->setText(status); });checker->start();
}

8、编译订阅回调如下:

void MainWindow::onMessageReceived(const QByteArray &message, const QMqttTopicName &topic)
{Q_UNUSED(topic);// 解析JSON数据QJsonDocument doc = QJsonDocument::fromJson(message); if (!doc.isNull() && doc.isObject()){QJsonObject obj = doc.object();double temp = obj.value("temp").toDouble();double press = obj.value("press").toDouble()/100;double humidity = obj.value("humidity").toDouble();int iaq = obj.value("iaq").toInt();double co2 = obj.value("co2").toDouble();double voc = obj.value("voc").toDouble();//将这些数据更新到UI ui->label_temp->setText(QString::number(temp, 'f', 2));ui->label_press->setText(QString::number(press, 'f', 2));ui->label_humidity->setText(QString::number(humidity, 'f', 2));ui->label_iaq->setText(QString::number(iaq, 'f', 2));ui->label_co2->setText(QString::number(co2, 'f', 2));ui->label_voc->setText(QString::number(voc, 'f', 2));// 在这里可以将解析后的数据更新到UI或其他处理逻辑}else{ qDebug() << "Invalid JSON message received"; }
}

五、实验效果

编译好程序后,上传到开发板,运行后,效果如下:

六、总结

米尔-STM32MP257开发板,通过QT来设计UI界面,通过mqtt来订阅指定的主题,实现环境监测。在物联网方面大有作为!

相关文章:

如何在米尔-STM32MP257开发板上部署环境监测系统

本文将介绍基于米尔电子MYD-LD25X开发板&#xff08;米尔基于STM35MP257开发板&#xff09;的环境监测系统方案测试。 摘自优秀创作者-lugl4313820 一、前言 环境监测是当前很多场景需要的项目&#xff0c;刚好我正在论坛参与的一个项目&#xff1a;Thingy:91X 蜂窝物联网原型…...

解决jupyter notebook修改路径下没有c.NotebookApp.notebook_dir【建议收藏】

文章目录 一、检查并解决问题二、重新设置默认路径创作不易&#xff0c;感谢未来首富们的支持与关注&#xff01; 最近在用jupyter notebook编写代码时&#xff0c;更新了一下Scikit-learn的版本&#xff0c;然后重新打开jupyter notebook的时候&#xff0c;我傻眼了&#xff0…...

lottie深入玩法

A、json文件和图片资源分开 delete 是json资源名字 /res/lottie/delete_anim_images是图片资源文件夹路径 JSON 中引用的图片名&#xff0c;必须与实际图片文件名一致 B、json文件和图片资源分开&#xff0c;并且图片加载不固定 比如我有7张图片&#xff0c;分别命名1~7&…...

o3和o4-mini的升级有哪些亮点?

ChatGPT是基于OpenAI GPT系列的高性能对话生成AI&#xff0c;经过多代迭代不断提升自然语言理解和生成能力。 在过去的一年中&#xff0c;OpenAI先后发布了GPT-4、GPT‑4.1及多种mini版本&#xff0c;为不同使用场景提供灵活选择。​ 随着用户需求向更高效、更精准的推理和视觉…...

Spring Boot 3 + SpringDoc:打造接口文档

1、背景公司 新项目使用SpringBoot3.0以上构建&#xff0c;其中需要对外输出接口文档。接口文档一方面给到前端调试&#xff0c;另一方面给到测试使用。 2、SpringDoc 是什么&#xff1f; SpringDoc 是一个基于 Spring Boot 项目的库&#xff0c;能够自动根据项目中的配置、…...

ApiHug 前端解决方案 - M1 内侧

背景 ApiHug UI 解决方案 - ApiHug前后端语义化设计&#xff0c;节约80%以上时间https://apihug.github.io/zhCN-docs/ui 现代前端框架日趋SPA(Single Page Application)化&#xff0c;给前后协同都带来了挑战&#xff0c;ApiHug试图减少多人在前后协同带来的理解难度&#x…...

vue2.6.12 安装babel 以使用 可选链 ?. 和空值合并 ??

package.json文件 {"name": "ruoyi","version": "3.6.4","description": "若依管理系统","author": "若依","license": "MIT","scripts": {"dev":…...

AI数字人如何深度赋能政务场景?魔珐科技政务应用全景解读

在数字中国建设的进程中&#xff0c;政务传播与公共服务正面临效率提升、质量优化与体验改善的多重需求。以魔珐科技所打造的AI数字人为代表&#xff0c;正在逐步融入政务体系&#xff0c;成为推动工作提效和服务创新的重要工具。从国家安全宣讲到政策解读&#xff0c;从反诈防…...

SpringAI+DeepSeek大模型应用开发——5 ChatPDF

ChatPDF 知识库 RAG检索增强 由于训练大模型非常耗时&#xff0c;再加上训练语料本身比较滞后&#xff0c;所以大模型存在知识限制问题&#xff1a; 知识数据比较落后&#xff0c;往往是几个月之前的&#xff1b;不包含太过专业领域或者企业私有的数据&#xff1b; 为了解决…...

音视频之H.265/HEVC变换编码

H.265/HEVC系列文章&#xff1a; 1、音视频之H.265/HEVC编码框架及编码视频格式 2、音视频之H.265码流分析及解析 3、音视频之H.265/HEVC预测编码 4、音视频之H.265/HEVC变换编码 目录 一、离散余弦变换&#xff1a; DCT原理及特点&#xff1a; 一维DCT解析例子&#xff1…...

网工_FTP协议

2025.04.18&#xff1a;网工老姜&小猿网学习笔记 第27节 FTP协议 7.1 FTP概述7.2 FTP工作原理7.2.1 FTP主动模式7.2.2 FTP被动模式 7.3 FTP客户端常用命令7.4 本章小结 7.1 FTP概述 文件传输协议file transfer protocol 常见用途是从FTP服务器批量下载文件&#xff0c;另一…...

Vue2+Vue3 130~180集学习笔记

Vue2Vue3 130~180集&#xff08;Vue3&#xff09;学习笔记 一、create-vue搭建vue3项目 create-vue是vue官方新的脚手架工具&#xff0c;底层切换到了vite 步骤&#xff1a; 查看环境条件 node -v版本需要在16.0及以上创建一个vue应用 npm init vuelatest 这一指令会安装并执…...

前端融合图片mask

之前实现了tif文件的融合&#xff0c;现在实现图片的融合&#xff0c;效果如下 第一张是融合右边两张图的结果 我的思路是&#xff1a; 初始使用canvas加载原图&#xff0c;此时未显示标注点击显示标注后&#xff0c;将原图和mask图传给workerworker接受数据后&#xff0c;转…...

什么是单元测试的“覆盖率”

1. 先搞清楚“覆盖率”是啥&#xff1f;​​ 打个比方&#xff0c;你写完作业&#xff08;代码&#xff09;&#xff0c;老师&#xff08;测试&#xff09;要检查是不是每道题都做对了。覆盖率就是说老师检查了多少题。比如&#xff1a; ​行覆盖率​&#xff1a;老师看了你作…...

SpringAI入门:对话机器人

SpringAI入门&#xff1a;对话机器人 1.引入依赖 创建一个新的SpringBoot工程&#xff0c;勾选Web、MySQL驱动、Ollama&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xm…...

[Java · 初窥门径] Java 语言初识

&#x1f31f; 想系统化学习 Java 编程&#xff1f;看看这个&#xff1a;[编程基础] Java 学习手册 0x01&#xff1a;Java 编程语言简介 Java 是一种高级计算机编程语言&#xff0c;它是由 Sun Microsystems 公司&#xff08;已被 Oracle 公司收购&#xff09;于 1995 年 5 …...

大语言模型智能体:安全挑战与应对之道

在当今科技飞速发展的时代&#xff0c;大语言模型驱动的智能体正逐渐融入我们生活和工作的方方面面&#xff0c;给我们带来了诸多便利。但与此同时&#xff0c;它们的安全问题也引起了广泛的关注。今天&#xff0c;咱们就一起来深入了解一下可信大语言模型智能体所面临的安全挑…...

IHC肿瘤标志物 | 常见乳腺癌诊断——助力守护生命之花

乳腺癌作为一种常见的恶性肿瘤&#xff0c;严重威胁着女性健康。然而&#xff0c;随着医学技术的不断发展&#xff0c;我们有了更为精准和有效的检测方法&#xff0c;为及早发现和治疗乳腺癌提供了强有力的支持。 在这篇文章中&#xff0c;我们将深入了解乳腺癌的IHC检测技术&a…...

利用deepseek+Mermaid画流程图

你是一个产品经理&#xff0c;请绘制一个流程图&#xff0c;要求生成符合Mermaid语法的代码&#xff0c;要求如下&#xff1a; 用户下载文件、上传文件、删除文件的流程过程符合安全规范细节具体到每一步要做什么 graph LRclassDef startend fill:#F5EBFF,stroke:#BE8FED,str…...

Vue3 实战:打造多功能旅游攻略选项卡页面

在旅游类应用开发中&#xff0c;为用户提供全面、直观的信息展示界面至关重要。本文将分享如何基于 Vue3 Axios 技术栈&#xff0c;实现一个包含攻略、游记、问答三大板块的旅游攻略选项卡页面&#xff0c;从样式设计到交互逻辑&#xff0c;带你深入了解整个开发过程。 项目背…...

如何提高单元测试的覆盖率

一、定位未覆盖的代码 ​利用 IDEA 的覆盖率工具​&#xff1a; 右键测试类 → ​Run with Coverage&#xff0c;或使用 AltShiftF10&#xff08;Windows&#xff09;打开运行菜单选择覆盖率。​查看高亮标记​&#xff1a; ​绿色​&#xff1a;已覆盖代码行。​红色​&#x…...

水位传感器详解(STM32)

目录 一、介绍 二、传感器原理 1.原理图 2.引脚描述 三、程序设计 main.c文件 water.h文件 water.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 Water Sensor水位传感器是一款简单易用、性价比较高的水位/水滴识别检测传感器&#xff0c;其是通过具有一系列…...

linux服务器命令行获取nvidia显卡SN的方法

机房需要变更机器的GPU显卡配置&#xff0c;入库、出库几块显卡&#xff0c;库管让我去获取显卡序列号。 去现场拆机器的事情毕竟很麻烦&#xff0c;而且也没干过拆装服务器&#xff0c;即使拆下来显卡也不一定找到SN。 于是乎搜索&#xff1a;命令行怎么获取linux服务器上的…...

大模型微服务架构模块实现方案,基于LLaMA Factory和Nebius Cloud实现模型精调的标准流程及代码

以下是基于LLaMA Factory和Nebius Cloud实现模型精调的标准流程及代码示例&#xff0c;结合最新技术动态和行业实践整理&#xff1a; 一、LLaMA Factory本地部署方案 1. 环境配置 # 创建Python环境并安装依赖 conda create -n llama_factory python3.10 conda activate llam…...

每天学一个 Linux 命令(20):find

​​可访问网站查看,视觉品味拉满: http://www.616vip.cn/20/index.html find 是 Linux 系统中最强大的文件搜索工具之一,支持按名称、类型、时间、大小、权限等多种条件查找文件,并支持对搜索结果执行操作(如删除、复制、执行命令等)。掌握 find 可大幅提升文件管理效率…...

Kubernetes Pod 调度策略:从基础到进阶

文章目录 环境Kubernetes 部署Kubernetes Pod 调度策略Kubernetes Pod 调度策略对照表调度流程经历阶段案例展示生成yaml文件默认调度节点选择器为节点添加标签编写 Deployment 配置文件应用资源并查看调度结果 Node Affinity&#xff08;节点亲和性&#xff09;为节点添加标签…...

4.18学习总结

完成一道算法题 学习了序列化 敲代码卡bug了...

用于数学定理和逻辑推理的符号系统

当前用于数学定理和逻辑推理的前沿符号系统主要基于依赖类型论&#xff08;Dependent Type Theory&#xff09;&#xff0c;其中Lean 4和**Metamath Zero (MM0)**是最具代表性的新兴系统。以下从技术特性、使用方法和应用实例三个维度展开说明&#xff1a; 一、前沿符号系统解…...

HTTP:九.WEB机器人

概念 Web机器人是能够在无需人类干预的情况下自动进行一系列Web事务处理的软件程序。人们根据这些机器人探查web站点的方式,形象的给它们取了一个饱含特色的名字,比如“爬虫”、“蜘蛛”、“蠕虫”以及“机器人”等!爬虫概述 网络爬虫(英语:web crawler),也叫网络蜘蛛(…...

代码学习总结(五)

代码学习总结(五) 这个系列的博客是记录下自己学习代码的历程,有来自平台上的,有来自笔试题回忆的,主要基于 C++ 语言,包括题目内容,代码实现,思路,并会注明题目难度,保证代码运行结果 1 小红的好数 简单 非退化三角形 快速匹配 小红定义一个数对 { x , y } \{x…...

在 Vue 3 项目中引入 js-cookie 库

1. 安装 js-cookie 你可以通过 npm 或者 yarn 来安装 js-cookie&#xff1a; npm install js-cookie # 或者 yarn add js-cookie2. 在组件里引入并使用 js-cookie 以下给出两种使用方式&#xff1a; 全局引入 在 main.js 中全局引入 js-cookie&#xff0c;这样在所有组件里…...

HarmonyOs学习 环境配置后 实验1:创建项目Hello World

HarmonyOS开发入门&#xff1a;环境配置与Hello World实验 实验目标 掌握HarmonyOS开发环境配置&#xff0c;创建首个HarmonyOS应用并实现"Hello World"界面展示 实验准备 已安装DevEco Studio开发环境已配置HarmonyOS开发依赖项熟悉基本TypeScript/ArkTS语法&am…...

Spark on K8s 在 vivo 大数据平台的混部实战与优化

一、Spark on K8s 简介 (一)定义与架构 Spark on K8s 是一种将 Spark 运行在 Kubernetes(K8s)集群上的架构,由 K8s 直接创建 Driver 和 Executor 的 Pod 来运行 Spark 作业。其架构如下。 Driver Pod:相当于 Spark 集群中的 Driver,负责作业的调度和管理,它会根据作业…...

《软件设计师》复习笔记(13)——结构化开发方法

目录 1. 结构化开发方法 1.1 系统分析过程 1.2 系统设计基本原理 &#xff08;1&#xff09;内聚性&#xff08;模块内部关联程度&#xff09; &#xff08;2&#xff09;耦合性&#xff08;模块间依赖程度&#xff09; 真题示例&#xff1a; 1.3 系统总体结构设计&…...

Android创建测试配置和生产配置

Android测试与生产环境配置指南 在Android开发中&#xff0c;创建不同的构建配置来适应测试和生产环境是至关重要的。这样的配置能让我们在不同的开发阶段有效管理代码、资源和环境变量。本文将详细介绍如何在Android中创建和管理测试配置以及生产配置的整个过程。 环境准备 …...

DBeaver连接hive

DBeaver是一个非常好用的数据库管理工具&#xff0c;支持多种不同的数据库类型。 dbeaver 要连接hive时&#xff0c;数据库驱动是无法下载&#xff0c;但在hive 的安装配置包中&#xff0c;有一个目录&#xff1a;jdbc里面有一个专门提供外部程序连接hive的jar。将这个jar下载…...

数据结构初阶:二叉树(二)

本篇博客主要讲解二叉树---堆的相关知识。 1.实现顺序结构二叉树 一般堆使用顺序结构的数组来存储数据&#xff0c;堆是一种特殊的二叉树&#xff0c;具有二叉树的特性的同时&#xff0c;还具备其他的特性。 1.1 堆的概念和结构 堆具有以下性质&#xff1a; 堆中某个结点的值…...

React 列表渲染基础示例

React 中最常见的一个需求就是「把一组数据渲染成一组 DOM 元素」&#xff0c;比如一个列表。下面是我写的一个最小示例&#xff0c;目的是搞清楚它到底是怎么工作的。 示例代码 // 定义一个静态数组&#xff0c;模拟后续要渲染的数据源 // 每个对象代表一个前端框架&#xf…...

android PackageName ClassName

目录 系统应用: 设置 蓝牙 时钟 计算机 录音机 图库 视频 文件管理 FM 日历 谷歌浏览器 谷歌商店 热门商店 国外应用: amazon spotify deezer pandora audible applemusic omnia mxtech youtubemusic facebook familylink tidal tiktok kindle 系统应用: 设置 …...

万物对接大模型:【爆火】MCP原理与使用指南

###原文链接 OpenAI、谷歌、微软、阿里云、腾讯云、百度等国内外各大厂商都陆续宣布支持MCP服务。MCP是什么&#xff0c;为什么能获得高度的关注&#xff1f; MCP(Model Context Protocol,模型上下文协议)是由Anthropic公司(核心产品是Claude大模型)推出的一种开源协议&#xf…...

SAP系统中MD01与MD02区别

知识点普及&#xff0d;MD01与MD02区别 1、从日常业务中&#xff0c;我们都容易知道MD01是运行全部物料&#xff0c;MD02是运行单个物料 2、在做配置测试中&#xff0c;也出现过MD02可以跑出物料&#xff0c;但是MD01跑不出的情况。 3、MD01与MD02的差异: 3.1、只要在物料主数…...

python——字符串使用

目录 1、字符串表示 2、转义字符 &#xff08;1&#xff09;将一些具有特殊含义的字符&#xff0c;标识成普通的字符&#xff08;\&#xff09; &#xff08;2&#xff09;特殊的控制符 &#xff08;3&#xff09;&#xff08;\&#xff09;还可以表示python中续行符 3、…...

嵌入式ARM RISCV toolchain工具 梳理arm-none-eabi-gcc

嵌入式TOOLchain工具 梳理 简介 本文总结和梳理一下一些toolchain的规则和原理&#xff0c;方便后续跨平台的时候&#xff0c;给大家使用toolchain做一个参考。 解释如何理解arm-none-eabi-gcc等含义&#xff0c;以及如何一看就知道该用什么编译器。 当然如果有哪里写的不是…...

团体程序设计天梯赛PTA-SHU冲刺赛4. L22-L32

这是4.18 SHU备赛天梯赛的最后一场冲刺赛 10.病毒溯源 1.本题PTA中拓栈后会MTL&#xff0c;不拓栈会报非零返回 所以本题最好用栈模拟递归过程 2.源头得是入度为0的&#xff0c;也就是没有节点指向它 所以得设置inn是否有指向该节点 3.这题用dfs&#xff08;用bfs的话不同…...

【数据结构与算法】——插入排序

概要 本文将介绍插入排序方法——直接插入、希尔排序 想了解数据结构其他内容&#xff0c;本人主页 恋风诗 获取源码&#xff0c;gitte仓库&#xff1a;mozhengy 正文 1.排序的分类 目前将主要介绍下面几种排序&#xff1a; 后续学习更多内容后会及时更新 2、插入排序 2…...

手撕STL——vector

目录 引言 1&#xff0c;了解 STL 中的 vector 2&#xff0c;先来一个简易版跑起来 2_1&#xff0c;构造函数 2_2&#xff0c;扩容reserve&#xff08;&#xff09; 2_3&#xff0c;push_back&#xff08;&#xff09; 2_4&#xff0c;pop_back&#xff08;&#xff09; …...

新书速览|DeepSeek移动端AI应用开发:基于Android与iOS

《DeepSeek移动端AI应用开发&#xff1a;基于Android与iOS》 1 本书内容 《DeepSeek移动端AI应用开发:基于Android与iOS》深入剖析了DeepSeek平台的架构原理、API调用及开发实践等核心内容&#xff0c;助力读者在Android与iOS移动端高效集成DeepSeek API&#xff0c;打造出契…...

详解STM32时基单元中参数 TIM_ClockDivision 的含义

在 STM32 定时器时基单元配置中&#xff0c;TIM_TimeBaseInitStruct->TIM_ClockDivision 用于设置 定时器时钟的分频系数&#xff0c;主要影响 输入捕获滤波器 和 输出比较同步信号 的时钟分割。以下是其核心作用、参数含义及应用场景的详细解析&#xff1a; 一、核心作用&…...

黑马V11版 最新Java高级软件工程师课程-JavaEE精英进阶课

课程大小&#xff1a;60.2G 课程下载&#xff1a;https://download.csdn.net/download/m0_66047725/90615581 更多资源下载&#xff1a;关注我 阶段一 中台战略与组件化开发专题课程 阶段二 【物流行业】品达物流TMS 阶段三 智牛股 阶段四 千亿级电商秒杀解决方案专题 …...

【Win】 cmd 执行curl命令时,输出 ‘命令管道位置 1 的 cmdlet Invoke-WebRequest 请为以下参数提供值: Uri: ’ ?

1.原因&#xff1a; 有一个名为 Invoke-WebRequest 的 CmdLet&#xff0c;其别名为 curl。因此&#xff0c;当您执行此命令时&#xff0c;它会尝试使用 Invoke-WebRequest&#xff0c;而不是使用 curl。 2.解决办法 在cmd中输入如下命令删除这个curl别名&#xff1a; Remov…...