【STM32】 利用paho MQTT&WIFI 连接阿里云

ST联合阿里云推出了云接入的相关培训(基于STM32的端到端物联网全栈开发),所采用的的板卡为NUCLEO-L4R5ZI板,实现的主要功能为采集温湿度传感器上传到阿里云物联网平台,并可以通过物联网平台设置端的温度阈值。对于STM32端的开发,主要涉及两面:基于paho MQTT协议栈连接阿里云;基于Linkkit 协议栈连接阿里云。本文主要讲述基于paho MQTT连接阿里云相关知识。

在这里部讲述MQTT协议相关的知识。通过阅读官方给的demo代码,对比发现,该例程与现在网上查到的移植paho MQTT有很大的不同,阿里及ST设计的这个框架比较好,只需添加对应的底层驱动代码即可能够兼容WIFI、2G/3G/4G、以太网连接阿里云。

一、平台介绍

NUCLEO-L4R5ZI板卡MCU为STM32L4R5ZI;X-NUCLEO-IKS01A3为ST官方的传感器电路板;EXT-AT3080为庆科基于无线模块EMW3080设计WIFI电路板。

二、软件架构

以下是官方给的软件架构,只需设计底层的WIFI驱动即可。

【STM32】 利用paho MQTT&WIFI 连接阿里云_第1张图片

 

网络分层。黄色部分为阿里提供的MQTT接口,蓝色部分为ST官方提供的网络层架构,绿色部分对应着具体的底层操作函数,比如说收发数据、连接网络等。针对不同的硬件,只需更改绿色部分的代码即可。

【STM32】 利用paho MQTT&WIFI 连接阿里云_第2张图片

三、详细介绍

3.1 数据分层

emw3080采用AT指令,在此也简单介绍一下该例程中STM32接收emw3080指令的数据流走向。如下图所示。

【STM32】 利用paho MQTT&WIFI 连接阿里云_第3张图片

 

WiFiRxBuffer位于串口中断中,用于存储WIFI模块发送给模块的所有数据(最原始的数据)。而RxBuffer用于判断AT指令的返回值。socks_buffer用于保存TCP客户端发过来的具体数据(+CIPEVENT:SOCKET,1,10,1234567890),而MQTT_read_buf为MQTT协议栈所需要的数据,这样一来也做到数据分层。

3.2 整体框架

在程序中会定义以下三个变量。

MQTTClient Client;       //MQTT客户端
Network sNetwork;        //MQTT的网络,里面会包含网络soket
net_hnd_t         hnet;  //网络接口定义

那么这三者是如何连接起来的,如下图所示。

该例程中STM32中要实现MQTT收发数据,函数的调用过程见下图。

【STM32】 利用paho MQTT&WIFI 连接阿里云_第4张图片

 

【STM32】 利用paho MQTT&WIFI 连接阿里云_第5张图片

 

你可能感兴趣的:(STM32)