阿里巴巴的轻量级物联网操作系统及其评估板

阿里云 物联网 AliOS
xukejing
发布时间: 2018-10-07
阅读: 2316

1背景

大家好,我叫徐珂靖,住在冰城,是一个骨灰级工科男,爱好试用各种开发板,也常常写一些小文章记录试用体会,已经在云汉电子社区里与大家很熟啦。

最近,云汉电子社区进了不少开发板,于是我就问社区要了些来玩。其中一块叫AliOS Things DeveloperKit。这款开发板是一款由上海诺行信息技术有限公司基于STM32L496VGT6设计的高性能物联网开发板。它的主要软件平台为开源的AliOS Things,开发者可以基于此快速地开发出各种物联网设备与产品

 板子图.JPG

其中,STM32L496VGT6这款芯片具有高性能、低功耗的特点。其内核为ARM 32Cortex-M4,具有最高80MHZ的主频率,1MB的闪存,320KBSRAM,最多支持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架构,包括:ARMC-SkyMIPSrl78rx600xtensa等。同时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: 硬件适配层,像是WiFiUART

Ø  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

正面图.JPG

它的系统框图如下:

板子系统框图.JPG

本章小结:这小节只是背景介绍。大家不用太在意板子处理器的硬件细节,因为AliOS Things的SDK是多平台通用的,已经做了多层封装。

  

2上电

我们拿到一款板子,在插上micro USB接口以前,最好先要看一下原理图,分析一下供电方式和电源要求,以免造成不必要的损坏。供电部分的原理图如下:

电源芯片.JPG

在上图中,我们可以发现,来自USB5V经过开关DC-DC芯片降压到3V后为MCU和大部分外设供电。ETA8120 是一颗高效率的可调节输出的降压DC-DC,轻载高效,输出最大电流为2A,采用SOT23-6封装。3V经过LDO转换至 1.8V,采用的是 SGM2019线性稳压芯片,输出最大电流为 0.3A1.8V 只供给温湿度传感器使用,需要的电流较小。

  

板子有两个USB接口。一个为USB ST-link接口,作用为软件下载/调试/系统供电输入口。另一个为USB OTG,用户可以外接USB设备,USB2.0 设备接入,最大供电电流1000mA。这里,我们要注意一下跳线帽的位置;因为ST-LinkWiFi模块共用了一个USB接口,通过跳线帽切换。原理图如下:

 stlink与wifi切换.JPG

下面,我们用一个5VUSB电源给板子供电,板子成功点亮。出厂有个小小的DEMO程序。

 开箱.JPG

本章小结:即使大家没看原理图,收到板子后就直接把USB线怼上去了,也不会炸的。

 

3连网

既然是物联网开发板,连网肯定是首先要考虑的了。WIFI 模块采用的是由上海诺行生产的MW31模块。这是一款功能齐全、 集成度高、功耗低的低成本嵌入式WI-FI模组。模块采用BK7231方案实现 WI-FI 无线网络接入。

注意,虽然BK7231的资料里是用AT命令控制的,但是对于这块板子,AT命令是没有用的。比如输入常规的AT命令查询WIFI固件,它不认识。

 AT命令并没有识别.JPG

当然,AT+WJAP配网命令也是不能用的。小伙伴们不用走这条路了,是个死路。

   

后来咨询了厂商,配网应该用 netmgr connect ssid password命令。

连接成功后,可以看一下路由器的DHCP列表,比如我这里的是192.168.1.105

 dhcp列表.JPG

然后可以ping一下看看网络是否通。

 ping.JPG

以上通过后,可以进入下一步操作。

如果没有通过,也没关系。大不了不联网嘛,玩单机呗。

   

本章小结:连接无线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交叉工具链,放到下面这个目录(来自老鸟的关怀)。

交叉工具链放到对应目录.JPG

如果这步没有做的话,待会儿编译时候有可能能自动下载好交叉编译工具。为什么是有可能呢,因为编译脚本会检测电脑上是否有交叉编译环境,没有的话,自动去码云下载。然而自动下载经常失败。

    

老铁,别挣扎了。乖乖手动下载吧。。。。

  

最后,去github下载AliOS-ThingsSDK源码。

   

又要划重点了,注意版本!注意版本!注意版本!

   

AliOS-Things现在还处于成长阶段,代码经常做大的变动,如果找不到DEMO目录,请上AliOS-ThingsQQ群提问。

对于1.3以前的版本,历程在项目根目录下的example

打开代码.JPG

然而,现在最新版的mastar目录是这样的,稍微有些惊人变化,example不见了对不对。

mast目录.JPG

  

别怕,历程藏在app下面的example目录。

2.0打开代码.JPG

上图中,我们打开一个helloworld看看。

  

把这个helloworld编译并把获得的bin文件烧录到板子上看看。(编译报错的话,可以去AliOS-ThingsQQ群里提问)

串口打印了下面信息:

helloworld输出.JPG

本章小结:要Python2,不要Python3,Python3卸掉。另外gcc-arm-none-eabi自己手动去下。历程目录自己去源代码里找,具体位置会随着版本变的,以程序员小哥的实时的喜好为准,请不要尽信本文。AliOS-Things现在还处于成长阶段,代码经常做大的变动,如果有什么问题,请上AliOS-ThingsQQ群反馈。


5阿里云的云端和设备端设置

阿里云有两种物联网平台,一种是传统的物联网平台,地址如下:

https://iot.aliyun.com/products/linkKits

另一种是一站式开发服务,LinkDeveloper,简称LD,地址如下

https://iot.aliyun.com/products/linkdevelop

在这篇文章里,我们试用一下前者(当然,后者也是可以用的)。

  

与大多数物联网服务一样,我们先要进入服务控制台,把项目、设备和数据给定义好。

我们先创建一个产品,名字随意

创建产品.JPG

然后创建一个设备,设备刚创建时候是处于禁用状态的,要点击启用(这步需要手机注册码)。设备还没激活,这没有关系,后面上线一下就好了。

创建设备.JPG

定义消息的topic类,把要用到的消息都加上,没有定义过的消息都会被过滤掉。

定义topic类.JPG

打开消息订阅。(可以不打开)

打开消息订阅.JPG

回到Visual Studio Code打开mqttdemo。找到项目名、项目密码、设备名、设备密码,替换成你刚才在云端配置的。

mqtt例子.JPG

编译后,把bin文件(生成文件可能在out目录里,看代码小哥的心情)烧录到板子上,板子自动重启后会连接云。刷新一下服务端控制台,应该能看到设备上线了,并且也正常激活了。

设备上线.JPG

上行消息也收到了。

上行消息.JPG

好了,剩下的事情,大家可以八仙过海,尽情DIY了。

本章小结:阿里云的物联网服务器有两种(传统物联网服务器和一站式物联网服务器),两种之间的数据互不兼容,请不要混淆。

  

6最后的小结

因为测试时候发现AliOS-Things潜在的坑略微有些多,所以建议新手小白目前先不要轻易尝试这个方案,再等等,等项目成熟了再入手学习。

相较于AliOS-Things,中移OneNet的开发环境和服务控制台更适合新手入门。

当然,物联网基本的玩法都是相通的,当你会了一样以后,可以用相同的套路再转移到其它平台,不用局限于特定的编程IDE或编程语言。

中移麒麟座、开发快Gokit、香蕉派BIT,甚至是网友自制的esp8266或esp32板子,这些优秀的板子虽然属于不同的作者,但都可以通过MQTT连接到阿里云的服务上来。

今天的重点是给大家推荐一款新的物联网操作系统框架,及其评估板。从代码结构来看,AliOS-Things的框架很清晰,还是很值得高端玩家学习的。

下面附上代码结构框图

代码结构框图.JPG

和项目文件夹结构(这是1.3版本的,2.0的已经改了)

文件夹结构.JPG


原创作品,未经权利人授权禁止转载。详情见转载须知 举报文章

点赞 (0)
xukejing 擅长:其他应用
评论(0)

登录后可评论,请 登录注册

相关文章推荐
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回

我要举报该内容理由

×
请输入您举报的理由(50字以内)