STM32 + ESP8266,连接阿里云 上报/订阅数据
(文章正在编辑中,一点点地截图操作过程,估计要拖拉两三天)
一、烧录MQTT固件
ESP8266出厂时,默认是AT固件。连接阿里云,需要使用MQTT固件。
1、独立EPS8266模块的烧录方法
2、魔女开发板,板载ESP8266的烧录方法
二、接线
三、阿里云 新建产品
1、注册阿里云
阿里云网页:https://www.aliyun.com/
注册、认证,并登录,具体过程不述。
建议使用手机号进行注册。

2、登录后,进入“控制台”
右上角。

3、点击“橙色选择按钮”,进入产品选择页
左上角。

4、找到“物联网平台”
第一次使用时,会显示很多种类的服务,我们直接搜索:物联网平台。
当有使用记录后,最近的访问记录会显示在第一行,方便后续操作。

5、选择“公共实例”
- 公共实例,是免费的,使用限制:同时在线设备数<=50,通信TPS<=5条/秒,等等。
- 虽然是免费的,但对于服务试用、方案初期调试,妥妥的足够了。
- 若业务需要更大资源,公共实例的“产品”可升级到企业版实例,按需包年包月等方式计费。

6、创建产品
设备管理>产品>创建产品
很多人不理解“产品”、“设备”的概念,这两个词在阿里云上,包含意义比较广泛,

7、填写产品的名称
为了更多人理解,我们本篇将使用DHT11的温、湿度进行数据上报、订阅进行示例。
在名称框中,输入:DHT11,也可以是其它名称,如: 车间1的温湿度控制。
支持中文,可以按自己喜欢而设定。

8、查看新建的产品
新建产品后,我们再次点击“产品”,就能进入到产品列表,在这里,发现我们新建的“DHT11", 已在列表中。
点击其右侧的"查看", 进入详细页面。

9、添加产品功能
在上一步进入"查看"页面后,这一步我们开始在其中添加想要的”功能",简单理解为数据模板。

10、添加定义功能
记得:“添加自定义功能”。

11、添加“温度”功能
我们将给“DHT11"这个产品,添加两个功能,下面是"温度”功能的参数设置。
操作提示:在功能名称框中,输入“温度”后,会弹出模板提示,我们可以选择其中相近需求的,它将自动填充相关参数,然后,我们可以再按需求稍作修改。
标识符,我们取:Temp, 既简短,又便于理解。

12、继续添加“湿度”功能
"湿度"功能,和刚才的“温度”, 参数相近。
标识符我们这里取: Humi。同上,是为了简短和方便理解。

13、发布上线
现在,我们的产品“DHT11", 有两个功能、属性了。
温度,标识符:Temp,类型:float
湿度,标识符,Humi,类型:float
最后,点击左下角的”发布上线“,刚才的编辑,才能生效。

发布过程中,弹出的提示窗口。

四、添加设备
1、添加新的设备
这里的"设备",可以简单理解为,用于管理连接的设备,及设备的数据。

过程弹窗,关闭即可。

2、查看已添加的设备
点击"设备"刷新后,可以看到我们刚才添加的设备,已在列表中。
其中,显示为“示激活”状态,不用理会,当有设备连接成功后,会自动激活。
我们点击“查看”,里面有最重要的信息。

3、复制设备信息
这里,是最重要的一步。
我们新建一个txt文件,或者word文件, 把下面7个信息,复制粘贴到文件中,以方便后面使用。

下面是小编复制后整理的。
特别地:
1:clientID字符串中,有两个逗号,需要在逗号前添加转义符'\',参考下图。
2:下面的复制信息,除了端口号port,其它都是字符串,如果在代码中代码,需要加双引号。

五、通过串口助手,手动发送AT指令,连接阿里云
1、准备工作
AT // AT测试指令,如果返回OK,表示与8266连接正常
AT+RESTORE // 重置8266,以清除旧的配置记录
AT+CWMODE=1 // 配置工作模式,1-STA,2-AP,3-STA+AP
AT+CIPMUX=0 // 多连接模式,0-关,1-开
AT+CWJAP="wifi名称","wifi密码" // 加入AP,即连接wifi
AT+CIFSR // 查询当前IP地址; 8266默认IP地址为
AT+CIPSNTPCFG=1,8,"ntp1.aliyun.com" // 设置时区、NPT服务器地址,用于获取网络时间
AT+CIPSNTPTIME? // 请求获取当前的网络时间
上面AT指令 ,顺序执行, 如果执行成功,每一个指令均可返回“OK"。
最后一条指令 ,如果连接正常,可以返回当前的网络时间。
2、连接阿里云
AT+MQTTUSERCFG=0,1,"NULL","username","passwd",0,0,"" // 发送MQTT的登陆用户名和密码
AT+MQTTCLIENTID=0,"clientId" // 发送MQTT的ClientID, 注意,在clientID的字符串中,两个逗号前都要加一个\作转义字符
AT+MQTTCONN=0,"mqttHostUrl",1883,1 // 设置MQTT接入地址
连接阿里云,只需要这3条AT指令,简单得不行。
指令中的端口号,固定的1883;
其中4参数,我们按自己的数据来修改:username、passwd、clientId、mqttHostUrl。
它们在上述复制的文件中,再次在文本中按需复制,替换到指令中即可。
也可以按这个路径查询到:阿里云>物联网平台>设备管理>设备>查看>MQTT连接参数.
执行成功后,查看阿里云的设备列表,设备最初的状态"未激活”, 自动切换为“在线”。
2、订阅
AT+MQTTSUB=0,"/ProductKey/DeviceName/user/get",1 // 订阅
其中,两个参数:ProductKey、DeviceName,在我们的记录文件中,粘贴替换即可。
执行订阅指令后,如果返回OK, 基本是顺利执行了。
我们点击设备列表后面的“查看”,进入 如下页面后。发现Topic列表已增加了订阅。
它右侧的“发布消息”,用于测试,给订阅的设备,发送测试消息。

3、上报
AT+MQTTPUB=0,"/sys/ProductKey/DeviceName/thing/event/property/post","{params:{\"标识符\":你想要设置的数值}}",0,0
其中,前两个参数:ProductKey、DeviceName,在我们的记录文件中,粘贴替换即可。
后面的参数,标识符、数值,我们按之前新建产品时的属性,复制填入。如果多个属性,用逗号分隔; 如:
AT+MQTTPUB=0,"/sys/ProductKey/DeviceName/thing/event/property/post","{params:{\"Temp\":15.2\,\"Humi\":87.6}}",0,0
执行上报指令后,如果返回OK, 基本是顺利执行了。 我们打开设备页面验证一下:
可以看到数据的更新了!(注意,免费版本,最高5条信息/秒)

4、在线调试
如果使用两个或多个8266, 可以方便地进行调试:所有8266设备设置订阅,其中一个设备上报更新数据,其它的设备就能收到数据。
如果没有两个或多个8266, 我们可以使用阿里云的在线调试,如下:

在这个页面中,点击获取,即可获取云上的数据,点击设置,即可把数据上报到云,同时,其它订阅了此主题的设备,也能收到数据。
如下:

至此,我们已使用串口助手,对连接阿里云、订阅、上报,都作了测试和熟悉。
后面,我们就可以把上述的AT指令,嵌入到代码中,使用串口通信代码进行操作,使其上电后自动运行。
六、通过STM32, 编写代码,实现自动连接阿里云
1、连接阿里云
2、上报数据
3、订阅数据
4、数据解读到变量
相关文章:
STM32 + ESP8266,连接阿里云 上报/订阅数据
(文章正在编辑中,一点点地截图操作过程,估计要拖拉两三天) 一、烧录MQTT固件 ESP8266出厂时,默认是AT固件。连接阿里云,需要使用MQTT固件。 1、独立EPS8266模块的烧录方法 2、魔女开发板,板载…...
如何利用chatgpt提升工作效率?
在数字化和信息化的时代,人工智能技术已经深入到了我们生活的方方面面。其中,ChatGPT作为当前热门的人工智能技术,以其强大的自然语言处理能力和广泛的应用场景,正逐渐改变着我们的工作方式,为我们提高工作效率提供了全…...
MongoDB聚合:$geoNear
$geoNear根据指定的点按照距离以由近到远的顺序输出文档。 从4.2版本开始,MongoDB移除了limit和num选项以及100个文档的限制,如果要限制结果文档的数量可以使用$limit阶段。 语法 { $geoNear: { <geoNear options> } }$geoNear操作接受一个包含…...
Docker-CE 国内源国内镜像
Docker-CE 就是 Docker Community Edition 的意思 docker-ce由docker官方维护 , docker.io由Debian维护 Docker官文 – Install Docker Engine on CentOS Docker官文 – Install Docker Engine on Fedora Docker官文 – Install Docker Engine on Debian Docker官文 – In…...
【Tauri】(3):使用Tauri1.5版本,进行桌面应用开发,在windows上搭建环境,安装node,rust环境,可以打包成功,使用vite创建应用
1,视频地址: https://www.bilibili.com/video/BV1Ny421a7nA/ 【Tauri】(3):使用Tauri1.5版本,进行桌面应用开发,在windows上搭建环境,安装node,rust环境,可以…...
C++ 堆排序
C 堆排序 堆排序是一种基于二叉堆数据结构的排序算法,其原理如下: 构建最大堆:将待排序的数组看作一个完全二叉树,并通过调整节点的位置构建一个最大堆。最大堆满足每个父节点的值都大于或等于其子节点的值。构建最大堆的过程可以…...
U3D记录之FBX纹理丢失问题
今天费老大劲从blender建了个模型,然后导出进去unity 发现贴图丢失 上网查了一下 首先blender导出要改设置 这个path mode要copy 然后unity加载纹理也要改设置 这里这个模型的纹理load要改成external那个模式 然后就有了,另外这个导出还有好多选项可…...
监测Nginx访问日志502情况后并做相应动作
今天带大家写一个比较实用的脚本哈 原理: 假设服务器环境为lnmp,近期访问经常出现502现象,且502错误在重启php-fpm服务后消失,因此需要编写监控脚本,一旦出现502,则自动重启php-fpm服务 场景: 1…...
【数据分享】1929-2023年全球站点的逐年平均风速(Shp\Excel\免费获取)
气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、能见度等指标,说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 有关气象指标的监测站点数据,之前我们分享过1929-2023年全球气象站…...
Android性能调优 - 应用安全问题
Android应用安全 1.组件暴露: 像比如ContentProvider,BroadcastReceiver,Activity等组件有android:exported属性; 如果是私有组件 android:exported “false”; 如果是公有组件 android:exported “true” 且进行权限控制&…...
C#的Char 结构的像IsLetterOrDigit(Char)等常见的方法
目录 一、Char 结构的方法 二、Char.IsLetterOrDigit 方法 1.Char.IsLetterOrDigit(Char)用法 2.IsLetterOrDigit(String, Int32)方法 三、Char.IsLetter 方法 1.IsLetter(Char) 2.IsLetter(String, Int32) 四、Char.IsDigit 方法 1. IsDigit(String, Int32) 2.IsDig…...
部分意图分类【LLM+RAG】
在生成人工智能领域工作最有价值的事情之一就是发现新兴技术如何融入新的解决方案。 举个例子:在为北美顶级金融服务公司之一设计对话式人工智能助手时,WillowTree 的数据和人工智能研究团队 (DART) 发现,将意图分类与大型语言模型 (LLM) 结合…...
1277. 统计全为 1 的正方形子矩阵
1277. 统计全为 1 的正方形子矩阵 题目链接:1277. 统计全为 1 的正方形子矩阵 代码如下: class Solution { public:int countSquares(vector<vector<int>>& matrix) {if(matrix.size()0||matrix[0].size()0) return 0;//dp[i][j]代表…...
Python 3 时间序列可视化指南
简介 时间序列分析属于统计学的一个分支,涉及对有序的、通常是时间性的数据进行研究。当适当应用时,时间序列分析可以揭示意想不到的趋势,提取有用的统计数据,甚至预测未来的趋势。因此,它被应用于许多领域࿰…...
[算法前沿]--059-大语言模型Fine-tuning踩坑经验之谈
前言 由于 ChatGPT 和 GPT4 兴起,如何让人人都用上这种大模型,是目前 AI 领域最活跃的事情。当下开源的 LLM(Large language model)非常多,可谓是百模大战。面对诸多开源本地模型,根据自己的需求,选择适合自己的基座模型和参数量很重要。选择完后需要对训练数据进行预处…...
【Docker】01 Docker安装与配置
文章目录 一、Docker二、离线安装Docker三、联网安装Docker3.1 下载YUM软件库文件3.2 安装epel-release3.3 安装yum-utils3.4 设置镜像仓库3.5 查看docker-ce所有版本3.6 安装Docker3.7 启动Docker3.8 查看Docker信息3.9 启动第一个容器 四、一些配置4.1 登录DockerHub4.2 镜像…...
Unity3d Shader篇(六)— BlinnPhong高光反射着色器
文章目录 前言一、BlinnPhong高光反射着色器是什么?1. BlinnPhong高光反射着色器的工作原理2. BlinnPhong高光反射着色器的优缺点优点缺点 3. 公式 二、使用步骤1. Shader 属性定义2. SubShader 设置3. 渲染 Pass4. 定义结构体和顶点着色器函数5. 片元着色器函数 三…...
Go-zero微服务个人探究之路(十二)定时任务的选择调研
前言 很多时候后台需要做定时任务的需求,笔者的项目采用go-zero框架微服务框架,需要做定时任务,于是做了如下方法调研,共有大概三种主要选择 方案 难度总体由容易到复杂 go的timer库 通过Go的标准库time中的Ticker和Tick功能…...
Java中,List、Map和Set的区别是什么?
在Java中,List、Map和Set是三种常用的集合类型,它们之间的主要区别如下: 1、List List是有序集合,它可以包含重复元素。 List中的元素是按照插入顺序排列的,可以通过索引访问每个元素。 Java中常见的List实现类有A…...
Google刚刚推出了图神经网络Tensorflow-GNN
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...
k8s从入门到放弃之HPA控制器
k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率(或其他自定义指标)来调整这些对象的规模,从而帮助应用程序在负…...
使用SSE解决获取状态不一致问题
使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件,这个上传文件是整体功能的一部分,文件在上传的过程中…...
Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践
在 Kubernetes 集群中,如何在保障应用高可用的同时有效地管理资源,一直是运维人员和开发者关注的重点。随着微服务架构的普及,集群内各个服务的负载波动日趋明显,传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...
