基于STM32的阿里云物联网平台方案

  前言

  ‍阿里云物联网平台(原名物联网套件,下文两者通用)是阿里云专门为物联网领域开发人员推出的,其目的是帮助开发者搭建安全且性能强大的数据通道,方便终端(如传感器、嵌入式设备、智能家电等)和云端的双向通信。

  https://cn.aliyun.com/product/iot。

  本文描述了基于STM32系列MCU连接阿里云的方案,详细说明了如何使用集成了阿里云物联网套件的STM32扩展开发包。

  硬件概述

  STM32 NUCLEO-L476RG

  从www.st.com搜索关键字NUCLEO-L476RG可以得到此开发板的详细介绍。

  板载STM32超低功耗芯片STM32L476RG,拥有1M字节的Flash和128K字节的SRAM。

  板载Arduino™ UnoV3接口的扩展插座。我们通过该插座给WiFi模组供电。

  板载ST morpho接口的扩展插座,可由此访问全部STM32管脚。我们将通过该插座连接WiFi模组的收、发I/O。

  MXCHIP EMW3080 WiFi 扩展板

  ‍EMW3080 WiFi扩展板也集成了Arduino接口扩展插座,可与NUCLEO-L476RG开发板连接。但是Wifi扩展板上的wifi模块收、发引脚接在了Arduino插座的D0和D1管脚,即下图中的RXD和TXD;而在NUCLEO-L476RG开发板上,Arduino接口插座的D0与D1管脚默认对应的MCU(32L476)的PA2和PA3管脚,正好是USART2接口的Tx和Rx,并已连至STLink,以实现STLINK的USB桥接串口的虚拟串口功能。我们希望保留STLink虚拟串口功能,供调试打印用。因此,需要将Wifi扩展板上Arduino接口的D0与D1 管脚,即WiFi模块的收、发引脚,与MCU的USART1连接(PA9和PA10)。

  跳线如下:

  WiFi扩展板的RxD连接morpho插座(CN10)的管脚33。

  WiFi扩展板的TxD连接morpho插座(CN10)的管脚21。

  实际连接如上图所示。

  板子上原来的跳线都不需要改变,也不需要吹焊solder bridge(默认状态母板上D0、D1没有连到MCU的UART1),只需要几根连接线就可以完成连接。

  软件环境和工具‍‍

  ‍基于STM32的阿里云连接方案开发包,已经集成了Ali物联网套件SDK。

  EWARM IAR开发环境。

  串口工具Tera Term。串口调试工具,显示程序运行信息,以及供用户配置WiFi用户名和密码。

  阿里云物联网套件SDK

  阿里云物联网套件主页:

  https://cn.aliyun.com/product/iot

  阿里云物联网套件SDK源代码在:

  https://github.com/aliyun/iotkit-embedded。

  ‍基于STM32的阿里云物联网套件方案开发包已经集成了Ali物联网套件SDK2.03 。

  https://github.com/aliyun/iotkit-embedded/releases/tag/RELEASED_V2.03。

  在集成过程中,整个SDK目录文件结构保持不变,方便用户在将来自行替换更

  高版本的Ali物联网套件,如下图:

  在云端开通Ali物联网套件

  ‍将设备接入云端,第一步是要在云端开通物联网套件,注册产品和设备。用户可参照阿里云帮助文档里的“阿里云物联网套件> 控制台使用手册 > 产品管理> 设备接入准备”的详细说明,也可以参照以下步骤:

  注册阿里云帐户并实名认证

  从产品中选择“物联网平台”,或直接进入

  http://iot.console.aliyun.com/,开通物联网套件。

  创建产品,获取 productKey

  添加设备,获取

  deviceName、deviceSecret

  创建设备的MQTT主题

  $(PRODECT_KEY)/$(DEVICE_NAME)/data,并设置权限为:设备具有发布和订阅。

  一步一步创建完成后,用户也可以从控制台中的设备管理,点击相应的设备,查看设备基本信息,就可以一次性获得productKey,设备名称(deviceName)以及deviceSecret。

  在设备端替换参数

  ‍开发包中的文件:

  projects\common\shared\Src\mqtt-example.c

  包含有默认的连接云端参数,用户应将其替换成刚刚从云端获得的自有的

  productKey,DeviceName,DeviceSecret.

  使用IAR编译

  ‍在如下开发包中:

  Projects\STM32L476RG-Nucleo\Applications\Cloud\Ali\EWARM

  包含有工程文件路径。用户可直接点击打开,进行编译。开发包使用的工程文件IAR版本为8.20.1。若用户使用较低版本的IAR,仅需要重新构建工程文件,而不需要修改目录结构与源代码。

  调试运行

  ‍‍‍直接使用IAR下载并运行。ST-Link配置已在工程文件中。

  需要使用串口终端程序Tera Term(其他类似串口软件亦可)来配置网络或者察看程序运行的日志。

  数据帧格式配置参数如图所示:

  在串口配置WiFi

  第一次连接,设备端会提示输入WiFi参数:

  1.输入WiFi SSI

  2.选择WiFi安全模式

  3.若有必要输入密码

  ‍首次输入的Wifi AP的用户名和密码会存放在MCU的flash中,以免下次上电重复输入。如果用户更换了Wifi AP,需要使用新的用户名和密码

  ,则可在启动5秒内按住蓝色用户按钮,进行新Wifi AP设置流程

  传感器数据上报

  开发包利用内部温度传感器数据,向云端进行上报并订阅。

  ‍同时程序也支持将LED灯状态上报。用户可按蓝色用户按钮切换LED灯状态,并将其上报至云端。

  ‍物联网设备是否在线,以及上行以及下行详细数据,除了通过设备端的串口输出log信息,还可以在阿里云端物联网套件的“管理控制台”上找到详细日志。

  访问 http://iot.console.aliyun.com 查看“日至服务”,如下图所示:

  ‍基于STM32的阿里云物联网套件方案开发包符合STM32 Cube文件目录结构。

  用户可以将此开发包适配到用户自己的开发板。

  对于新的MCU系列,只需要将相应的STM32 HAL Driver驱动复制到驱动Drivers目录,替换自己板子的BSP驱动;然后在Projects目录复制已有工程,加入特定功能,修改得到新的工程文件。

  ‍事实上此开发包也支持STM32B-L475E-IOT01开发板连接阿里云。用户可以比较开发包中的NUCLEO-L476RG与B-L475E-IOT01目录,了解如何快速将此开发包运行在更多STM32开发板上。

  另外,用户也可以很容易的将符合STM32 Cube架构的中间件集成进最终的应用。

  总结

  ‍这里选取了STM32 NUCELEO-L476RG开发板为例,集成了阿里云物联网套件设备端SDK,然后和云端基于MQTT协议进行双向通信。用户可根据本文以及所提供的源代码,根据需要使用STM32CubeMX生成相应STM32系列的平台代码,连接到阿里云。

上一篇:物联网芯片及硅光设计解决方案技术研讨会

下一篇:安吉星,引领车联网

延伸阅读