| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> MQTT通信简介 -> 正文阅读 |
|
[嵌入式]MQTT通信简介 |
????????最近在参加比赛,需要开发一整个嵌入式系统,正好分到我负责做嵌入式这一块的代码。设计书中需要用MQTT协议传输GPS模块,温湿度模块等传感器的数据到MQTT服务器,使得PC端和手机端能够获取这些信息并且显示。 ? ? ? ? 在网站上搜索了许多关于MQTT的资料,发现大多数只有介绍却很少有源代码或者说实际上实现的比较完整的MQTT的协议通信,导致在编写代码时阻碍重重。于是在完成了自己的项目之后打算把自己这段时间的学习到的知识和资料记录下来,供以后需要在嵌入式端使用MQTT协议的人参考 ? ? ? ? 打算分按三个部分来部分来讲,第一自然是MQTT协议的构成,第二是介绍Paho的基于C语言的MQTT开源库,第三是介绍如何将Paho库移植到STM32F103开发板上实现MQTT协议通信 MQTT是什么? 当然,在物联网开发中,MQTT不是唯一的选择,与MQTT互相竞争的协议有XMPP和CoAP协议等,文章末尾会有一个比较和说明。 MQTT是哪一层的协议? MQTT通信流程的简单介绍 ????????MQTT客户端通信主要的两个方式,一个是订阅(Subscribe),一个是发布(Publish),简单来说订阅(Subscribe)类似于关注一个公众号一样,任何这个公众号上面发布的内容都会被推送给关注这个公众号的人,订阅了一个主题的客户端就会接收到在此主题上发布的任何消息。发布(Publish)就像是给在公众号上编辑文章推送给关注公众号的的所有用户,发布(Publish)时需要编辑发布的内容,然后还需要选择向拿一个主题发布信息。 ????????同时MQTT协议也需要一个服务端,每一个客户端都需要连接服务端,服务端会存储每一个客户端订阅的主题和发布的消息,以及将需要发布的消息发给订阅者。说起来可能有一点抽象。我们使用MQTT.fx,来熟悉这个过程。 ????????首先打开两个MQTT.fx窗口,然后设置客户端连接到哪一个服务器,即填写Broker Address和端口Broker Port。MQTT官方拥有免费的测试服务器test.mosquitto.org,端口是1883,这里我使用的是自己用阿里云服务器搭建的MQTT服务器。如何搭建MQTT服务器已经有很多大佬写了详细的教程,大家可以去参考。设置好之后点击OK。点击Connect就能连接到服务端。 ?连接之后可以看到在服务器管理界面可以看到连接至本服务器的两个客户端,接下来我们就可以进行发布/订阅(Publish/Subscribe) ?我们在右边这个客户端订阅一个名为/phone/Msg的主题,订阅成功之后如下图: 然后我们用左边这个客户端向/phone/Msg发布一条hello的消息,从下图可以看见右边订阅了该主题的客户端接收到了一条hello的消息: ?而左边这个客户端由于没有订阅/phone/Msg这个主题,就没有收到hello这条消息: ?当两个客户端都订阅了/phone/Msg这个主题时,双方都会接收到一条hello的消息: ?所以发布者可以向任何主题发布消息,不论这个主题是否有订阅者,区别就是有订阅者服务器就会像订阅了该主题的客户端发送这条消息,如果没有订阅者服务器就不会向某一个客户端发送这一条消息。同理客户端也可以订阅任何主题,只要主题命名规范即可。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 2:46:37- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |