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

一、项目背景

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

基于此背景,设计了基于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;

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu基础 - 常用命令

目录 一.打开终端 1.快捷键 2.右键桌面 3.应用程序管理 二. 常用命令 1. ls命令 2. cd 命令 3. pwd 命令 4. mkdir 命令 5. rm 命令 和 rmdir 命令 6. mv 命令 7. cp 命令 8. touch 9. more 命令 less 命令 10. echo > 前言:大家好,这是一篇ubuntu常用的基…

进程概念(二)

目录 进程优先级基本概念查看系统进程PRI and NIPRI vs NI修改进程优先级的命令renice修改优先级进程其他概念 环境变量基本概念查看环境变量方法常见环境变量PATHHOMESHELL 查看环境变量环境变量相关的命令 环境变量特征命令行参数main函数中的俩个参数 argc argvmain函数的第…

机器学习--生成式模型和判别式模型的具体分析

文章目录 生成式模型和判别式模型的具体分析生成式模型定义工作原理优点缺点常见模型 判别式模型 总结生成式模型判别式模型 生成式模型和判别式模型的具体分析 生成式模型和判别式模型在机器学习中有着不同的目标、应用场景和性能特点。以下将详细分析它们的定义、工作原理、…

Golang-分离式加载器(传参)AES加密

目录 enc.go 生成: dec.go --执行dec.go...--上线 cs生成个c语言的shellcode. enc.go go run .\enc.go shellcode 生成: --key为公钥. --code为AES加密后的数据, ----此脚本每次运行key和code都会变化. package mainimport ("bytes""crypto/aes"&…

【Vue】核心概念 - module

目标 掌握核心概念 module 模块的创建 问题 由于使用单一状态树&#xff0c;应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时&#xff0c;store 对象就有可能变得相当臃肿。 这句话的意思是&#xff0c;如果把所有的状态都放在state中&#xff0c;当项目变得…

解锁ChatGPT:从GPT-2实践入手解密ChatGPT

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三连支…

虚拟机开启网络代理设置

前言&#xff1a; 不管是物理主机还是实验环境中的VMware虚拟机&#xff0c;有时候总要访问一些镜像网站或者资源网站拉取一些学习资料&#xff0c;但由于国内外网络环境的差异和网络安全的问题。总是会被阻拦。物理机相对比较容易一些&#xff0c;今天我们来说一说虚拟机应该…

Java——IO流(一)-(2/9):File类的常用方法(判断文件类型、获取文件信息、创建删除文件、遍历文件夹)

目录 常用方法1&#xff1a;判断文件类型、获取文件信息 方法 实例演示 常用方法2&#xff1a;创建文件、删除文件 方法 实例演示 常用方法3&#xff1a;遍历文件夹 方法 实例演示 常用方法1&#xff1a;判断文件类型、获取文件信息 方法 File提供的判断文件类型、获…

【数据结构(邓俊辉)学习笔记】图06——最小支撑树

文章目录 0. 概述1. 支撑树2. 最小支撑树3. 歧义性4. 蛮力算法5. Prim算法5.1 割与极短跨越边5.2 贪心迭代5.3 实例5.4 实现5.5 复杂度 0. 概述 学习下最小支撑树和prim算法。 1. 支撑树 最小的连通图是树。 连通图G的某一无环连通子图T若覆盖G中所有的顶点&#xff0c;则称…

将克隆到本地的6.824项目上传到自己的github

前置知识见&#xff1a;把自己在本地完成的mit6.s081项目上传到自己的github仓库里_mit6.s081 lab上传-CSDN博客 先在github建立一个自己的仓库 由于github可以给自己的主分支改名了&#xff0c;我这次是勾选了创建README文件 在本地同样是建立一条remote分支 git remote add…

机器学习-- 如何清洗数据集

文章目录 引言&#xff1a;数据清洗的具体步骤数据清洗的具体方法和示例1. 处理缺失值2. 去除重复数据3. 修正数据格式4. 处理异常值5. 标准化和归一化6. 处理不一致的数据7. 转换数据类型8. 数据集成 总结 引言&#xff1a; 数据清洗是数据处理和分析的关键步骤&#xff0c;旨…

MLU370-M8 chattts-ui快速出击

目录 一、paas平台环境选择二、代码环境准备1.代码下载2.环境安装modelsopetransformersaccelerate 3.常规pip安装4.代码修改4.代码修改 三.算法启动 一、paas平台环境选择 驱动选择&#xff1a;5.10.22及以上 镜像选择&#xff1a;pytorch2.1 二、代码环境准备 1.代码下载…

macOS - 终端快捷键

本文转自 Mac 上“终端”中的键盘快捷键 https://support.apple.com/zh-cn/guide/terminal/trmlshtcts/mac 以下基于系统版本 macOS Sonoma 14 文章目录 Mac 上“终端”中的键盘快捷键1、使用“终端”窗口和标签页2、编辑命令行3、在“终端”窗口中选择和查找文本4、使用标记和…

UE5基础1-下载安装

目录 一.下载 二.安装 三.安装引擎 四.其他 简介: UE5&#xff08;Unreal Engine 5&#xff09;是一款功能极其强大的游戏引擎。 它具有以下显著特点&#xff1a; 先进的图形技术&#xff1a;能够呈现出令人惊叹的逼真视觉效果&#xff0c;包括高逼真的光影、材…

《Brave New Words 》3.4 最重要的学科领域

Part III Empowering the Next Innovators 第三部分 赋能下一代创新者 The Most Important Subject-Matter Domain to Master 最重要的学科领域 In the world of education, it’s crucial for developers to field-test their ideas. Essentially, it means taking our educat…

导数和微分

导数和微分 flyfish 本文主要论述其中的区别 导数是描述函数变化率的量&#xff0c;它表示函数在某点的瞬时变化速度和切线斜率。 微分是导数的一个线性近似&#xff0c;表示函数在某点处随着自变量变化的增量。 导数和微分在本质上都是研究函数变化的工具&#xff0c;但导数…

西门子学习笔记11 - PTO脉冲指令的使用

1、使用指令前的设置 1、打开一个脉冲发生器&#xff0c;并启用 2、选择使用PTO(脉冲A和方向B) 3、硬件设置输出 4、这样前期的准备工作就完成了 2、指令的使用 1、添加指令CTRL_PTO 2、配置如下 3、方向控制程序如下 4、最后进行测试即可

总结【GetHub的WebAPI,ASSET_ID】,【Linux的jq命令】(草稿版+实际操作)

目录 1.介绍一下github中的 asset_id 2. GitHub 的 asset_id相关操作 2.1.获取特定 repository 的 release 列表&#xff1a; 2.2.获取特定 release 中的 asset 列表&#xff0c;并找到 asset_id&#xff1a; 2.3.使用ASSET_ID获取资材 3.返回的 assets 的信息 是什么样样…

AI 大模型重点行业应用情况

1、AI 大模型重点行业应用情况总览 AI大模型将率先在互联网办公、金融等数字化程度较高的行业快速渗透&#xff0c;医疗、交通、 制造等行业的潜在渗透空间大。 2、AI 大模型在金融行业应用情况 金融行业的应用场景丰富&#xff0c;是最早进行数字化转型的机构&#xff0c;因此…

抛弃昂贵BI,企业仍可低成本实现数据分析

有的读者看完《BI工具选型不入坑&#xff0c;你要这么选》这篇文章就陷入迷茫了&#xff0c;我要做企业级数据分析&#xff0c;看过去各家产品都各有千秋&#xff0c;实在难以抉择&#xff0c;或者已经选了仍是纠结不已。 这里我抛出另一种思路&#xff1a;如果不用BI&#xf…