基于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™ Uno V3接口的扩展插座。我们通过该插座给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(L476)的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串口配置

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

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

  

 

  在串口配置WiFi

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

  • 输入WiFi SSID

  • 选择WiFi安全模式

  • 若有必要输入密码

  

 

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

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

  

 

  传感器数据上报

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

  

 

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

  

 

  在云端查看物联网设备状态

  物联网设备是否在线,以及上行以及下行详细数据,除了通过设备端的串口输出log信息,还可以在阿里云端物联网套件的“管理控制台”上找到详细日志。访问http://iot.console.aliyun.com 查看“日至服务”,如右图所示:

  

 

  使用其他STM32开发板

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

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

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

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

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

  

上一篇:郑航电子通信工程学院《物联网技术的发展及其应用》讲座

下一篇:物联网设备固件分析之强势入门教程