1背景
大家好,我叫徐珂靖,住在冰城,是一个骨灰级工科男,爱好试用各种开发板,也常常写一些小文章记录试用体会,已经在云汉电子社区里与大家很熟啦。
最近,云汉电子社区进了不少开发板,于是我就问社区要了些来玩。其中一块叫AliOS Things DeveloperKit。这款开发板是一款由上海诺行信息技术有限公司基于STM32L496VGT6设计的高性能物联网开发板。它的主要软件平台为开源的AliOS Things,开发者可以基于此快速地开发出各种物联网设备与产品
其中,STM32L496VGT6这款芯片具有高性能、低功耗的特点。其内核为ARM 32位Cortex-M4,具有最高80MHZ的主频率,1MB的闪存,320KB的SRAM,最多支持136个高速IO口,还支持SPI,CAN,I2C,I2S,USB,UART等常用的外设接口。关于这块板子更多信息可以参考云汉试用连接http://www.ickey.cc/try/detail/1155.html
AliOS Things是阿里巴巴为物联网设备量身打造的国产操作系统。说到阿里巴巴,小伙伴们应该都很熟悉的,是个做网络销售平台的科技公司。这块开发板,正如它名字里提到的,是为评估AliOS Things操作系统而设计的。其中,AliOS Things发布于2017云栖大会,是 AliOS 家族旗下的、面向IoT领域的、高可伸缩的开源物联网操作系统。AliOS Things 支持多种CPU架构,包括:ARM,C-Sky,MIPS,rl78,rx600,xtensa等。同时AliOS Things也支持相当多的开发板,详情参考这个页面:
https://github.com/alibaba/AliOS-Things/blob/master/board/README.md
AliOS Things致力于搭建云端一体化 IoT 基础设施,具备极致性能、极简开发、云端一体、丰富组件、安全防护等关键能力,并支持终端设备连接到阿里云 Link,可广泛应用在智能家居、智慧城市、工业,新出行等领域。从架构的角度来看,AliOS Things适配了分层架构和组件架构。从上到下,AliOS Things包括以下部分,所有的模块都作为组件的形式存在,每一个组件都有自己的.mk文件,用来描述与其他组件的描述关系,应用程序可以很方便的通过这种形式选择需要的组件:
Ø BSP: 板级支持包,主要由SoC开发商开发和维护
Ø HAL: 硬件适配层,像是WiFi,UART等
Ø Kernel: 包括Rhino RTOS 内核,Yloop, VFS, KV Storage等
Ø Protocol Stack: 包括LwIP TCPIP 协议栈, uMesh mesh networking stack等
Ø Security: 包括TLS, TFS(Trusted Framework Service), TEE(Trusted Exexcution Environment)等
Ø AOS API: AliOS Things 提供给应用软件和中间件的API
Ø Middleware: 阿里巴巴增值和常用的物联网组件
Ø Examples: 手把手的示例代码
今天要介绍的主角就是下图这块AliOS Things DeveloperKit。
它的系统框图如下:
本章小结:这小节只是背景介绍。大家不用太在意板子处理器的硬件细节,因为AliOS Things的SDK是多平台通用的,已经做了多层封装。
2上电
我们拿到一款板子,在插上micro USB接口以前,最好先要看一下原理图,分析一下供电方式和电源要求,以免造成不必要的损坏。供电部分的原理图如下:
在上图中,我们可以发现,来自USB的5V经过开关DC-DC芯片降压到3V后为MCU和大部分外设供电。ETA8120 是一颗高效率的可调节输出的降压DC-DC,轻载高效,输出最大电流为2A,采用SOT23-6封装。3V经过LDO转换至 1.8V,采用的是 SGM2019线性稳压芯片,输出最大电流为 0.3A。1.8V 只供给温湿度传感器使用,需要的电流较小。
板子有两个USB接口。一个为USB ST-link接口,作用为软件下载/调试/系统供电输入口。另一个为USB OTG,用户可以外接USB设备,USB2.0 设备接入,最大供电电流1000mA。这里,我们要注意一下跳线帽的位置;因为ST-Link与WiFi模块共用了一个USB接口,通过跳线帽切换。原理图如下:
下面,我们用一个5V的USB电源给板子供电,板子成功点亮。出厂有个小小的DEMO程序。
本章小结:即使大家没看原理图,收到板子后就直接把USB线怼上去了,也不会炸的。
3连网
既然是物联网开发板,连网肯定是首先要考虑的了。WIFI 模块采用的是由上海诺行生产的MW31模块。这是一款功能齐全、 集成度高、功耗低的低成本嵌入式WI-FI模组。模块采用BK7231方案实现 WI-FI 无线网络接入。
注意,虽然BK7231的资料里是用AT命令控制的,但是对于这块板子,AT命令是没有用的。比如输入常规的AT命令查询WIFI固件,它不认识。
当然,AT+WJAP配网命令也是不能用的。小伙伴们不用走这条路了,是个死路。
后来咨询了厂商,配网应该用 netmgr connect ssid password命令。
连接成功后,可以看一下路由器的DHCP列表,比如我这里的是192.168.1.105
然后可以ping一下看看网络是否通。
以上通过后,可以进入下一步操作。
如果没有通过,也没关系。大不了不联网嘛,玩单机呗。
本章小结:连接无线WIFI这步可能有坑。小伙伴们如果发现AT命令不能用,请不要慌张,这是正常现象。
4开发环境搭建
大多数人用的都是windows,请下载并安装 Visual Studio Code。
虽然我电脑上已经有Visual Studio2015,但还是入乡随俗地装了Visual Studio Code。
因为我深知一条真理:工作环境最好与团队里其他成员一致,避免遇到问题时孤立无援。
然后在Code里安装必要的插件,这一步可以参考这个页面:
https://github.com/alibaba/AliOS-Things/wiki/AliOS-Things-Studio
注意,如果你装了Python3,请卸掉,换Python2。然后照着上面那个网页,用pip安装各种插件。
如果pip安装失败,就把pip更新一下。
如果后面编译代码时候使用了python虚拟环境,提示找不到某些插件;在Code的命令行里用pip装一下插件;如果提示pip版本低了就更新一下pip。
自己去下载windows版的gcc-arm交叉工具链,放到下面这个目录(来自老鸟的关怀)。
如果这步没有做的话,待会儿编译时候有可能能自动下载好交叉编译工具。为什么是有可能呢,因为编译脚本会检测电脑上是否有交叉编译环境,没有的话,自动去码云下载。然而自动下载经常失败。
老铁,别挣扎了。乖乖手动下载吧。。。。
最后,去github下载AliOS-Things的SDK源码。
又要划重点了,注意版本!注意版本!注意版本!
AliOS-Things现在还处于成长阶段,代码经常做大的变动,如果找不到DEMO目录,请上AliOS-Things的QQ群提问。
对于1.3以前的版本,历程在项目根目录下的example。
然而,现在最新版的mastar目录是这样的,稍微有些惊人的小变化,example不见了对不对。
别怕,历程藏在app下面的example目录。
上图中,我们打开一个helloworld看看。
把这个helloworld编译并把获得的bin文件烧录到板子上看看。(编译报错的话,可以去AliOS-Things的QQ群里提问)
串口打印了下面信息:
本章小结:要Python2,不要Python3,Python3卸掉。另外gcc-arm-none-eabi自己手动去下。历程目录自己去源代码里找,具体位置会随着版本变的,以程序员小哥的实时的喜好为准,请不要尽信本文。AliOS-Things现在还处于成长阶段,代码经常做大的变动,如果有什么问题,请上AliOS-Things的QQ群反馈。
5阿里云的云端和设备端设置
阿里云有两种物联网平台,一种是传统的物联网平台,地址如下:
https://iot.aliyun.com/products/linkKits
另一种是一站式开发服务,LinkDeveloper,简称LD,地址如下
https://iot.aliyun.com/products/linkdevelop
在这篇文章里,我们试用一下前者(当然,后者也是可以用的)。
与大多数物联网服务一样,我们先要进入服务控制台,把项目、设备和数据给定义好。
我们先创建一个产品,名字随意
然后创建一个设备,设备刚创建时候是处于禁用状态的,要点击启用(这步需要手机注册码)。设备还没激活,这没有关系,后面上线一下就好了。
定义消息的topic类,把要用到的消息都加上,没有定义过的消息都会被过滤掉。
打开消息订阅。(可以不打开)
回到Visual Studio Code打开mqtt的demo。找到项目名、项目密码、设备名、设备密码,替换成你刚才在云端配置的。
编译后,把bin文件(生成文件可能在out目录里,看代码小哥的心情)烧录到板子上,板子自动重启后会连接云。刷新一下服务端控制台,应该能看到设备上线了,并且也正常激活了。
上行消息也收到了。
好了,剩下的事情,大家可以八仙过海,尽情DIY了。
本章小结:阿里云的物联网服务器有两种(传统物联网服务器和一站式物联网服务器),两种之间的数据互不兼容,请不要混淆。
6最后的小结
因为测试时候发现AliOS-Things潜在的坑略微有些多,所以建议新手小白目前先不要轻易尝试这个方案,再等等,等项目成熟了再入手学习。
相较于AliOS-Things,中移OneNet的开发环境和服务控制台更适合新手入门。
当然,物联网基本的玩法都是相通的,当你会了一样以后,可以用相同的套路再转移到其它平台,不用局限于特定的编程IDE或编程语言。
中移麒麟座、开发快Gokit、香蕉派BIT,甚至是网友自制的esp8266或esp32板子,这些优秀的板子虽然属于不同的作者,但都可以通过MQTT连接到阿里云的服务上来。
今天的重点是给大家推荐一款新的物联网操作系统框架,及其评估板。从代码结构来看,AliOS-Things的框架很清晰,还是很值得高端玩家学习的。
下面附上代码结构框图
和项目文件夹结构(这是1.3版本的,2.0的已经改了)
原创作品,未经权利人授权禁止转载。详情见转载须知。 举报文章
我要举报该内容理由
×