【STM32】引入MQTT协议和FreeRTOS


前言

在上一次的项目中,利用STM32开发板和ESP8266模块,完成了一个物联网台灯、门铃报警的小项目。利用手机上的微信小程序,就能控制开发板上LED灯的亮灭,按下开发板上的按键,也能够在微信小程序上显示报警。
虽然说完成了这个项目,但仔细思考就能发现明显缺陷。手机和开发板必须连接在同一个WiFi信号下,如此一来,实际的应用场景就会变得非常狭窄了。只有使用者在家中,且手机连着WiFi的情况下,才能发挥作用。如果使用者外出,手机和开发板不在同一个WiFi上,那就不能控制台灯,也不能收到门铃报警了。
那么如何克服这个缺点呢?这里就引入了MQTT协议来解决这个问题。
同时,还引入了FreeRTOS系统,来怼项目进行优化。


`

一、什么是MQTT协议

在理解MQTT协议之前,首先要知道,网络通讯的基础。两个设备之间,是如何传输数据的。
在之前的项目中,开发板和手机连在同一个WiFi上,让开发板和手机通讯的时候,必须要确定的两个要素,分别是IP地址和Port端口。
也就是说,想要在两个设备之间传输数据,就必须要知道两个设备的IP地址和Prot端口。那么同样的,如果想要我们不同网络下,实现开发板和手机之间的网络通讯,也需要知道两个设备的IP地址和prot端口。
但是呢,仅仅是知道了IP地址和端口之后,也是不能直接进行通讯的,因为两个路由器之间,不能直接进行通讯,中间必须要有一个服务器的存在。路由器a将信息放到服务器上,路由器b在服务器上查询这个信息。这种通过发布和订阅的形式进行通讯的网络通讯协议,就是叫做MQTT协议。
MQTT协议,是一种基于TCP/IP形式的网络协议。可以以一对一的形式进行发布和订阅,也可以以一对多的形式进行发布的订阅。
在这里插入图片描述在嵌入式中,MQTT协议的发布者,常常是单片机,它采集各种传感器的信息,通过MQTT协议将数据发布到服务器上。而订阅者,则是通过Linux或者java程序编写的可以在电脑或者手机上运行的程序。

二、如何使用MQTT协议通讯

1.官网下载

首先需要登录网站,mqttx.app,下载并安装客户端。
在这里插入图片描述然后选择阿里云或者其他云服务商,注册之后,配置嵌入式设备,通过四个连接参数,输入客户端中就可以进行连接了。
在这里插入图片描述在这里插入图片描述连接上之后,就能在服务器和客户端之间,进行发布和订阅了。

以上,只是利用客户端开验证配置的服务器有没有成功,在验证成功之后,就需要将MQTT协议相关的程序移植到开发板上了。
之后我们需要登入GitHub网站,下载要移植的程序。
https://github.com/eclipse/paho.mqtt.embedded-c
该网站登录下载可能很慢,甚至失败,可在别的地方找资源。
然后就可以把需要的文件加载到程序中了。
在这里插入图片描述

三、什么是FreeRTOS?

在之前的项目中,我们的程序是运行在一个while(1){程序}的无限循环中的。单片机在不断运行,进行轮询。虽然还有中断方式辅助,但这种裸机的运行方式效率比较低,当需要处理的传感器数量多了起来,就难以对付了。
故而要引入RTOS,也就是实时操作系统,它可以以多任务的方式对运行,多效率的提高有很大的帮助。
而FreeRTOS,是RTOS中的一个系统,因为是免费提供的,这里采用这个。
和上面的MQTT一样,我们也需要下载一个官方提供的支持包,在freertos.org下载。然后将其移植。

在这里插入图片描述


总结

在物联网开发中,MQTT和FreeRTOS是必须要掌握的。对台灯这个小项目的改造,并没有用到很复杂的逻辑,但在这个过程中,对MQTT和FreeRTOS,有了最基本的了解。

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: STM32是一款性能优异、功能强大的微控制器。要搭建mqtt_stm32 mqtt协议功能,我们需要先了解MQTT协议MQTT是一种基于发布/订阅模式的轻量级物联网通信协议,可以用于物联网设备之间的互联。 在STM32上实现MQTT协议,我们需要先下载MQTT库文件,并将其导入到STM32工程中。然后,我们可以使用MQTT API函数进行mqtt协议的功能实现。MQTT API函数有连接、订阅、发布等多种功能,并可以根据不同的需求进行二次开发。例如,可以实现定时发布数据、自动连接网络等功能。 在实现mqtt_stm32 mqtt协议功能时,我们需要注意以下几点:首先,要确保使用的MQTT库文件版本能够适配当前的STM32芯片;其次,要根据具体的应用场景选择MQTT服务端,而且要保证连接稳定性和安全性;最后,要注意消息质量的控制,如保证消息的可靠传输、避免消息重复发送等。 总结来说,搭建mqtt_stm32 mqtt协议功能需要掌握MQTT协议的基本知识以及使用MQTT库文件和API函数进行开发的技能。通过不断地实践和优化,我们可以实现高效、稳定、安全的mqtt协议功能,在物联网应用中发挥巨大的作用。 ### 回答2: MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种轻量级的消息传输协议,适合于物联网设备和低带宽、不可靠网络的通信。STM32是一款嵌入式微控制器芯片,具有广泛的应用领域和丰富的外设接口,可以方便地搭建MQTT通信功能。下面介绍STM32搭建MQTT协议功能实现的几个关键步骤。 第一步,选择合适的MQTT库。市面上有很多MQTT库可以选择,如Eclipse Paho MQTT、Mosquitto MQTT等。在选择时应根据自身需求选择相应的库。例如,对于运行在STM32上的MQTT客户端应用程序,可以选择具有小内存占用和低功耗特性的Paho MQTT库。 第二步,配置MQTT参数。 MQTT协议中需要配置一些参数来定义客户端唯一标识符和连接的服务器地址等。对于STM32,可以通过定义宏和结构体来配置这些参数。例如,可以定义一个MQTT_InitTypeDef结构体,用于保存MQTT连接配置参数,以便在连接函数中传递。 第三步,编写MQTT连接功能。STM32通过与MQTT服务器建立TCP连接来实现MQTT通信。可以编写一个连接函数,用于初始化TCP连接并完成MQTT连接握手。在连接握手后,STM32可以使用MQTT Pub/Sub发布/订阅功能来进行数据传输。 第四步,编写数据传输功能。在STM32上,可以使用MQTT客户端API发送和接收MQTT消息。例如,可以编写一个数据发送函数,用于MQTT Pub数据,将数据传输到MQTT中心服务器。同时,还可以编写一个数据接收函数,用于MQTT Sub数据,从MQTT中心服务器接收数据。 第五步,应用其他STM32外设。STM32还可以与其他外设结合使用,例如通信模块、传感器等,实现更多应用场景。例如,可以使用STM32 ADC采集传感器数据,并通过MQTT发布到MQTT服务器。 通过以上几个步骤,可以快速搭建STM32 MQTT功能。但需要注意的是,MQTT协议通信需要考虑网络环境、数据传输安全性等问题,需要进行充分测试和验证,才能确保可靠运行。 ### 回答3: STM32是一种微控制器,可以用来实现MQTT协议MQTT是一种轻量级的消息协议,适用于物联网应用程序。它可以在较低带宽和不稳定的网络中实现可靠的通信,并且可以在设备之间传输小量的数据。在本文中,我们将学习如何在STM32上构建MQTT并实现MQTT协议功能。 首先,我们需要准备一些材料: 1. STM32微控制器 2. MQTT库 3. MQTT服务器 4. 一些连接材料 然后,我们需要安装所需的库文件并设置MQTT服务器。我们可以使用Eclipse或Keil等软件进行开发。 在我们开始构建MQTT之前,我们需要了解一些MQTT协议的关键概念。 1. 代理 代理是一个程序,它可以接收消息并将消息传递给其他代理或设备。在MQTT中,代理可以是客户端,服务器或代理。 2. 主题 主题是消息的地址或标识符。客户端将消息发送到特定主题,并且服务器也会订阅特定主题以接收消息。 3. QoS QoS是消息传递的服务质量等级。在MQTT中,可以使用0、1或2级QoS。 4. 订阅 订阅是客户端将主题与服务器连接的过程。一旦客户端订阅了主题,它就可以接收到该主题的消息。 5. 发布 发布是客户端向服务器发送消息的过程。 接着,我们需要编写代码实现MQTT协议功能。我们可以使用MQTT库API来实现。根据我们的需求,我们可以使用3个级别的QoS来发送和接收消息。 最后,我们连接STM32MQTT服务器并测试。我们可以从服务器向设备发送消息并检查设备是否正确接收消息。 总之,STM32可以很容易地实现MQTT协议功能。使用MQTT,我们可以建立可靠的连接,并在低带宽和不稳定的网络中进行消息传递。这种技术在物联网应用程序中非常实用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值