基于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系列的平台代码,连接到阿里云。
下一篇:安吉星,引领车联网