基于STM32F030设计的多点温度采集系统(BC26+OneNet)

news2024/11/15 1:37:35

一、项目背景

随着物联网技术的迅猛发展,越来越多的智能设备应运而生,而温度采集系统是其中重要的一类。在现代工业和家庭生活中,温度对于生产、居住和储存等过程的控制有着非常重要的作用。因此,准确地采集环境温度数据并进行处理和展示,对于人们的生产和生活都具有重要意义。

基于此背景,设计了基于STM32F030的多点无线温度采集系统,该系统可以通过多个独立的采集设备,同时采集多个不同位置的温度数据,并分别通过MQTT协议上传到OneNet平台,方便用户远程管理和监控温度变化。同时,该系统还配备了OLED显示屏,可在本地实时显示温度信息,方便用户及时了解环境温度变化趋势。

整个系统采用了STM32F030作为主控芯片,以保证系统性能稳定可靠;温度采集模块采用DHT20,具有精度高、响应快等特点;NBIoT 通信模块采用了移远BC260Y-CN,可以实现快速、安全地连接云平台;OLED显示屏采用0.96寸SPI接口的显示屏,驱动芯片是SSD1306。整个系统设计紧凑、可靠,可以广泛应用于各种场合,为用户提供精准的环境温度数据和便捷的数据处理及展示功能。

image-20230525182702285

二、硬件选型

资料地址: https://z7po9bxpe4.k.topthink.com/@nb-iot/peitaoziyuanxiazai.html

image-20230525154532383

硬件选型是基于需求和要求选择合适的硬件组件来实现系统设计的关键步骤。

在本项目中,选择了以下硬件组件:

  1. 主控芯片:STM32F030 该芯片具有较高的性价比,支持高速时钟频率,集成了多种外设接口和功能模块,同时也易于编程和开发。
  2. 温度采集模块:DHT20 DHT20温度传感器具有高精度、响应快等优点,可以快速准确地采集环境温度数据,并与主控芯片进行通信。
  3. NBIoT通信模块:移远BC260Y-CN 移远BC260Y-CN通信模块具有低功耗、稳定性好、通信速度快等优势,可以快速可靠地连接OneNet平台,实现数据上传和下载。
  4. 显示屏:0.96寸SPI接口OLED显示屏,驱动芯片是SSD1306。 该显示屏具有低功耗、显示清晰等特点,可以快速显示温度数据,方便用户随时了解温度变化趋势。

本项目中的硬件选型具有性价比高、功能强大、质量可靠、采集精度高等优点,可以满足多种温度采集系统的设计需求,并提供了便捷易用的数据处理和展示功能。

三、NB-IoT 技术简介

【1】移动通信技术

平常所讲的2G、3G、4G中的G其实是Generation的意思,例如2G是指第二代移动通信技术。每一代移动通信技术都有对应的网络制式:

中国移动

  • 2G -> GSM
  • 3G -> TD-SCDMA
  • 4G -> TD-LTE

中国联通

  • 2G -> GSM
  • 3G -> WCDMA
  • 4G -> TD-LTE、FDD-LTE

中国电信:

  • 2G -> CDMA1X
  • 3G -> CDMA2000
  • 4G -> TD-LTE、FDD-LTE

其中,LTE的全称为Long Term Evolution,即长期演进。

【2】WPAN和LPWA简介

WPAN
WPAN的全称是Low-rate wireless personal area network(低速无线个人区域网络),典型的代表有ZigBee、蓝牙等,其特点是低复杂度、低功耗、低速率、低成本。

LPWA
LPWA的全称是Low Power Wide Area(低速无线广域网),典型的代表有NB-IoT、eMTC、Lora和SigFox等,具有广覆盖、低功耗、低成本和大连接的特点。

【3】NB-IoT技术

实际上NB-IoT是基于LTE制式的一种移动通信技术,也就是说,它是4G技术的一种。下图是LTE制式通信技术的各个分支对比:
img

LTE Cat-NB即NB-IoT,是基于LTE网络制式而设计的一种具有低功耗、低速率、上行通信时延低和下行通信时延较高(相对)特点的通信技术,满足对低功耗要求高但是对通信速率要求低的应用场景。上图中,还可以看到LTE Cat-M,它支持的通信速率比NB-IoT更高,可以应用于对通信速率要求更高的应用场景。注意,此处说的通信速率是指通信的带宽,不是说通信的时延。

【4】NB-IoT技术相关的技术供应商

NB-IoT技术相关的技术供应商有:芯片解决方案商、模块生产厂商、运营商。
(1)主要的芯片方案商有:高通、华为海思、Intel、RDA、简约纳、MTK、TI、SEQUANS、MARVELL、 NODRIC和中兴微等。
(2)主要的中国模块生产厂商有:移远、芯讯通、中兴、联想和中国移动等。
(3)运营商:中国移动、中国联通和中国电信。

【5】 应用场景

由于NB-IoT技术具有低功耗、低速率、上行通信时延低和下行通信时延较高(相对)的特点,所以非常适用于数据采集上报类的应用场景,例如

  • 环境温湿度、光照度、气体成分等信息的采集上报
  • 火灾、煤气泄漏、水浸等环境异常状态监控与报警场景
  • 外部设备状态信息采集与上报场景,例如远程抄表

NB-IoT的下行通信时延较高,约15秒左右(读者需要以实际测试为准),所以如果把NB-IoT用于下发指令或数据给终端设备,需要考虑这个时延问题。如需对下行通信速率有更快速的要求,可以采用eMTC或CATn等技术。

四、OneNet服务器设计

【1】onenet平台介绍

OneNet即为“中国移动互联网应用服务平台”,是中国移动推出的物联网云平台服务。OneNet服务器是一个基于云计算技术的物联网数据平台,旨在为用户提供稳定、安全、高效的数据云端存储、处理、分析和展示等服务。

OneNet服务器具有以下主要特点:

  1. 具有高可靠性和稳定性,能够保证用户的数据安全和服务稳定;
  2. 支持数据实时采集和云端存储,并提供丰富的数据访问和查询接口;
  3. 支持多种通信协议和数据格式,方便用户接入和使用;
  4. 提供数据实时分析和处理功能,可以帮助用户快速分析和处理大量数据;
  5. 提供了可视化的数据展示界面和丰富的API接口,方便用户自由定制和开发。

在本项目中,通过使用MQTT协议将温度数据上传到OneNet服务器上,并使用其提供的数据分析和展示功能,可以轻松地实现环境温度的实时监测和管理,提高生产和生活效率,方便用户的使用和管理。

【2】创建产品

官网链接:https://open.iot.10086.cn/console/summary

image-20230525155636800

image-20230525160021899

image-20230525160255895

这里的数据协议可以选择数据流JSON两种形式。我这里选择数据流方式。

image-20230525160320220

image-20230525161114883

产品ID:   OIcHdSz8R7

access_key: 8wXH2z97abNh9a37ndNB6ZWrR+eXVYVZnbvH3x3t29s=

【3】创建数据流模板

image-20230525160336581

image-20230525160402315

image-20230525160508372

image-20230525160519128

【4】创建设备1

image-20230525160545434

image-20230525160606117

image-20230525160618985

设备详情:

image-20230525160632618

设备ID:  2103765871
设备密钥:   NU14N01INmlhTE9sOUpGUkNOREwzNjBJbVJ1RzFRdkw= 

【5】创建设备2

image-20230525160759091

image-20230525160818349

image-20230525160837429

设备ID:   2103766001
设备密匙:YWF5NTNZMFpZeWFEWnVMemVWYmdURkZuaEJhUnBRZGQ=

【6】创建设备3

image-20230525160922992

image-20230525160945725

设备ID:  2103766258
设备密匙:  anZRUmFYaFlYYWRBbHVLNEdQdnlMTEtweGhPTUFFYTA=

五、MQTT登录参数生成

【1】生成MQTT登录参数

MQTT服务器地址信息: https://open.iot.10086.cn/doc/v5/develop/detail/248

image-20230525161652042

密匙生成工具:https://open.iot.10086.cn/doc/v5/develop/detail/242

image-20230525161809279

工具软件里需要填写的参数如下:

【1】res选项参数的格式: products/{产品ID}/devices/{设备名称}

【2】et是设置token过期时间:算出1970-1-1到你想要设置的到期时间,单位是秒,填入即可。

比如: 超时时间设置为2022-4-7,那么,这里填入的秒就是:1970-1-1到2022-4-7之间的秒单位时间。

【3】key的参数格式: 就是设备创建之后,在设备详情页的key

【2】生成设备1的密匙

res:  products/OIcHdSz8R7/devices/dev1
et :  56804459115
key:  NU14N01INmlhTE9sOUpGUkNOREwzNjBJbVJ1RzFRdkw=

得到的结果:

version=2018-10-31&res=products%2FOIcHdSz8R7%2Fdevices%2Fdev1&et=56804459115&method=md5&sign=LGkD04FA%2FFg78rSuVFDPsg%3D%3D

image-20230525162210933

【3】生成设备2的密匙

res:  products/OIcHdSz8R7/devices/dev2
et :  56804459115
key:  YWF5NTNZMFpZeWFEWnVMemVWYmdURkZuaEJhUnBRZGQ=

得到的结果:

version=2018-10-31&res=products%2FOIcHdSz8R7%2Fdevices%2Fdev2&et=56804459115&method=md5&sign=haV81ypEWLefpOCrrSWHSg%3D%3D

image-20230525162333238

【4】生成设备3的密匙

res:  products/OIcHdSz8R7/devices/dev3
et :  56804459115
key:  anZRUmFYaFlYYWRBbHVLNEdQdnlMTEtweGhPTUFFYTA=

得到的结果:

version=2018-10-31&res=products%2FOIcHdSz8R7%2Fdevices%2Fdev3&et=56804459115&method=md5&sign=49hqM5724RC40sgSuzqCnA%3D%3D

image-20230525162427859

六、设备模拟登录

【1】设备1登录

当前设备的主题订阅与主题发布总结:

IP地址: 183.230.40.96
端口号: 1883
clientId: dev1
username: OIcHdSz8R7
password: version=2018-10-31&res=products%2FOIcHdSz8R7%2Fdevices%2Fdev1&et=56804459115&method=md5&sign=LGkD04FA%2FFg78rSuVFDPsg%3D%3D


订阅主题:  $sys/OIcHdSz8R7/dev1/#
发布主题:  $sys/OIcHdSz8R7/dev1/dp/post/json
发布消息:  
{"id":123,"dp":{"temp":[{"v":28.3}]}}

使用MQTT客户端模拟设备登录测试:

依次填入参数,进行登录、订阅主题、发布主题。

image-20230525162858995

查看OneNet云端:

image-20230525162952907

查看上传的数据:

image-20230525163439040

上传多个数据后,看温度的变化曲线:

image-20230525163549083

【2】设备2登录

当前设备的主题订阅与主题发布总结:

IP地址: 183.230.40.96
端口号: 1883
clientId: dev2
username: OIcHdSz8R7
password: version=2018-10-31&res=products%2FOIcHdSz8R7%2Fdevices%2Fdev2&et=56804459115&method=md5&sign=haV81ypEWLefpOCrrSWHSg%3D%3D


订阅主题:  $sys/OIcHdSz8R7/dev2/#
发布主题:  $sys/OIcHdSz8R7/dev2/dp/post/json
发布消息:  
{"id":123,"dp":{"temp":[{"v":38.3}]}}

使用MQTT客户端模拟设备登录测试:

依次填入参数,进行登录、订阅主题、发布主题。

image-20230525163129727

查看OneNet云端:

image-20230525163158653

【3】设备3登录

当前设备的主题订阅与主题发布总结:

IP地址: 183.230.40.96
端口号: 1883
clientId: dev3
username: OIcHdSz8R7
password: version=2018-10-31&res=products%2FOIcHdSz8R7%2Fdevices%2Fdev3&et=56804459115&method=md5&sign=49hqM5724RC40sgSuzqCnA%3D%3D


订阅主题:  $sys/OIcHdSz8R7/dev3/#
发布主题:  $sys/OIcHdSz8R7/dev3/dp/post/json
发布消息:  
{"id":123,"dp":{"temp":[{"v":48.3}]}}

使用MQTT客户端模拟设备登录测试:

依次填入参数,进行登录、订阅主题、发布主题。

image-20230525163302555

查看OneNet云端:

image-20230525163324736

七、可视化页面设计

地址:https://open.iot.10086.cn/studio/view/project

【1】创建项目

image-20230525163951831

image-20230525164057678

image-20230525164105854

image-20230525164121393

image-20230525164131659

修改为手机版本:

image-20230525164227978

【2】添加数据源

image-20230525164435675

根据参数填入,管理设备的数据流。

image-20230525164711183

填写之后点击创建按钮,就可以添加数据源。

然后按照流程,添加剩下3个设备的数据源进来。

image-20230525164935854

上面列表里参数的来源:

(1)userId

image-20230525164745604

(2)accessKey

image-20230525164830045

【3】绑定数据源

先大致设计好界面。然后给控件绑定数据源。

image-20230525165753455

image-20230525165811310

【4】显示数据上报时间

为了了解数据更新情况,可以添加一个文本控件显示最新的数据上报时间。

image-20230525170314888

return [{
    "value": "数据上报时间:" + data[0].update_at
}]

【5】添加报警阀值判断

image-20230525171128563

设置过滤器:

if (data[0].value > 30) {
    return [{ "value": "温度异常" }]
}
else {
    return [{ "value": "设备1(正常)" }]
}

【6】发布项目

image-20230525171359325

image-20230525171412015

image-20230525171423752

链接:https://open.iot.10086.cn/view/main/index.html#/share2d?id=646f1f2078cb250035479cb5

八、STM32硬件端设计

填写设备的信息:

image-20230525172628882

上传温度数据。

image-20230525172721075

九、温度折线图显示

为了在onenet页面显示温度的变化曲线。需要再新增加3个数据源。

单独建立一个数据源,设置采集10次数据。也就是这数据源会保存最新的10个温度数据,这样在曲线里可以显示最近10个温度的变化曲线。

image-20230525175030137

添加的这3个数据源,是接下来给折线图控件使用。

image-20230525175121073

添加一个折线图控件。

image-20230525181537999

折线图控件的系列表示界面要显示几根曲线。

image-20230525181505139

image-20230525181803365

编写过滤器提取数据:

// 最终数据应该是一个数组
var result = [];
var dataPoint = null;
//循环处理选中的数据源的数据点
for (var i = 0; i < data.length; i++) {
    // 从数据点中取出需要的数据,通过配置键值对使得数据格式符合要求
    dataPoint = {
        y1: data[i].value,
    };
    // 将这个数据点添加进结果中
    result.push(dataPoint);
}
return result;

剩下的折线图控件也是一样的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1808502.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络安全领域六大顶级会议介绍:含会议介绍、会议地址及会议时间和截稿日期

引言&#xff1a; 从事网络安全工作&#xff0c;以下六个顶会必须要知道&#xff0c;很多安全的前沿技术都会在如下会议中产生与公开&#xff0c;如下会议发表论文大部分可以公开下载。这些会议不仅是学术研究人员展示最新研究成果的平台&#xff0c;也是行业专家进行面对面交流…

vscode copilot git commit 生成效果太差,用其他模型替换

问题 众所周知&#xff0c;copilot git commit 就像在随机生成 git commit 这种较为复杂的内容还是交给大模型做比较合适 方法 刚好&#xff0c;gitlens 最近开发了 AI commit的功能&#xff0c;其提供配置url api可以实现自定义模型 gitlens 只有3种模型可用&#xff1a…

SpringCloud-面试篇(二十四)

&#xff08;1&#xff09;Nacos如何支撑数十万服务注册的压力 小型企业来讲nacos压力没有那么大&#xff0c;但是想阿里&#xff0c;服务的数量可能会达到数万&#xff0c;那麽多的服务。当服务原来越多时&#xff0c;除了服务注册以外&#xff0c;还有服务的定时更新&#x…

【数据分享】《中国投资领域统计年鉴》1950-2022(中国固定资产投资统计年鉴)

​最近老有同学过来询问《中国投资领域统计年鉴》、《中国固定资产投资统计年鉴》这两本年年鉴的关系以及怎么获取这两本本年鉴。今天就在这里给大家分享一下这两本年鉴的具体情况。 《中国投资领域统计年鉴》是一部全面反映中国固定资产投资情况的权威资料。本书收集了全国、…

张霖浩在娱乐“名利场”玩出“修罗场”的贵族范儿

众所周知娱乐圈是个大型“名利场”&#xff01;近日&#xff0c;2025年北京广播电视台春晚发布会现场&#xff0c;众大咖汇聚&#xff0c;妆容、装扮、穿搭&#xff0c;更是争奇斗艳、八仙过海各显神通。同时&#xff0c;也揭露出娱乐圈当下穿搭界”修罗场”的残酷现实。在出彩…

刷代码随想录有感(99):动态规划——使用最小花费爬楼梯

题干&#xff1a; 代码&#xff1a; class Solution { public:int minCostClimbingStairs(vector<int>& cost) {vector<int>dp(cost.size() 1);dp[0] 0;dp[1] 0;for(int i 2; i < cost.size(); i){dp[i] min(dp[i - 1] cost[i - 1], dp[i - 2] cost…

MySQL快速入门(极简)

SQL 介绍及 MySQL 安装 一、实验简介 本课程为实验楼提供的 MySQL 实验教程&#xff0c;所有的步骤都在实验楼在线实验环境中完成&#xff0c;学习中请按照实验步骤依次操作。 本课程为 SQL 基本语法及 MySQL 基本操作的实验&#xff0c;理论内容较少&#xff0c;动手实践多…

C# BindingSource 未完BindingNavigator

数据绑定导航事件数据验证自定义示例示例总结 在 C#中&#xff0c; BindingSource 是一个非常有用的控件&#xff0c;它提供了数据绑定的基础设施。 BindingSource 允许开发者将数据源&#xff08;如数据库、集合、对象等&#xff09;与用户界面控件&#xff08;如文本框、下…

Fedora的远程桌面

要在 Fedora 40 上开启远程桌面功能。 首先&#xff0c;要确保已安装 gnome-remote-desktop 和 vino 包。 这些软件包通常默认安装在 Fedora 的 GNOME 桌面环境中。 可以按照以下步骤操作&#xff1a; 1、判断电脑是否安装了 gnome-remote-desktop 和 vino 包: tomfedora:…

51单片机独立按键控制LED灯,按键按一次亮,再按一次灭

1、功能描述 独立按键控制LED灯&#xff0c;按键按一次亮&#xff0c;再按一次灭 2、实验原理 轻触按键:相当于是一种电子开关&#xff0c;按下时开关接通&#xff0c;松开时开关断开&#xff0c;实现原理是通过轻触按键内部的金属弹片受力弹动米实现接通和断开&#xff1b;…

demo xshell (程序替换 工作目录 内建命令)

1.程序替换 在学习完一些列的进程替换接口之后我们大概就能知道&#xff0c;我们的环境变量以及命令行参数是如何传递给子进程的&#xff0c;这些参数是我们在调用进程替换时就传给了子进程的数据。 那么如果我们自己要实现一个简单的命令行解释器&#xff0c;我们是不是首先…

6.全开源源码---小红书卡片-跳转微信-自动回复跳转卡片-商品卡片-发私信-发群聊-安全导流不封号-企业号白号都可以用

现在用我们的方法&#xff0c;可以规避违规风险&#xff0c;又可以丝滑引流&#xff0c;因为会以笔记的形式发给客户&#xff0c;点击之后直接跳微信&#xff0c;我们来看看演示效果吧&#xff08;没有风险提示&#xff09; 无论是引流还是销售产品都会事半功倍。

tkinter用按钮实现工具栏

tkinter用按钮实现工具栏 效果代码 使用 Python 的 Tkinter 库&#xff0c;我们可以轻松创建一个包含按钮的工具栏。本文将介绍如何在 Tkinter 中创建一个 简单的工具栏&#xff0c;并演示如何添加功能按钮。 效果 代码 import tkinter as tk from tkinter import ttk, filed…

Kafka集成flume

1.flume作为生产者集成Kafka kafka作为flume的sink&#xff0c;扮演消费者角色 1.1 flume配置文件 vim $kafka/jobs/flume-kafka.conf # agent a1.sources r1 a1.sinks k1 a1.channels c1 c2# Describe/configure the source a1.sources.r1.type TAILDIR #记录最后监控文件…

Ubuntu 24.04 LTS 安装配置 MySQL Community Server 8.4.0 LTS

1 安装 Apt Repository ​​​​​​​地址MySQL :: Download MySQL APT Repository sudo dpkg -i mysql-apt-config_0.8.30-1_all.deb #安装mysql 8.4 lts sudo apt update sudo apt-get install mysql-server #修改mysql root密码策略 2 查看版本 testtest:~$ mysqld --v…

【数学】各种图面积公式的推导

Hello&#xff01;大家好&#xff0c;我是学霸小羊&#xff0c;今天讲讲面积公式。 1.长方形 长方形是 由无数条 长度为长方形的长&#xff08;或宽&#xff09;的线 组成的图形&#xff0c;这些线有多少根&#xff0c;我们不知道&#xff0c;只需要知道他们垒成了一个由高 宽…

自然语言处理:第三十四章Lora VS FineTuning

文章链接: [2405.09673] LoRA Learns Less and Forgets Less (arxiv.org) 这是一篇来自哥伦比亚大学和databricks对Lora 和FineTuning 更深一步的研究。有关于Lora可以参考我之前的文章: 自然语言处理: 第十二章LoRA解读_lora自然英语处理-CSDN博客 有关于fine_tuning 可以参考…

Stream流的实际使用

一、中间操作 1、fileter的使用 filter起到过滤筛选的作用&#xff0c;一般在filter中衔接lambda表达式起到筛选作用 2、Map方法的使用 Map方法的适用场景&#xff0c;接上例&#xff0c;对当前的包含对象的流数据转换为仅包含人名的流&#xff0c;那么就适合使用map方法来进行…

Java核心: JarIndex的使用

在讲解Java类加载器的时候&#xff0c;我们发现URLClassLoader加载类或资源时通过访问ClassPath下的每一个路径&#xff0c;来确定类是否存在的&#xff0c;假设我们执行的命令是这样的 java -classpath D:\DiveInSpring\target\classes;C:\lib\spring-expression.jar;C:\lib\…