Paho MQTT 客户端接入阿里云物联网平台(3)| 学习笔记

简介: 快速学习 Paho MQTT 客户端接入阿里云物联网平台(3)

开发者学堂课程【基于STM32的端到端物联网全栈开发Paho MQTT 客户端接入阿里云物联网平台(3)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/574/detail/7939


Paho MQTT 客户端接入阿里云物联网平台(3)


Paho MQTT客户端介绍以及示例操作

1.软件包和项目结构

2.使用 CubeMX 生成系统初始化框架和代码

3.网络通信的管理(网络通信抽象层和 wifi 驱动)

4.使用 Paho MQTT 客户端协议栈连接阿里云 loT 平台

5.例程参数的存储及 Sensor 数据的读取

X-NUCLEO-IKS01A2 Sensor 扩展板

EXT-AT3080 Wifi 扩展板

节点端系统框图:

image.png

//mcu传感器通过 ifunc 与外部的传感器扩展板进行通信,来读取板上的传感器值。

//通过串口与 wifi 扩展板进行通信,进行wifi的配网,发送温湿度数据,以及接收云端下发的命令等。

//UART 串口连接 STLINK,支持虚拟串口功能,可以与PC端的串口进行通信,历程中,可以通过此串口打印运行的信息到 PC 端的串口工具

//STM32L4R5ZI 上集成有可供用户使用的3led 灯以及一个按钮,可以展示程序运行的状态,报警提示以及启动虚拟串口的输入。

IAR 工程及文件结构:

//I2工程的结构对应各个文件夹的结构

//I2工程中 DRIVERS 目录下包含了 STM32hal 驱动以及 system 板中传感器的驱动代码。

//middlewares 目录下包括 paho.mqtt 协议栈以及 mbedtls 协议栈

//wifi 目录下是 wifi 驱动部分的代码,相关文件在工程文件夹的 src 文件夹下

//AliIoT 目录下是连接 AliIoT 平台的 MQTT 客户端的实现,具体文件在 src 文件夹中的 Ali 文件夹中

//Common 文件是 Flash 操作以及网络接口相关的代码,具体文件在 src 文件夹中的 Common 文件夹中

项目例程软件架构:

应用程序:

1.节点端业务程序

2.阿里云 MQTT 连接适配层

//根据阿里云平台的要求,依照用户提供的三元组信息构建响应的 MQTT 连接参数和主题,再调用底层提供的 API,进行连接和通信

中间件:

1.Paho MQTT embedded C

2.mbedTLSHMAC-SHA1

3.网络接口抽象

//网络接口抽象层对底层的网络驱动接口进行封装,向上提供统一的网络接口函数,将应用层的代码与底层的实际网络接口分开,当用户改变以太网、wifi2/3g 网等不同的连接方式时,不会影响应用层的代码,它与 MQTT 通过网络抽象层向下调用对应的 wifi 驱动完成网络数据的发送和接收。

底层驱动:

1.STM32L4 Cube HAL 硬件抽象层

2.传感器驱动

3.WIFI 模块驱动

//HAL 硬件抽象层向上层软件提供了使用各个外设的接口函数,包括通用或者是扩展属性的 API,上层的中间件以及应用程序都可以调用这些 API 函数操作外设,这样不会让上层的软件不会特别的以来某个 MCU,使程序更具有复用性,可以使用到其他 MCU 系列中。

//STM32L4 Cube 以及传感器驱动层都可以通过 CubeMAX 工具进行图像化配置,自动生成相关的代码

MCU 外设的使用:

WIFI 扩展板的接口定义:

image.png

1.  1NCULEO 板接口号:CN10

2)接口引脚号:14

3)接口引脚名:D1

4STM32引脚:PD8

5STM32外设配置:USART3_TX

2.  1NCULEO 板接口号:CN10

2)接口引脚号:16

3)接口引脚名:D1

4STM32引脚:PD8

5STM32外设配置:USART3_RX

与传感器扩展板的接口定义:

image.png

1.1NCULEO 板接口号:CN7

2)接口引脚号:2

3)接口引脚名:D15

4STM32引脚:PB8

(5) STM32外设配置:I2C1_SCL

2.1NCULEO 板接口号:CN7

2)接口引脚号:4

3)接口引脚名:D14

4STM32引脚:PB9

5STM32外设配置:I2C1_SDA

虚拟串口接口定义:

image.png

连接到 STLINK USB 虚拟串口:

1.1STM32引脚:PG7

2STM32外设配置:LPUART1_TX

2.(1STM32引脚:PG8

2STM32外设配置:LPUART1_RX

USER 按键接口定义:

image.png

(1) NCULEO :蓝色 User 按键

2STM32引脚:PC13

3STM32外设配置:GPIO 外部中单,下降沿触发

4)功能:控制进入虚拟串口输入模式,输入 WIFI 配网,三元组信息

LED 灯的接口定义:

image.png

1.

1NCULEO 板:LD1(绿)

2STM32引脚:PC7

3STM32外设配置:GPIO 输出

4)功能:每次上传温湿度信息时闪烁一次

2.

1NCULEO 板:LD3(红)

2STM32引脚:PB14

3STM32外设配置:TIM15CH1,PWM 输出

4)功能:高温报警提醒

4、Systick 的用途:应用的延时功能,Paho 协议 Timer

使用 CubeMX 初始化系统:

1.  选择 MCU 型号

2.#引脚外设配置(UART/I2C/EXT/TIMER

#时钟配置

#插件配置

3.生成初始化工程

详细步骤:

检查创建工程所依赖的软件包是否已经被正确安装,通过菜单进入软件包的驱动管理

image.png

如果没有安装,可以点击选中,点击 install 进行安装。

下载完毕后点击 ACCESS TO MCU SELECTOR 创建一个新的工程

在搜索栏中进行搜索并在右侧窗口选择对应的型号进行双击,项目就创建成功。

image.png

引脚标签页:

image.png

可以进行外设所需要的配置

时钟配置页面:

image.png

工程管理:

image.png

可以设置要生成的工程相关的配置

工具标签页面:

image.png

提供功耗评估

点击左侧配置修改配置引脚:

image.png

点击该引脚,在弹出的功能单中选择所需要的功能。

外部中断和定时器配置

Timer15配置:

PWM 输出模式:

image.png

使能 EXT13外部中断

系统时钟=120MHz---(预分频=2400-1----50KHz 计数时钟;自动重载寄存器=50000-1;捕获/比较寄存器=25000---周期1s;占空比50%---PWM---红灯0.5秒闪烁间隔

配置引脚:

image.png

配置控制按键和 LED 灯:

1.LED 灯的接口定义:

image.png

2.USER 按键接口定义

配置 TIME15:

image.png

pc 进行外部中断:

image.png

GPIO 口定义用户标签:

image.png

时钟配置:

点击时钟配置标签,进入时钟配置页面

image.png

系统时钟选择 PLLCLK 作为时钟源,选择 MSI 作为输入时钟,设置系统时钟为120HZ,点击回车

image.png

点击左侧 Addtionnal Software,点击其中的插件

勾选所选的组件并对组件进行配置

配置扩展板

点击工程管理页面,进入并进行配置,最后点击右上角的 GENERATE CODE 生成工程:

image.png

打开工程,点击配置 Linker

调整参数放置位置和选择大小。

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
1月前
|
消息中间件 存储 Serverless
【实践】快速学会使用阿里云消息队列RabbitMQ版
云消息队列 RabbitMQ 版是一款基于高可用分布式存储架构实现的 AMQP 0-9-1协议的消息产品。云消息队列 RabbitMQ 版兼容开源 RabbitMQ 客户端,解决开源各种稳定性痛点(例如消息堆积、脑裂等问题),同时具备高并发、分布式、灵活扩缩容等云消息服务优势。
79 2
|
5月前
|
消息中间件 安全 API
《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(1)
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
287 1
《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(1)
|
5月前
|
消息中间件 安全 Apache
《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(4)
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
180 1
《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(4)
|
4月前
|
消息中间件 Java C语言
消息队列 MQ使用问题之在使用C++客户端和GBase的ESQL进行编译时出现core dump,该怎么办
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
4月前
|
消息中间件 存储 监控
消息队列 MQ使用问题之客户端重启后仍然出现broker接收消息不均匀,该怎么办
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
5月前
|
消息中间件 开发工具 RocketMQ
消息队列 MQ产品使用合集之如何关闭客户端的日志记录
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
5月前
|
消息中间件 安全 Apache
《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(2)
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
240 0
《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(2)
|
2月前
|
消息中间件 弹性计算 运维
阿里云云消息队列RabbitMQ实践解决方案评测报告
阿里云云消息队列RabbitMQ实践解决方案评测报告
72 9
|
4月前
|
消息中间件 安全 PHP
消息队列 MQ使用问题之如何获取PHP客户端代码
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
3月前
|
安全 网络性能优化
MQTT 客户端 MQTT.fx 使用说明
MQTT 客户端 MQTT.fx 使用说明
340 0

热门文章

最新文章

相关产品

  • 物联网平台