基于Azure平台的物联网开发套件——AZ3166物联网开发套件评测
上海庆科和微软合作开发的一款基于Azure平台的IoT开发套件——AZ3166,如果你想体验一下Azure平台,这不失为是一个选择。但同时它还并不是那么的完善。
初探
AZ3166是上海庆科和微软合作开发的一款基于Azure平台的IoT开发套件,板载丰富的外设和传感器。可以作为IoT和智能硬件的开发原型,帮助开发者更快的验证软件方案,使产品能够安全快速的连接到Azure和手机平台,更快推向市场。
AZ3166板卡搭载上海庆科开发的EMW3166-a低功耗Wi-Fi模组,搭配DAP Link(官网的介绍信息是DAP Link调试器,但是我拿到的板子实际是STLink),128x64 OLED, RGB LED以及其他传感器资源。同时,开发板还具有音频处理单元,可以连接到Azure进行音频识别。
简单的对AZ3166的硬件资源做下介绍:
l 无线模: EWM3166(STM32F412 ARM Cortex-M4 + Cypress BCM43362 WIFI)
l 显示: 128x64 OLED
l 音频: 音频编解码器,3.5mm耳机接口
l 传感器: 运动传感器,磁力计,大气压传感器,温湿度传感器
l 扩展接口: 金手指扩展接口中包含25 I/O,其中包含GPIO,I2C, I2S, ADC, Reset, 3V3, GND。
l 调试接: DAP Link (STLink)
l USB : 1x Micro USB
l 电源: 3.3V DC,最大电流1.5A
搭配了这么丰富的硬件资源,软件上自然也不逊色。用户可以从Microsoft Azure,MiCO IoTOS 或者ARM mbed中选择一个自己喜欢的平台进行开发。 Microsoft Azure是以Arduino为基础,增加AZ3166板卡平台支持包搭建的开发环境,入门基础低,可以快速的进行产品原型设计。本文也是在Arduino环境下做测试编写的。值得称赞的是Microsoft编写了一系列中文教程,方便广大国内开发者快速入门。
开箱指南
简单的包装盒内装有AZ3166主板,USB数据线及说明书一份。在说明书的背面印有一个极为酷炫的二维码,是AZ3166入门指南的链接。
AZ3166在启动时按住A或者B键均能够进入WiFi账号密码设置程序。不同的是A模式使用STLINK虚拟出的串口(115200,8N1)作为shell,使用命令行进行设置,而B模式新建一个无密码热点,使用手机或者电脑连接热点之后,打开192.168.0.1 web界面设置WiFi账号密码。需要注意的是,串口shell模式不支持设置带空格的WiFi账号,建议使用web界面设置。
WiFi密码设置无误之后,开机后会首先尝试连接预设置的账号,成功连接之后短暂显示WiFi名称和DHCP获取到的IP地址,之后跳转到软件版本号界面。若当前软件版本非最新,升级方式也很简单。从github上拉取最新固件,拖拽到AZ3166在电脑上虚拟出的U盘即可完成升级。详细的介绍可以参考:https://microsoft.github.io/azure-iot-developer-kit/docs/firmware-upgrading/
之后A和B按键被赋予不同的功能,A键能够显示名人名言,持续按下并松开按键B可逐个测试板卡搭载的传感器。
微软编写了详尽的中文入门文档,介绍如何使用AZ3166,更加详细的步骤请参考:https://docs.microsoft.com/zh-cn/azure/iot-hub/iot-hub-arduino-iot-devkit-az3166-get-started
搭建开发环境
AZ3166提供了Windows和macOS环境下的开发环境,这里仅介绍Windows下的环境搭建。
Windows环境提供了打包好的Zip文件夹(https://aka.ms/devkit/prod/installpackage/latest),其中包含了开发所必须的工具和安装包,其中包括Node.js, Azure CLI, Visual Studio Code, Arduino,ST-Link, AZ3166 Arduino兼容包,VS Code下Arduino扩展等必须的软件。
解压Zip文件之后,用管理员身份运行install.cmd可以自动安装所有必须文件。可能由于我所使用网络的问题,多次安装AZ3166 Arduino兼容包均失败,最后参照手动步骤一节(https://microsoft.github.io/azure-iot-developer-kit/docs/installation/#windows)单独安装该项解决。
在尝试安装Arduino下AZ3166的BSP时,尝试了多次均安装失败,提示Error downloading package_index.json的错误,可以尝试删除C:\Users\yourUserName\AppDAta\Local\Arduino15文件夹解决。详细信息可以参考:https://github.com/arduino/Arduino/issues/4623。
测试项目
在确保AZ3166未连接电脑的情况下,首先启动VS Code并将AZ3166连接到计算机,VS Code能够正确显示AZ3166 已插入。
可能是安装开发环境的问题,并没有像入门指南介绍的那样,VS Code能够自动打开AZ3166的简介页及示例文件夹。不过没关系,我们可以手动打开示例文件夹。按下F1并选择Arduino: Example,选择一个喜欢的例子。
在这里我选择了传感器测试的例子:
按下F5并选择Arduino环境,可以自动完成编译下载,这份示例代码便是板卡预烧入的demo。
粗略的浏览了一下按键A的代码,才发现名人名言是在程序中写死的,之前还误以为是开机之后连接服务器下载的。难怪每次开机之后名言都不会改变。
AZ3166提供了丰富的例程,不仅包含Arduino基本的例子(如Blinky流程灯),还包含AZ3166特有的物联网例程,在本文开头提到的微软编写的入门文档中,有非常详细的介绍,可以一步步的接入Azure云服务。在这里就不在赘述。
总结
先吐槽一下AZ3166的开发环境搭建,虽然微软提供了一个打包好的傻瓜式安装方法,但是在我的电脑上并不能顺利安装。需要手动安装失败的步骤。就像Arduino提示的Error downloading package_index.json错误,虽然解决方法很容易,但是往往需要花费数个小时寻找该问题的解决方案。
Arduino开发环境的确有易用的优点,但是缺点也很明显,整个开发环境相比商业的IDE(Keil, IAR)略显单薄。做一些简单的应用还好,在做大型工程的时候还是有很大不足。虽然Arduino也能用GDB配合VS code进行调试,却需要折腾一番,不能做到商业IDE的那种开箱即用。
在拿到开发板之后,会在空余时间做Zephyr(https://github.com/zephyrproject-rtos/zephyr)下AZ3166的BSP包,希望可以顺利的合并入Zephyr的主线中。