概述
小编看网上好多人都会用STM32+ESP8266做一个实现上位机/APP来实现控制单片机的物联网项目。一个小小学渣的我也想弄弄,最近在某站上看到了有关视频就照着视频学习了一下,下面是我第一天的学习内容。
学习的视频连接:https://www.bilibili.com/video/BV16E41147uZ?from=search&seid=11468373369000920943
第一部分:注册并登陆中国移动onenet平台
1、注册登陆完后,点击“开发者中心”
2、在“全部产品”–>“多协议接入”–>“添加产品”,就出现如下图
填写有关的信息,注意“接入设备协议”要选旧版的MQTT,其他的随便填一下就行。填完后确定,则产品创建成功。
3、在产品中添加设备。为了实现STM32+ESP8266实现物联网。我们需要添加两个设备:受控端设备——STM32,控制端设备——APP。我的理解中这个平台就是个传输信息的媒介。
点击产品–>“设备列表”–>“添加设备”,下图是我填的两个设备的创建信息
这样两个设备就创建完了,回到原页面你可以看到两个设备处于离线状态
第二部分:了解MQTT的报文:
主要实现通信的报文就这么多,具体怎么用还要看MQTT的开发文档,文档百度一下就有很多
第三部分:用网络助手实现与onnet平台上的产品中一个设备的连接
1、首先要知道onenet平台的MQTT的IP地址和端口,如下图:
得到IP:183.230.40.39 端口:6002
因此将网络助手设置如下:
2、我们选择产品中的STM32设备做连接测试
在网页中得到如下信息
3、建立连接,实现通信:
一connect报文(用于建立连接C->S):这里要看文档:
connect:10 27 00 04 4D 51 54 54 04 C2 00 78 00 09 36 31 38 37 39 38 37 35 33 00 06 33 36 36 37 33 32 00 08 73 6B 64 73 74 6D 33 32
在发送框输入如上数据,打开串口后点发送,得到如下图的回应:
服务器对客户端的回应,即connack报文:20 02 01 00,一会解释
connect报文发送的数据的注释:
1、10:connect报文的固定标识
2、27:可变报头加负载的数量,可以记为调节它后面有多少个数
3、可变报头部分(byte1——byte8):
开头两个字节是00 04(固定的),“MQTT”的ASCII码为:4D 51 54 54 ,byte7字节也是固定的:04,byte8就设为:C2,含义有用户名,用登录密码,不支持离线信息的发送保留。具体解释看文档。
因此这一部分为00 04 4D 51 54 54 04 C2
4、00 78:设置连接的时间2分钟120s的ASCII码
5、负载部分:要用到一开始说的客户端ID,用户ID,密码。
(1)00 09 36 31 38 37 39 38 37 35 33
00 09:表示客户端ID是ASCII码的数量9个
(2)00 06 33 36 36 37 33 32,表用户名解释同上
(3)00 08 73 6B 64 73 74 6D 33 32,表密码,解释同上
网络助手接收到的connack报文的注释
20:connack的固定开头
02:后面发送的可变报文+负载数据是2个
01:不使用离线消息,与发送时不使用离线的设定保持一致
00:表示连接成功建立
二ping报文(用于申请延长连接)
为了保持与服务器的连接:在设定的一段连接有效时间内发送C0 00
得到ping命令的回复pingrsp D0 00,表示连接延长成功,如图:
三subscribe报文(用于订阅)
这个订阅报文相当于某信申请关注公众号
例如要申请关注:app(ASCII码为:61 70 70)
发送:82 08 00 0A 00 03 61 70 70 00
得到suback:90 03 00 0a 00
如下图:
subscribe报文注释
82:subscribe报文的固定报头
08:后面可变报头+负载的数量
00 0A:表示第几次的报文,防止报文错乱
00 03:app这个名字的ASCII码的数量
61 70 70 :appASCII的表示
00:表示服务质量等级
suback报文注释
90:suback报文的固定报头
03:后面可变报头+负载的数量
00 0a:表示第几次的报文,同发送时的一致
00:表示服务质量等级,同发送时的一致
四unsubscribe报文(用于取消订阅)
这个取消订阅报文相当于某信取消关注公众号
例如要取消刚才关注的:app(ASCII码为:61 70 70)
发送:A2 07 00 0C 00 03 61 70 70
得到unsuback:b0 02 00 0c
如下图:
unsubscribe报文注释
A2:unsubscribe报文的固定报头
07:后面可变报头+负载的数量
00 0C:表示第几次的报文,防止报文错乱
00 03:app这个名字的ASCII码的数量
注意:这里就不需要最后加服务质量00/01/10了,没必要了
unsuback报文注释
b0:unsuback报文的固定报头
02:后面可变报头+负载的数量
00 0C:表示第几次的报文,同发送时的一致
五disconnect报文:
0E 00
发送后,网络助手与服务器断开连接,这个试试就知道了。
这就是今天小编的MQTT的学习。
做了个笔记。
最近迷茫,越学越感觉啥啥不会,加油明天的直接更懂点!!!
最后
以上就是现代金毛为你收集整理的STM32+ESP8266实现物联网控制学习日记之MQTT学习——第一天:初识中国移动ONENET平台的全部内容,希望文章能够帮你解决STM32+ESP8266实现物联网控制学习日记之MQTT学习——第一天:初识中国移动ONENET平台所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复