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、数据解读到变量

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

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

相关文章

‘vue-cli-service‘ 不是内部或外部命令,也不是可运行的程序

遇到 vue-cli-service 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 的错误时&#xff0c;通常意味着Vue CLI没有被正确安装或配置在项目中。这可能是因为node_modules目录缺失了必要的包&#xff0c;或者局部安装的Vue CLI没有被正确设置到系统的PATH环境…

洛谷: P1308 [NOIP2011 普及组] 统计单词数

前言: 这道题没理解清题目表达意思&#xff0c;我开始想的是用map来记录个数&#xff0c;然后一个变量记录一开始出现的单词位置&#xff0c;不挺简单的吗&#xff0c;然后....就AC了2个..从错误提示能看到个数没啥问题&#xff0c;但是第一个单词位置不对&#xff0c;看了新样…

【51单片机】AT24C02(江科大、爱上半导体)

一、AT24C02 1.AT24C02介绍 AT24C02是一种可以实现掉电不丢失的存储器,可用于保存单片机运行时想要永久保存的数据信息 存储介质:E2PROM 通讯接口:12C总线 容量:256字节 2.引脚即应用电路 本开发板AT24C02原理图 12C地址全接地,即全为0 WE接地,没有写使能 SCL接P21 S…

Microsoft Excel 加载数据分析工具

Microsoft Excel 加载数据分析工具 1. 打开 Excel&#xff0c;文件 -> 选项2. 加载项 -> 转到…3. 分析工具库、分析工具库 - VBA4. 打开 Excel&#xff0c;数据 -> 数据分析References 1. 打开 Excel&#xff0c;文件 -> 选项 2. 加载项 -> 转到… ​​​ 3…

不安全的 HTTP请求 漏洞原理以及修复方法

漏洞名称&#xff1a;不安全的HTTP方法、危险的HTTP方法 漏洞描述&#xff1a;不安全的HTTP方法一般包括&#xff1a;TRACE、PUT、DELETE、COPY 等。其中最常见的为TRACE方法可以回显服务器收到的请求&#xff0c;主要用于测试或诊断&#xff0c;恶意攻击者可以利用该方法进行…

【Java程序设计】【C00270】基于Springboot的moba类游戏攻略分享平台(有论文)

基于Springboot的moba类游戏攻略分享平台&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的游戏攻略分享平台 本系统分为系统功能模块、管理员功能模块、以及用户后台功能模块。 系统功能模块&#xff1a;在平台首…

【开源】基于JAVA+Vue+SpringBoot的房屋出售出租系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 房屋销售模块2.2 房屋出租模块2.3 预定意向模块2.4 交易订单模块 三、系统展示四、核心代码4.1 查询房屋求租单4.2 查询卖家的房屋求购单4.3 出租意向预定4.4 出租单支付4.5 查询买家房屋销售交易单 五、免责说明 一、摘…

Ocr之TesseractOcr的安装及使用

目录 一、安装环境 二、安装内容 三、安装过程及识别测试 1. 安装过程 2. 程序编写 总结 1. 安装复杂度较低 2. 国外开源Ocr 3. 可设置识别参数 4. 工具类 一、 系统环境windows 10 linux环境也可安装, 可借鉴此篇文章>> | 二、安装内容 Tesseract exe 程序安…

python学习23

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…

数模.matlab符号计算方程

一、符号函数 a&#xff1a;整理简化&#xff1a; b&#xff1a;因式分解&#xff1a; c&#xff1a;多项式展开 d&#xff1a;合并&#xff1a; e&#xff1a;计算分子分母&#xff1a; f&#xff1a;求导&#xff1a; f&#xff1a;差分&#xff1a; g&#xff1a;不定积分&a…

阿里云服务器“带宽计费模式”怎么选?有啥区别?

阿里云服务器带宽计费模式分为“按固定带宽”和“按使用流量”&#xff0c;有什么区别&#xff1f;按固定带宽是指直接购买多少M带宽&#xff0c;比如1M、5M、10M、100M等&#xff0c;阿里云直接分配用户所购买的带宽值&#xff0c;根据带宽大小先付费再使用&#xff1b;按使用…

BYTEVALUE 百为流控路由器远程命令执行漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

单片机接收PC发出的数据

#include<reg51.h> //包含单片机寄存器的头文件 /***************************************************** 函数功能&#xff1a;接收一个字节数据 ***************************************************/ unsigned char Receive(void) { unsigned char dat; …

网络编程项目:电子辞典

项目要求&#xff1a; 登录注册功能&#xff0c;不能重复登录&#xff0c;重复注册。用户信息也存储在数据库中。单词查询功能历史记录功能&#xff0c;存储单词&#xff0c;意思&#xff0c;以及查询时间&#xff0c;存储在数据库基于TCP&#xff0c;支持多客户端连接&#x…

C++引用(内含和指针的对比)

1.引用的概念 概念&#xff1a;引用不是新定义一个变量&#xff0c;而是给已存在变量取了一个别名&#xff0c;编译器不会为引用变量开辟内存空间&#xff0c;它和它引用的变量共用一块内存空间。 类型& 引用变量名(对象名) 引用实体&#xff1b;&#xff08;&这个符…

leetcode 394. 字符串解码

本题主要思路是使用两个栈&#xff1a;一个用于存储倍数&#xff08;数字&#xff09;&#xff0c;另一个用于存储解码结果&#xff08;字符串&#xff09;。在遍历输入字符串时&#xff0c;根据不同的字符执行相应的操作&#xff0c;最终得到解码后的字符串。 具体来说&#x…

从零开始实现消息队列(二)

从零开始实现消息队列 .核心API交换机类型持久化网络通信Connection和Channel 消息应答模块划分 . 核心API 对于Broker来说,要实现以下核心API,通过这些API来实现消息队列的基本功能. 创建队列(queueDeclare)销毁队列(queueDelete)创建交换机(exchangeDeclare)销毁交换机(exc…

Duilib List 控件学习

这是自带的一个示例; 一开始运行的时候List中是空的,点击Search按钮以后就填充列表框; 先看一下列表框列头是在xml文件中形成的; <List name="domainlist" bkcolor="#FFFFFFFF" ... menu="true"> <ListHeader height="24…

中国电子学会2019年3月份青少年软件编程Scratch图形化等级考试试卷三级真题(选择题、判断题)

一、单选题(共 25 题&#xff0c;每题 2 分&#xff0c;共 50 分) 1. 要使以下代码运行后画出如图所示三角形风车,则以下代码中①②③④处应分别填入多少?( ) A.3 4 90 120 B.4 3 90 120 C.3 4 120 90 D.4 3 120 90 2.运行下列脚本&#xff0c;i的值为&#xff08; &am…