你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【实战经验】使用B-L475E-IOT01A探索套件连接AWS IOT平台

[复制链接]
zero99 发布时间:2017-5-31 11:22
使用B-L475E-IOT01A探索套件连接AWS IOT平台
前言
ST新近推出一款物联网套件B-L475E-IOT01A,支持WIFI,蓝牙,SubG, NFC等多种无线连接方式。 而且因为它还支持Arduino接口,所以使用者也可以很方便的通过Arduino接口来扩展其他的无线连接模块,比如GSM模块。
这块开发板使用的是ST低功耗MCU系列中的STM32L475这款芯片,拥有1Mbytes的Flash和128Kbytes的SRAM。板上还集成了64Mbits的Quad-SPI Flash。而且板上还搭载了多种传感器,比如温湿度传感器,高性能3轴磁力计,加速度传感器,陀螺仪,接近传感器和压力传感器等。便于开发者用来进行多种应用的演示。
板子上还有两个数字全角度麦克风,所以用这块开发板,还可以实现语音控制的功能。
配合这个套件,ST还推出了基于Cube库的X-CUBE-AWS软件扩展包。提供了连接到AWS IOT平台,进行订阅消息和向云端发布消息的应用例程,远程固件升级的功能等。可以到ST官网下载, http://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32cube-expansion-software/x-cube-aws.html
ST官方提供了用户手册对该套件进行了详细介绍,但对于第一次接触物联网和AWS IOT平台的使用者来说,对于某些功能可能还是会不知道怎么下手。
所以笔者经过自己的尝试后,在本文中将一步步介绍如何连接到AWS IOT平台进行消息的发布订阅,和进行远程固件升级。

AWS IOT平台
AWS的IOT平台支持各物联网设备之间通过MQTT,HTTP或者Websocket的方式进行双向的,安全的通信。借助AWS IOT,应用程序可以随时跟踪所有设备并与其通信,即使这些设备不在线。
在安全方面,AWS采取双向认证,除了对服务器的认证,AWS提供X.509数字证书来认证IOT设备。IOT设备可以使用AWS为其生成的证书,也可以用其他证书颁发机构(CA)签署的证书。证书分配和激活后,保存在设备端。

AWS IOT例程
B-L475E-IOT01A对应的STM32 AWS IOT软件扩展包中的例程是基于MQTT的方式与AWS进行连接的,MQTT之下应用了mbedTLS中间件来建立安全连接。
MQTT(Message Queuing Telemetry Transport)是一个轻量级的通信协议,为资源受限的网络客户端提供一种简单的方式进行消息的交互,在物联网有着广泛的应用。MQTT使用发布/订阅消息的模式,实现一对多消息分发。MQTT运行在TCP之上,基于客户端-服务器架构。在MQTT协议中,有三种角色:发布者(Publisher),代理(Broker),订阅者(Subscriber)。发布者和订阅者是客户端,一般的设备节点,手机APP都是客户端。代理是服务器,像AWS IOT,百度IOT等都是服务器。设备节点和手机APP向代理(AWS,百度云等)发送消息或者订阅消息。
STM32 AWS IOT软件扩展包中的例程中,L475IOT探索套件通过MQTT连接到AWS IOT平台,向AWS IOT平台发布传感器数据。我们可以通过AWS IOT提供的网页客户端来订阅L475IOT探索套件发布的消息。在下面,将介绍如何一步步搭建并运行这个例程。
硬件连接方面很简单,将B-L475E-IOT01A板子通过ST-LINK接口连接到PC。PC上安装好一个串口调试工具,推荐用Tera Term。另外需要一个可以连接到外网的无线路由器, B-L475E-IOT01A将通过这个无线路由器上网,连接到AWS IOT平台。串口调试工具用来在首次运行时对B-L475E-IOT01A板子上的WIFI模块进行配网和进行AWS的安全配置等,并输出程序运行信息。具体可以参考ST官方文档UM2178。

创建AWS IOT安全证书
在用L475IOT探索套件连接AWS IOT之前,需要先在AWS IOT平台上创建实例(Things),策略(Policy)和证书(Certificates),并且将实例,策略与证书绑定。
Step1:申请一个免费的AWS账户
Step2:登录AWS,进入AWS IoT控制台
           选择注册“Registry”---->实例”Things“。在这一步,我们会新注册一个名为L475_Node的实例.
21.jpg

22.jpg

23.jpg

      L475_Node已经注册完成,接下来需要创建设备证书。
      Step3: 在实例(Thing)L475_Node下,选择安全(Security)。按照下面的步骤创建并激活设备证书。

24.jpg

25.jpg

AWS IOT平台会产生一个设备证书和一组密钥对,在设备认证时使用。另外还需要下载AWS IOT的根证书(root CA)来进行对服务器的认证。所以这里需要将设备证书,密钥对,AWS IOT的根证书下载并保存在一个安全的地方(第3步)。
最后点击Active激活设备证书。
Step4:接下来创建一个Policy并绑定到前面建立的证书。再将证书绑定到前面创建好的实例L475_Node。
26.png

27.jpg

28.jpg

Policy的内容规定了对哪些资源可以做哪些操作。可以填写Action和Resource ARN来一条一条的输入,也可以选择Advance mode一次性输入。如下图,

29.jpg

将下面的policy输入到上图5所指的位置。
30.jpg
31.jpg


创建好Policy后,接下来将其与前面创建的Certificate绑定。
32.jpg

33.jpg
将证书绑定到实例L475_Node,
34.jpg
35.jpg

Step5:完成上面的操作后,在Registry--->Things-->L475_Node下的Interact页面里可以看到服务器的地址。这个就是设备要连接的服务器的地址。需要通过串口助手写到Flash中。
36.jpg

运行AWS IOT例程
现在在云端的设置已经完成,接下来我们打开X-CUBE-AWS软件包中的B-L475E-IOT01对应的AWS例程(\Projects\B-L475E-IOT01\Applications\Cloud\AWS)。
Step1:编译工程,下载到L475探索套件。
37.jpg

Step2: 复位运行程序,通过串口给WIFI模块配网。串口配置为:115200波特率,8位数据位,无奇偶校验,1位停止位。串口调试工具的具体配置见UM2178.
38.jpg
输入无线路由器的SSID和密码
39.jpg

Step3:输入AWS安全配置
按照串口提示,依次输入AWS的根证书,设备证书,设备私钥,服务器地址(在上一章节“创建AWS IOT安全证书”的Step5中记录下来的服务器地址)和设备名称(L745_Node)等。
如果网络连接没有问题,B-L475E-IOT01板子就会自动连接到AWS IOT平台,并发送消息了。在该例程里,设备的状态信息(板上的传感器数据)是发送到AWS的影子设备的主题:“$aws/things/L475_Node/shadow/update”。 “$”开头的主题是AWS IOT平台的系统保留主题。你也可以发送到自己定义的主题。
40.jpg

Step4: 运行AWS网页版客户端来订阅消息。按照下面的步骤打开网页版客户端。
41.jpg

42.jpg

43.jpg
这个网页版的客户端连接到服务器的时候,自动订阅了实例的影子设备的主题“$aws/things/L475_Node/shadow/update/accepted”。只要设备有上传信息,这里都可以自动收到。
33334.png

Step5: 通过网页版客户端控制板子上的LED灯。
        在发布消息区,填写主题和发布的消息内容(JSON格式)
72.png
控制LED灯的消息内容如下,修改”LED_value”的值,就可以控制板子上的LED灯亮灭了。
73.png

远程固件升级
在X-CUBE-AWS软件包里,B-L475E-IOT01的工程里面包括一个远程固件升级的例程,是用HTTP实现的。使用该例程中,升级文件以2K字节的大小下载烧写到Flash。所以要求HTTP服务器支持http/1.1和分段式下载(Progressive http download)。升级文件要求是IAR的sim(simple code file)格式,使用IAR可以直接生成。在软件包里并没有具体说明怎么将升级文件放到http server。这里我们利用AWS的S3来保存升级文件,然后用B-L475E-IOT01板子来测试远程升级的功能。
在AWS的S3里新建一个bucket,上传升级文件到这个bucket下,如下图(具体操作参考AWS的S3使用说明)
47.jpg
点击文件名,获取文件在服务器上的路径,见下图:
这里显示的是https的链接地址,但S3支持http,只需要将地址中的https改为http就可以用了。
48.jpg

在设备端操作,进行远程固件升级:
复位板子,根据串口的提示。在“Firmware version management”阶段,根据提示,选择下载固件,并输入升级文件的URL地址。
49.jpg

50.jpg

51.jpg


前面介绍的是升级文件放在AWS的S3存储服务器上进行升级测试的方法。你也可以通过HTTP File Server来在本地模拟一个HTTP服务器来进行远程固件升级的测试。

参考文档
1. UM2178—Getting started with X-CUBE-AWS Amazon web services IoT software expansion for STM32Cube
2. UM2153-Discovery kit for IoT node, multi-channel communication with STM32L4
3. AWS IoT Developer Guide.


使用B-L475E-IOT01A 探索套件连接AWS IOT平台.pdf (1.83 MB, 下载次数: 214)

评分

参与人数 1 ST金币 +1 收起 理由
talos + 1 很给力!

查看全部评分

收藏 4 评论2 发布时间:2017-5-31 11:22

举报

2个回答
suoma 回答时间:2017-5-31 20:55:31
这个套件多少钱?
torvalds66 回答时间:2017-11-22 12:08:45
B-L475E-IOT01A这个板子整体工作起来,功耗大概多少?

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版