ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

0-STM32G070+CH395Q基本控制篇(自建物联网平台)-整体运行测试-STM32+CH395Q连接MQTT服务器

2022-07-02 10:01:59  阅读:179  来源: 互联网

标签:STM32G070 建物 mqtt CH395Q MQTT 地址 服务器 连接 函数


<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ZLIOTD/CH395Q/index.html" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

<iframe frameborder="0" height="1500" name="ifd" scrolling="auto" src="https://mnifdv.cn/resource/cnblogs/ZLIOTD/CH395Q/index.html" width="100%"></iframe>

 

说明

这节测试一下STM32+CH395Q连接MQTT服务器

测试的是连接我的服务器,用户可以根据后面的教程搭建自己的MQTT服务器.

 

测试

1.使用网线连接路由器或者交换机

 

 

 

 

 

2.编译下载这节的程序到开发板 

 

 

3.使用单片机串口1打印串口日志(115200)

 

 

 

4.正常运行情况下日志会打印

 

 

 

5.使用MQTT上位机测试通信

 

 

 

 

 

6.开发板订阅和发布的主题使用的CH395的MAC地址

设备订阅的主题是: user/MAC地址

设备发布的主题是: device/MAC地址

日志上会打印设备的MAC地址

 

 

调试助手上填写

发布的主题填写: user/mac地址

订阅的主题填写: device/mac地址

 

 

然后点击连接, 再点击订阅

 

 

 

每隔一段时间会收到设备的数据(设备采集的温湿度数据)

 

 

 

7.使用调试助手发送消息

 

 

 

 

 

 

程序说明

1.关于主要的几个文件说明(后面章节有详细的移植使用说明,用户前期只需要了解即可)

tcp_mqtt文件是处理TCP连接通信和MQTT连接通信的文件;

mqtt文件夹: MQTT协议处理文件,使用环形队列式缓存管理,支持消息等级0,1,2

tcp_client1文件是tcp客户端连接通信程序.

 

 

2, 设置CH395工作在SPI模式

 

 

3, 初始化CH395

 

 

4, CH395的各种事件在这个函数里面执行

 

 

 

 

5.MQTT本身就是TCP服务器,所以先连接TCP服务器

设置要连接的服务器的地址和端口号

 

 

 

 

咱连接的地址tcp_mqtt_ip有可能是域名也可能是ip, 使用ch395_strip_tempip函数来处理一下;

如果是ip字符串则会把地址解析到 mqtt_ip_addr 数组,

如果是域名, 则启动DNS解析下域名, 也把地址解析到 mqtt_ip_addr 数组,

 

 

 

 

 

 

 

 

 

下面就是连接TCP服务器

 

 

 

6,接着是MQTT连接通信, MQTT封装成了回调函数的形式

咱一开始的时候已经初始化了

 

 

 

7.连接成功TCP以后,发送MQTT连接协议

 

 

 

8.发送连接协议给服务器以后,服务器会返回连接状态数据

把服务器返回的数据让mqtt_function_connect_ack 函数处理

 

 

 

在连接回调函数里面订阅主题和设置发布的主题

 

 

 

9.只要是连接上了MQTT服务器,咱后续可以在任意的地方调用订阅主题 mqtt_subscribe 或者发布消息 mqtt_publish 函数

 所有的消息都会打包为MQTT协议以后存储到内部缓存里面,然后轮训发送出去

 

 

 

 

10.接收消息和发送消息

连接MQTT成功以后收到的服务器发送的数据需要让 mqtt_read_function函数处理, 该函数内部会处理消息并调用相应的回调函数

 

 

 

 

 

结语

这节测试了基本的MQTT远程通信,在后面的章节中将学习到整个流程是如何实现的.

 

标签:STM32G070,建物,mqtt,CH395Q,MQTT,地址,服务器,连接,函数
来源: https://www.cnblogs.com/yangfengwu/p/16436739.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有