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一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
2月前
|
消息中间件 DataWorks 物联网
MQTT问题之接入阿里云物联网平台如何解决
MQTT接入是指将设备或应用通过MQTT协议接入到消息服务器,以实现数据的发布和订阅;本合集着眼于MQTT接入的流程、配置指导以及常见接入问题的解决方法,帮助用户实现稳定可靠的消息交换。
172 1
|
8天前
|
消息中间件 存储 算法
RocketMQ学习笔记
RocketMQ学习笔记
49 0
|
9天前
|
消息中间件 传感器 网络协议
阿里云MQTT简介和使用流程
以下是内容的摘要: 该文主要介绍了在阿里云上搭建 MQTT 服务器的步骤。首先,需要注册阿里云账号并进行实名认证。然后,购买阿里云 MQTT 实例,选择合适的类型、地域、连接和消息限制。接着,创建产品和设备,命名并上线,获取 MQTT 连接的相关信息,包括 ProductKey、DeviceName 和 DeviceSecret。通过提供的 MQTT.fx 工具,设置 MQTT 客户端连接参数,包括 Broker 地址、端口、用户名和密码。最后,使用 MQTT.fx 测试连接,实现数据的上报和接收,验证 MQTT 服务器的配置是否成功。
|
12天前
|
网络协议 Java 物联网
阿里云服务器上搭建 MQTT服务
阿里云服务器上搭建 MQTT服务
|
17天前
|
弹性计算 前端开发 Java
使用阿里云 mqtt serverless 版本超低成本快速实现 webscoket 长链接服务器
使用阿里云 MQTT Serverless 可轻松实现弹性伸缩的 WebSocket 服务,每日成本低至几元。适用于小程序消息推送的 MQTT P2P 模式。前端需注意安全,避免 AK 泄露,采用一机一密方案。后端通过调用 `RegisterDeviceCredential` API 发送消息。示例代码包括 JavaScript 前端连接和 Java 后端发送。
162 0
|
21天前
|
传感器 网络协议 中间件
Mqtt学习笔记--交叉编译移植(1)
Mqtt学习笔记--交叉编译移植(1)
18 0
|
1月前
|
消息中间件 API PHP
阿里云OpenAPI RocketMQ 5.0的PHP收发消息文档
【2月更文挑战第23天】阿里云OpenAPI RocketMQ 5.0的PHP收发消息文档
35 7
|
1月前
|
Java Maven
【开源视频联动物联网平台】vertx写一个mqtt客户端
【开源视频联动物联网平台】vertx写一个mqtt客户端
35 1
|
1月前
【开源视频联动物联网平台】vertx写一个mqtt服务端
【开源视频联动物联网平台】vertx写一个mqtt服务端
22 1
|
2月前
|
消息中间件 网络协议 物联网
MQTT协议问题之阿里云物联网服务器断开如何解决
MQTT协议是一个轻量级的消息传输协议,设计用于物联网(IoT)环境中设备间的通信;本合集将详细阐述MQTT协议的基本原理、特性以及各种实际应用场景,供用户学习和参考。
130 1

相关产品

  • 物联网平台