阿里云 IoT HaaS(Hardware as a Service)物联网设备云端一体低代码开发框架集合阿里云、达摩院、平头哥相关技术,基于数亿台物联网设备接入经验,提供积木式硬件开发能力,实现低代码快速开发,帮助中小开发者聚焦业务,实现设备安全上云,加速设备创新迭代。本书主要对 HaaS 开发框架中的技术进行详细的介绍,主要包括 HaaS 云端一体低代码开发框架、国产全自研 AliOS Things 物联网操作系统、物联网云平台、IoT Studio 物联网应用开发新模式、HaaS 轻应用开发新模式,以及轻应用进行 HaaS 云端一体实战等内容。全书覆盖了从 HaaS 硬件生态及积木、物联网操作系统、物联网设备端轻应用开发、物联网设备上云到物联网应用开发新模式的全链路知识,并且结合的都是行业应用新案例,呈现的是通过项目实战积累的技术经验和解决方案,参考价值高。HaaS是阿里云IoT部门针对物联网开发痛点推出的特色解决方案,目前已经在多个行业中有比较广泛的应用,是物联网行业的开发创新模式。本书适合物联网开发者、物联网操作系统爱好者、嵌入式开发者及计算机相关专业学生参考阅读。
眼看到这个题目的时候,想到的句话就是,这不就是物联网界的乐高吗?有框架,有硬件,再加上云端和低代码,让万物互联变得如此简单易行。
看了数遍这本书的书稿之后,越发敬佩不断在物联网领域深耕的技术专家们,敬佩阿里的技术专家们,大平台高见识,能够整合阿里云、达摩院、平头哥技术,基于数亿台物联网设备接入经验创造出IoT HaaS(Hardware as a Service)物联网设备云端一体低代码开发框架,基于此,智能家居,智能办公等场景更普及,让我们的生活工作越来越便捷,有时只要张张嘴就能做到以前得动手动脚才能做的事情。
如果你是物联网从业人员,无论是应用开发者还是产品经理,想在AIoT时代做点事情,一定不能错过这本物联网开发界宝典图书;
如果你刚刚进入物联网开发领域,也一定要仔细研讨这本代表物联网开发界潮流书,让你站得高,看得远。
如果你完全是物联网行业外人士,只是感兴趣,那么读这本书,会帮助你形成对物联网整体开发布局有更全面的拓扑图,有可能会比一般行业内人士更有大局观。
物联网概念的出现已经有几十年了,曾经喧嚣过,也曾经落寞过,起起落落很多次。近几年,万物互联,万物智能又随着AI技术再次火热起来。虽然概念火了,但还是新瓶装旧酒,没有新花样。例如,物联网的经典分层结构仍然是感知层、网络层、平台层和应用层;物联网的端到端全链路也无非是云端、网络、边缘、设备端(包括App端),这些简称云网边端。当然,这些方面没有太大变化恰恰说明了人们对物联网认知的一致性,反而是好事,但也说明了物联网领域这么多年缺乏重大创新。为了解决碎片化问题,提高物联网设备云端一体开发效率,让开发者聚焦业务创新,我们提出了一套全新的物联网开发框架。
在介绍这套开发框架之前,先回顾一下历史。从物联网概念被提出到现在,从来就没有一套统一的开发框架来提高开发效率,开发者都是从零开始做产品、项目的,这些技术沉淀和积累都没有形成框架并共享给全社会使用。而其他很多领域,如前端领域就非常不一样,前端领域有3大开发框架,即Vue、React和Angular。特别是Vue开发框架,在我国甚至全世界都有很多拥趸。其实开发框架并不神秘,它就是一个提高开发效率的工具,并且可以提供更多功能赋能开发者。
看一个真实的案例。我有一个朋友,他创业做了一款共享餐巾纸盒,是如何做的呢?我给大家先介绍一下用户场景,在一个餐厅里,每张桌子上都会有一个共享餐巾纸盒,它是通过Wi-Fi和路由器连接上云的,用户通过App扫描这个纸盒上面的二维码,可以有偿使用里面的餐巾纸。就是这么一个简单的智能硬件,就包含了以下4块工作内容:是硬件阶段,需要制作控制电路板,并且要调试Wi-Fi性能,还要解决供应链交付问题;第二是软件阶段,需要开发相应的硬件驱动;第三是服务阶段,需要投入人力做云端开发;第四是App阶段,需要设计好人机交互界面。做这样一个简单的智能硬件,需要搭建至少10人以上的小团队,因此投入产出比极低,终公司倒闭了。因此,我有一个HaaS(Hardware as a Service)的梦想,即通过HaaS帮助AIoT(人工智能物联网)中小开发者聚焦业务,降低开发低门槛,快速组装软/硬件积木,实现设备安全上云,加速AIoT的创新迭代。
HaaS是一种物联网设备云端一体低代码开发框架,其战略目的是通过数量收敛的硬件积木(如主控板、Wi-Fi BT Combo模组、各种通过HaaS认证的传感器)和丰富、标准的软件积木(包括各种组件、服务)持续降低物联网的开发门槛,让用户(包括C/C 、JavaScript、Python用户)可以快速用软/硬件积木搭建应用,并且不用关心任何硬件调试(如根据硬件ID自动加载硬件驱动代码),而只需关注云端钉(阿里云、设备端及钉钉)的业务逻辑代码。这里的硬件积木主控板需要不断地收敛为一个小集合,降低用户选择成本,但是传感器可以越来越丰富;这里的软件积木是一个应用市场,需要越来越丰富,但是必须标准化,如JSAPI、驱动代码等,一定要达到屏蔽底层硬件细节的目的,不能让用户在这里花费时间调试代码。后,我们需要打造一个供需生态,即帮助中小IHV/ISV(软/硬件积木贡献者)来服务千千万万碎片化的物联网需求。
我们的HaaS开发框架从下往上包含了5个分层,分别是硬件积木、AliOS Things物联网操作系统、软件积木、轻应用框架(JavaScript&Python)和云端积木。HaaS框架要落地,AliOS Things是基础,因为它是解决硬件碎片化问题、屏蔽底层硬件细节的重要的中间层。具体内容在后面还会讲到,这里不再赘述。软件积木包含了诸如Link Kit、OTA、文件访问和存储等各种设备端能力。为了屏蔽软件积木的细节并降低开发门槛,让云端工程师、AI工程师都可以使用软件积木,我们提出了轻应用这个新概念。轻应用可以把JavaScript和Python这样的解释型语言引入嵌入式开发中。这是革命性的,之前还没有成熟的解决方案,有了HaaS,嵌入式开发不仅能由嵌入式工程师来做,任何人都可以来做物联网创新。轻应用支持热更新、热加载。之前的嵌入式C/C 开发需要安装编译器,还要烧录,而我们的轻应用开发由于使用了解释型语言,而且主控板都出厂内置JavaScript和Python解释器,所以开发者不用安装任何编译器,也不用烧录,只要用任何文本编辑器写上很少的几行代码就可以调用丰富的设备端能力,如串口收发、PWM频率控制灯闪烁。当然也可以调用更加丰富、海量的云端资源,如用几行代码就可以调用并完成支付,这在几年前是完全不可想象的。说到这里,就不得不提我们的云端积木了,由于物联网必然是云端一体的,所以未来趋势是更瘦的终端和更丰富的云端能力,如云端提供OTA、支付、TTS、ASR、定位、健康码、AI等,这些组成了能力丰富的云端积木。
介绍完HaaS开发框架,我们来回顾一下前面提到的AliOS Things。我们知道,物联网的几个痛点就是硬件碎片化、软件碎片化、应用场景碎片化,要解决它们,就必须提供一个统一标准的物联网操作系统,AliOS Things就是为此而生的。我们在2017年发布了AliOS Things V1.0,它是一个轻量级的RTOS(实时操作系统)。到今天,我们已经发布了V3.3版本,这是一个弹性内核操作系统,既支持RTOS,又支持微内核,在性能和稳定性之间取得了更好的平衡。我们的AliOS Things支持设备的范围非常宽,既可以支持蓝牙模组、Wi-Fi模组、插座、灯泡等低端无屏设备,又可以支持儿童手表、智慧面板等低端带屏设备(4寸以下),还可以支持广告机、平板、带屏POS机等高端带屏设备。
另外,在介绍硬件积木时,我想提一下连接积木,因为物联网的核心是一定要先解决连接问题,不管是蓝牙、Wi-Fi、ZigBee等局域网连接,还是4G Cat.1、5G等广域网连接,都是物联网重要的连接方式。当然,这些连接都各有其优点和缺点。例如,蓝牙虽然功耗低、配网简单、价格低,但是通信距离近,需要网关支持;Wi-Fi的通信距离虽然可以达到100m以上,但是功耗高,配网复杂;ZigBee虽然稳定性不错,在工业领域有很多应用场景,但是价格高,也仍然需要网关支持。在广域网方面,5G刚刚兴起,价格是4G的10倍,在物联网领域还很难快速普及。目前,速率稍低的4G Cat.1反而是一个不错的选择,特别是现在正处于2G、3G退网的阶段,4G Cat.1逐步取代了2G/3G,因此,4G Cat.1是一个性价比不错的选择。既然称为硬件积木,就是希望大家做硬件就像搭积木一样,拿几个积木就可以搭建一个产品,而不用考虑画原理图、Layout、飞线测试、电烙铁、热风枪、元器件及量产。如果不用我们的积木,要做一个前面提到的共享餐巾纸盒,就需要6~12个月;用了我们的积木,7天就可以做好并接近量产的原型机,极大地提高了开发效率。我们发布了几个经典的硬件积木:HaaS100、HaaS200、HaaS600等。其中,HaaS100是Wi-Fi BT AP(应用处理器,比一般MCU的性能更高的CPU),可以用在工业、农业、商业的各种复杂场景中;HaaS200是Wi-Fi BT的连接加少量控制能力的硬件积木;HaaS600是性价比极高的4G Cat.1模组,可以用在远程控制、DTU、RTU、商业共享中。我们后续还会陆续推出各种HaaS硬件积木,作为不同细分领域的主控、连接单元。当然,这些板子的软件积木,特别是各种驱动(如SPI、I2C、UART、PWM、GPIO等)开发,我们已经提前完成,开发者只要使用轻应用框架灵活调用这些软件积木,就可以快速搭建自己需要的业务逻辑。
后,我想说的是,物联网领域期待一个开发框架已经很久了,现在HaaS的提出只是迈出了一小步,要继续走下去,急需广大开发者的加入。不管是原来的嵌入式开发者,还是JavaScript、Python开发者,只有更好的开发者一起共建生态,物联网领域才会出现一个大家共建、共享、共创的伟大的开发框架,进而让这几十年的技术积累、沉淀赋能所有热爱物联网开发的开发者。
胡俊锋(崮德)
阿里云IoTHaaS技术团队负责人
2022年1月于杭州
第1章 物联网概述 1
1.1 物联网的基本概念 2
1.1.1 物联网的定义 2
1.1.2 物联网分层架构 2
1.2 物联网典型应用场景 3
1.2.1 智能家居 4
1.2.2 智慧城市 4
1.2.3 智慧能源 5
1.2.4 车联网 5
1.2.5 智能物流 5
1.2.6 智能安防 6
1.2.7 智慧医疗 6
1.2.8 智能制造 6
1.2.9 智慧商业 7
1.2.10 智慧农业 7
1.3 常见物联网操作系统 8
1.3.1 uC/OS 8
1.3.2 FreeRTOS 9
1.3.3 LiteOS 10
1.3.4 Linux 10
1.3.5 AliOS Things 12
1.4 物联网无线连接方式介绍 13
1.4.1 无线局域网通信技术介绍 13
1.4.2 无线广域网通信技术介绍 16
1.5 常见物联网开发板 20
1.5.1 Arduino开发板 20
1.5.2 树莓派开发板 21
1.5.3 STM32开发板 23
1.5.4 HaaS EDU K1物联网教育开发板 24
1.6 常见外设接口介绍 26
1.6.1 UART 26
1.6.2 GPIO 27
1.6.3 Flash 28
1.6.4 ADC 29
1.6.5 DAC 30
1.6.6 PWM 30
1.6.7 I2C 31
1.6.8 SPI 33
1.7 常见物联网传感器介绍 35
1.7.1 温湿度传感器 35
1.7.2 人体感应传感器 37
1.7.3 烟雾传感器 38
1.7.4 RFID读卡器 40
1.7.5 陀螺仪 41
1.7.6 光强度及接近传感器 44
第2章 HaaS开发框架 46
2.1 HaaS开发框架介绍 47
2.1.1 HaaS硬件积木简介 48
2.1.2 HaaS自研系统简介 49
2.1.3 HaaS软件积木简介 50
2.1.4 HaaS应用框架简介 52
2.1.5 HaaS云端服务简介 53
2.2 HaaS硬件积木 54
2.2.1 HaaS IoT开发板介绍 55
2.2.2 广域网连接积木4G Cat.1开发板 62
2.2.3 局域网连接积木HaaS200开发板 68
2.2.4 HaaS音/视频积木 70
2.2.5 HaaS生态积木组件 71
2.3 AliOS Things介绍 79
2.3.1 AliOS Things版本与获取 80
2.3.2 AliOS Things的特征 81
2.3.3 典型应用场景 82
2.4 HaaS软件积木 84
2.4.1 AliOS Things内核积木 85
2.4.2 文件系统积木 85
2.4.3 连接积木 85
2.4.4 网络积木 88
2.4.5 多媒体积木 90
2.4.6 HaaS AI积木 91
2.4.7 云服务积木 92
2.5 HaaS轻应用 94
2.5.1 HaaS轻应用概述 95
2.5.2 JavaScript轻应用及Python轻应用 97
2.6 云端工具 98
2.6.1 物联网平台 98
2.6.2 IoT Studio 101
2.7 HaaS解决方案 104
2.7.1 一分钟上云方案 104
2.7.2 HaaS解决方案介绍 111
2.7.3 HaaS解决方案开发流程 113
2.7.4 HaaS解决方案的市场推广 115
2.8 HaaS认证 115
2.8.1 HaaS认证简介 115
2.8.2 认证流程与规范 116
2.8.3 认证检测 117
2.8.4 发布上线 117
2.8.5 注意事项 118
2.9 HaaS技术社区与开发者支持 118
2.9.1 HaaS技术社区 119
2.9.2 HaaS技术视频 120
2.9.3 HaaS官网 121
2.9.4 HaaS开发者钉钉群 122
2.9.5 HaaS训练营 123
第3章 AliOS Things物联网操作系统 124
3.1 系统架构 124
3.2 系统内核 125
3.2.1 内核基础 125
3.2.2 中断管理 128
3.2.3 定时器管理 136
3.2.4 内存管理 146
3.2.5 任务管理 152
3.2.6 任务间的同步与互斥 161
3.2.7 任务间通信 168
3.3 系统组件 171
3.3.1 系统驱动框架 171
3.3.2 网络框架 176
3.3.3 文件系统 188
3.4 CLI命令行调试诊断 197
3.4.1 CLI原理简介 197
3.4.2 常用CLI命令介绍 199
3.4.3 自定义CLI命令 205
第4章 物联网通信协议 209
4.1 低功耗局域网通信 210
4.1.1 常见局域网通信方式介绍 210
4.1.2 蓝牙mesh技术 210
4.1.3 Wi-Fi 技术 230
4.2 低功率广域网通信 243
4.2.1 常见广域网通信方式介绍 243
4.2.2 4G Cat.1 244
4.2.3 NB-IoT 249
4.2.4 LoRa 255
4.3 应用层通信协议 264
4.3.1 MQTT协议介绍 264
4.3.2 MQTT模式与角色 265
4.3.3 MQTT消息 266
4.3.4 MQTT消息服务质量 267
4.3.5 MQTT业务流程 269
第5章 物联网平台 272
5.1 物联网平台简介 272
5.1.1 亚马逊物联网平台 272
5.1.2 微软物联网平台 273
5.1.3 阿里云物联网平台 274
5.2 阿里云物联网平台详解 278
5.2.1 设备接入 278
5.2.2 消息处理 288
5.2.3 数据流转 300
5.2.4 监控运维 309
第6章 IoT Studio 322
6.1 IoT Studio简介 322
6.1.1 IoT Studio的架构和特点 322
6.1.2 IoT Studio功能介绍 323
6.2 IoT Studio项目管理 324
6.2.1 项目介绍 324
6.2.2 产品介绍 325
6.2.3 设备说明 326
6.2.4 空间说明 327
6.2.5 账号说明 328
6.3 IoT Studio应用开发 330
6.3.1 Web可视化开发 331
6.3.2 移动可视化开发 345
6.3.3 业务逻辑开发 350
第7章 HaaS轻应用开发实践 358
7.1 HaaS Studio 358
7.1.1 初识HaaS Studio 359
7.1.2 Python轻应用开发 362
7.1.3 JavaScript轻应用开发 362
7.2 HaaS轻应用Python篇 364
7.2.1 Python轻应用介绍 364
7.2.2 Python轻应用开发指南 368
7.2.3 Python轻应用组件扩展 372
7.2.4 Python轻应用实践 386
7.3 HaaS轻应用JavaScript篇 400
7.3.1 JavaScript轻应用介绍 400
7.3.2 运行原理 400
7.3.3 丰富的组件支持 401
7.3.4 目录结构 402
7.3.5 JavaScript轻应用开发环境 405
7.3.6 JavaScript轻应用开发指南 410
7.3.7 JavaScript轻应用轻量级UI 418
7.3.8 JavaScript轻应用组件扩展 424
7.3.9 JavaScript轻应用实践 424