LinkKit SDK 接入阿里云物联网平台(3)| 学习笔记

简介: 快速学习 LinkKit SDK 接入阿里云物联网平台(3)

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

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


LinkKit SDK 接入阿里云物联网平台(3)


目录

一、项目内容简介

二、LinkKit SDK 项目操作示例


一、  例程介绍

1.软件包和项目结构

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

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

4.使用 Linkkit C-SDK 连接阿里云 IoT 平台

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

首先会讲述整个项目的代码结构,项目用到的哪些文件,这些文件分别的作用是什么?

使用 CubeMX 生成系统初始化框架和代码,再在初始工程的基础上继续添加所需的代码,包括 Linkkit C-SDK 等代码都是需要手工加入到工程中,再结合 ST 自己的部分适配文件,将整个数据的网络应用流通。

使用 CubeMX 生成系统初始化框架和代码这部分与第二节区别不大,但是也有新加入的内容,比如中间件的使能和配置,项目例程参数的存储,包括 wifi 热点配置,节点设备三元组,以及传感器数据读取,这里两部分与第二部分内容基本一样。


二、LinkKit SDK 项目操作示例

节点端系统框图:

image.png

//NUCLEO-L4R5ZIX-NUCLEO-IKS01A2-Sensor 扩展板、EXT-AT3080 Wifi扩展板通过 Aruino Uno 接口结合组成

//STM32L4R5ZI 上的GPIO 按钮、LED 灯、STLINK 充当的虚拟串口

//通过 IFUNC 与传感器扩展板通信,读取板上的传感器值

//在该项目例程中,使用到了板上的温湿度传感器,STM32L4R5ZI 通过串口与 wifi 扩展板通信,进行 wifi 配网,发送温湿度数据以及接收云端下发的命令等。

//STM32L4R5ZI 的另外个串口连接到 STLINK,通过它的虚拟串口功能,与 pc 端的串口工具通行。

//NUCLEO-L4R5ZI 板上集成有三个 LED 集成灯,以及一个蓝色的用户按钮。在本项例程中,红灯和绿灯用来指示程序运行的状态,蓝色按钮用来切换程序运行流程,等待用户从串口终端的输入。

IAR 工程及文件结构:

image.png

//Drivers 文件夹下包含了 STM32L4R5ZI HAL 驱动以及 Sensor 板上传感器的驱动文件

//Middewares 分组下包含了阿里 Linkkit C-SDKFreeRTOSMbedTLS 协议栈三大功能中间件

//WIFI 分组下是 WIFI 模块的驱动

//Application 文件下的 Ali 子分组下的需要适配到 HAL 清单在 STM32L4R5ZI 上的实现。

//Shared 分组下是 flash 操作以及网络适配层,这里的适配文件来自 ST,它上接 mbedtls 协议栈,下接 wifi 驱动。在此文件中出现的是 net 通信层的初始化、连接、发送、接收,在这些抽象出来的 API 中,可以用 wifi 驱动去实现,也可以用其他硬件连接方式去进行实现,比如2G/3G的模块或者以太网驱动等。

项目例程软件架构:

应用程序:

1.用户业务程序

2.FREERTOS 适配层

3.Linkkit 连接适配层

4.MbedTLS 适配层

//FREERTOS 是本项目中新增的,CubeMX 原生就集成了 FREERTOS,在项目配置的时候通过在图形界面勾选,可以把它自动包含到项目中

//mbedTLS 本来也是 CubeMX 原生支持的,但只有在芯片选择是带有以太网 IP 的信号时,中间件里才会有 MbedTLS 供用户勾选。

中间件:

1.FREERTOS

2.Linkkit C-SDK

3.mbedTLS

// Linkkit C-SDK 基本实现了第二节里 Paho MQTT 客户端协议栈和 ST 提供的网络通信管理层两个子模块的功能

//mbedtls 协议栈在第三节里仅用到了 TLS 协议栈中建立安全通信的全部功能

底层驱动:

1.STM32L4 Cube HAL 硬件抽象层

2.传感器驱动

3.WIFI 模块驱动

// STM32L4 Cube HAL 硬件抽象层和传感器驱动都可以在 CubeMX 中,通过在图形界面上的勾选来自动把相关代码包含进自动生成的初始工具里。

image.png

//此例程芯片选择的是 STM32L4R5ZI,没有以太网 IP,因此中间件中没有 MbedTLS 供用户选择,需要在初始化 I2工程设置之后,从固件包中的 Middewares 目录下,手工拷贝到目标工程目录下,再手动添加到 I2工程中

//Linkkit C-SDK 目前还没有以插件形式集群到 CubeMX 中,因此也需要自己下载后添加到目标工程里。

MCU 外设的使用:

WIFI 扩展板的接口定义:

1.  1NCULEO 板接口编号:CN10

2)引脚编号:14

3)引脚名:D1

4STM32引脚:PD8

5)外设配置:USART3_TX

2.  1NCULEO 板接口编号:CN10

2)引脚编号:16

3)引脚名:D0

4STM32引脚:PD9

5)外设配置:USART3_RX

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

1.1NCULEO接口编号:CN7

2)引脚编号:2

3)引脚名:D15

4STM32引脚:PB8

5)外设配置:I2C1_SCL

2.1NCULEO板接口编号:CN7

2)引脚编号:4

3)引脚名:D14

4STM32引脚:PB9

5)外设配置:I2C1_SDA

虚拟串口接口定义:

连接到 STLINK USB 虚拟串口:

1.1STM32引脚:PG7

2)外设配置:LPUART1_TX

2.1STM32引脚:PG8

2)外设配置:LPUART1_RX

USER按键的接口定义:

1.(1NCULEO 板:蓝色 User 按键

2STM32引脚:PC13

3)外设配置:外部中断,下降沿触发

4)功能:切换允许流程至等待用户输入 WIFI 配网,三元组等信息

LED 灯的接口定义:

1.1NCULEO 板:LD1(绿)

2STM32引脚:PC7

3)外设配置:GPIO 输出

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

2.1NCULEO板:LD3(红)

2STM32引脚:PB14

3)外设配置:GPIO 输出

4)功能:高温报警提醒

片上外设:

1.1NCULEO 板:N.A

2STM32引脚:N.A

3STM32外设配置:Sysick

4)功能:FreeRTOS 系统滴答

2.1NCULEO 板:N.A

2STM32引脚:N.A

3STM32外设配置:RNG

4)功能:产生真随机数

使用 CubeMX 初始化系统:

步骤一:选择 MCU 型号

步骤二:1.引脚外设配置(UART/12C/EXT

2.时钟配置

3.插件配置

4.FREERTOS 配置

步骤三:生成初始工程

使用 CubeMX 初始化系统:步骤一

MCU 型号:STM32L4R5ZITx

1.  使用 MCU 选项工具

2.  输入型号:STM32L4R5ZI

3.  双击打开项目

引脚和配置:

1.外设使能和配置

2.外设在引脚上的映射

3.中间件的配置

时钟配置:

1.  时钟树参数的智能配置

项目管理:

1.管理初始代码的生成

2.管理初始项目的生成

工具:1.功耗估计

使用 CubeMX 初始化系统:步骤二

将功能落实到实际所用的引脚上:

image.png

1.  查找需要配置的引脚:

2.  选择该引脚上的“串口发送”功能:

使能 I2C:与传感器扩展板通信的 I2C1

参数配置:使用默认配置即可

修改引脚定义:

1.  使能 I2C1

2.  使能并使用默认参数配置:

3.  落实到例程实际所用引脚上:

控制 LED 灯:PC7PB14配置程:GPIO_Output

控制 USER 按键:

1.PC13配置成:GPIO_EXTI13

2.使能 EXT13外部中断

使能 RNG 硬件模块:

image.png

规划 FreeRTOS 的使用:

3个应用任务:

1.Ali_loT_KIT

2.LED_CTRL

3.Sensor_CTRL

5个同步信号量:

1.PublishPropertiesLed

2.PublishAlarmValue

3.PublishAlarmLed

4.RecoverAlarmLed

5.ClearAlarmLed

任务间的同步:

image.png

配置 FREERTOS 的堆大小:

image.png

配置 FREERTOS:使能 xTaskAbortDelay 函数:

image.png

创建任务:任务名/优先级/任务堆栈/任务函数/函数声明

image.png

安装 MEMS 传感器驱动(CubeMX 插件)

选择所需要的传感器(HTS221)及驱动

对温湿度传感器驱动进行 BSP 配置:使用 I2C1

image.png

时钟配置

1.PLL 源选择:MSI

2.系统时钟:120MHz

1.  选择 MSI 作为PLL输入:

2.  选择 PLL 输入作为系统时钟源,输入目标系统时钟值

生成 IAR 初始工程:

image.png

初始 vs.交付:

自动生成 IAR 初始工程文件
用户添加代码:

image.png

从初始工程项目开始:

需要用户手动添加文件:

1.阿里云 loT 平台设备端 C-SDK

2.mbedTLS 协议栈

3.Wifi 模块驱动.

1.应用逻辑

1.新增 include 路径

2.新增预编译宏定义

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
存储 前端开发 安全
LinkKit SDK 接入阿里云物联网平台(1)| 学习笔记
快速学习 LinkKit SDK 接入阿里云物联网平台(1)
737 0
LinkKit SDK 接入阿里云物联网平台(1)| 学习笔记
|
6月前
|
存储 运维 网络协议
【开源物联网平台】物联网设备上云提供开箱即用接入SDK
IOTDeviceSDK是物联网平台提供的设备端软件开发工具包,可简化开发过程,实现设备快速接入各大物联网平台。设备厂商获取SDK后,根据需要选择相应功能进行移植,即可快速集成IOTDeviceSDK,实现设备的接入。
259 0
|
安全 JavaScript Ubuntu
LinkKit SDK 接入阿里云物联网平台(2)| 学习笔记
快速学习 LinkKit SDK 接入阿里云物联网平台(2)
1012 1
LinkKit SDK 接入阿里云物联网平台(2)| 学习笔记
|
传感器 存储 人工智能
LinkKit SDK 接入阿里云物联网平台(4)| 学习笔记
快速学习 LinkKit SDK 接入阿里云物联网平台(4)
604 0
LinkKit SDK 接入阿里云物联网平台(4)| 学习笔记
HH
|
物联网 API 开发工具
物联网平台之python语言的设备端接入、云端sdk集成调用
本文介绍如何调用Python语言的Paho MQTT类库,将设备接入阿里云物联网平台,并进行消息收发。 以及物联网平台提供Python语言的云端SDK供开发人员使用。本文介绍云端Python SDK的安装和配置,及使用Python SDK调用云端API的示例。
HH
880 0
物联网平台之python语言的设备端接入、云端sdk集成调用
|
移动开发 安全 物联网
阿里云物联网平台C-SDK 4.x OTA升级示例
本篇文章演示如何使用C-SDK 4.x Demo 做OTA升级
1142 0
阿里云物联网平台C-SDK 4.x OTA升级示例
|
安全 网络协议 物联网
阿里云物联网平台C-SDK 4.x版本网关子设备如何上报物模型?
物联网设备很多都是微型嵌入式级别的,集成SDK一方面耗费资源、影响设备性能、增加成本,另一方面对于商家来说新入网一款设备带来极大的不便,集成SDK要进行开发(设备厂家要进行额外的定制),需要更新固件程序。所以阿里云物联网平台提供了一种网关-子设备的入网模式,为商家新入网设备提供便利。网关设备属于和物联网平台直连设备,子设备不和物联网平台连接,那么子设备又是如何进行物模型上报(物模型上报指的是设备端将物模型数据发送给物联网平台)呢?尤其是C-SDK(网关集成SDK),官方没有现成的Demo。 此篇文章将阐述C-SDK4.X版本网关子设备上报物模型的业务流程原理和Demo源码。
3180 0
阿里云物联网平台C-SDK 4.x版本网关子设备如何上报物模型?
|
物联网 开发工具 iOS开发
阿里云物联网平台基于iOS Link kit SDK做OTA升级
第一次在平台写文章,如有错误,请多多包涵
532 0
阿里云物联网平台基于iOS Link kit SDK做OTA升级
|
网络协议 Java 物联网
阿里云物联网平台NET SDK实现RRPC服务端调用
本文介绍如何使用NET SDK在本地实现RRPC的服务端调用。
阿里云物联网平台NET SDK实现RRPC服务端调用
|
JavaScript 物联网 Java

热门文章

最新文章

相关产品

  • 物联网平台