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、准备工作

cpp 复制代码
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、连接阿里云

cpp 复制代码
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、订阅

cpp 复制代码
AT+MQTTSUB=0,"/ProductKey/DeviceName/user/get",1  // 订阅

其中,两个参数:ProductKey、DeviceName,在我们的记录文件中,粘贴替换即可。

执行订阅指令后,如果返回OK, 基本是顺利执行了。

我们点击设备列表后面的"查看",进入 如下页面后。发现Topic列表已增加了订阅。

它右侧的"发布消息",用于测试,给订阅的设备,发送测试消息。

3、上报

cpp 复制代码
AT+MQTTPUB=0,"/sys/ProductKey/DeviceName/thing/event/property/post","{params:{\"标识符\":你想要设置的数值}}",0,0

其中,前两个参数:ProductKey、DeviceName,在我们的记录文件中,粘贴替换即可。

后面的参数,标识符、数值,我们按之前新建产品时的属性,复制填入。如果多个属性,用逗号分隔; 如:

cpp 复制代码
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、数据解读到变量

相关推荐
__基本操作__1 小时前
历遍单片机下的IIC设备[ESP--0]
单片机·嵌入式硬件
小曲曲5 小时前
接口上传视频和oss直传视频到阿里云组件
javascript·阿里云·音视频
zy张起灵7 小时前
48v72v-100v转12v 10A大功率转换电源方案CSM3100SK
经验分享·嵌入式硬件·硬件工程
PegasusYu10 小时前
STM32CUBEIDE FreeRTOS操作教程(九):eventgroup事件标志组
stm32·教程·rtos·stm32cubeide·free-rtos·eventgroup·时间标志组
为什么每天的风都这么大11 小时前
Vscode/Code-server无网环境安装通义灵码
ide·vscode·阿里云·编辑器·ai编程·code-server
007php00714 小时前
GoZero 上传文件File到阿里云 OSS 报错及优化方案
服务器·开发语言·数据库·python·阿里云·架构·golang
lantiandianzi14 小时前
基于单片机的多功能跑步机控制系统
单片机·嵌入式硬件
文弱书生65614 小时前
输出比较简介
stm32
哔哥哔特商务网14 小时前
高集成的MCU方案已成电机应用趋势?
单片机·嵌入式硬件
跟着杰哥学嵌入式14 小时前
单片机进阶硬件部分_day2_项目实践
单片机·嵌入式硬件