内容简介 · · · · · ·
本书图例丰富,从设备、传感器及传输协议等构成IoT的技术要素讲起,逐步深入讲解如何灵活运用IoT。内容包括用于实现IoT的架构、传感器的种类及能从传感器获取的信息等,并介绍了传感设备原型设计必需的Arduino等平台及这些平台的选择方法,连接传感器的电路,传感器的数据分析,乃至IoT跟智能手机/可穿戴设备的联动等。此外,本书以作者们开发的IoT系统为例,讲述了硬件设置、无线通信及网络安全等运用IoT系统时会出现的问题和必备的诀窍。
作者简介 · · · · · ·
日本NTT DATA集团
河村雅人
从事物联网与机器人的研发,工作内容涉及软件架构、产品选定,甚至还包括焊接、编程等。
大塚纮史
曾参与过应用了机器人中间件和AR交互技术的机器人服务开发,现致力于物联网和机器对机器通信领域,以及与传感器相关的研发。
小林佑辅
致力于技术开发,近年来尝试着把自己在数据分析工作上的经验应用到技术开发中。
小山武士
负责安全技术开发,现在热衷于开发设计可穿戴设备安全性方面的应用技术。
宫崎智也
专注于开发那些用来解决社会问题的机器人服务,从事云机器人基础架构的研发以及服务模型和应用方案的拟定。
石黑佑树
在大学和研究生时期专攻机器人专用中间件的应用和机器人系统集成。进入NTT DATA后一直追求与未来相关的主题,如基于机器人和云的联动技术的植物工厂等。
小岛康平
致力于云机器人基础架构的研发,以及有关物联网和机器人的技术开...
日本NTT DATA集团
河村雅人
从事物联网与机器人的研发,工作内容涉及软件架构、产品选定,甚至还包括焊接、编程等。
大塚纮史
曾参与过应用了机器人中间件和AR交互技术的机器人服务开发,现致力于物联网和机器对机器通信领域,以及与传感器相关的研发。
小林佑辅
致力于技术开发,近年来尝试着把自己在数据分析工作上的经验应用到技术开发中。
小山武士
负责安全技术开发,现在热衷于开发设计可穿戴设备安全性方面的应用技术。
宫崎智也
专注于开发那些用来解决社会问题的机器人服务,从事云机器人基础架构的研发以及服务模型和应用方案的拟定。
石黑佑树
在大学和研究生时期专攻机器人专用中间件的应用和机器人系统集成。进入NTT DATA后一直追求与未来相关的主题,如基于机器人和云的联动技术的植物工厂等。
小岛康平
致力于云机器人基础架构的研发,以及有关物联网和机器人的技术开发,力图在服务型机器人的社会应用方面做出贡献。
目录 · · · · · ·
1.1 物联网入门 2
1.1.1 物联网 2
1.1.2 物联网的相关动向 2
1.2 物联网所实现的世界 3
1.2.1 “泛在网络”社会 3
· · · · · · (更多)
1.1 物联网入门 2
1.1.1 物联网 2
1.1.2 物联网的相关动向 2
1.2 物联网所实现的世界 3
1.2.1 “泛在网络”社会 3
1.2.2 “物”的互联网连接 4
1.2.3 机器对机器通信所实现的事 5
1.2.4 物联网实现的世界 6
COLUMN 蓬勃发展的标准化活动 8
1.3 实现物联网的技术要素 9
1.3.1 设备 9
1.3.2 传感器 13
1.3.3 网络 15
1.3.4 物联网服务 17
1.3.5 数据分析 20
第2章 物联网的架构 23
2.1 物联网的整体结构 24
2.1.1 整体结构 24
2.1.2 网关 25
2.1.3 服务器的结构 27
2.2 采集数据 28
2.3 接收数据 30
2.3.1 数据接收服务器的作用 30
2.3.2 HTTP协议 30
COLUMN REST API 31
2.3.3 WebSocket 32
2.3.4 MQTT 33
2.3.5 数据格式 40
COLUMN 图像、语音、视频数据的处理 43
2.4 处理数据 44
2.4.1 处理服务器的作用 44
2.4.2 批处理 44
2.4.3 流处理 47
2.5 存储数据 49
2.5.1 数据库的作用 49
2.5.2 数据库的种类和特征 50
2.6 控制设备 54
2.6.1 发送服务器的作用 54
2.6.2 使用HTTP发送数据 54
2.6.3 使用WebSocket发送数据 55
2.6.4 使用MQTT发送数据 55
COLUMN 事例:面向植物工厂的环境控制系统 56
第3章 物联网设备 59
3.1 设备——通向现实世界的接口 60
3.1.1 为什么要学习设备的相关知识 60
3.1.2 连通性带来的变化 60
3.2 物联网设备的结构 63
3.2.1 基本结构 63
3.2.2 微控制器主板的类型和选择方法 68
COLUMN 开源硬件的兴起 80
3.3 连接“云”与现实世界 80
3.3.1 与全球网络相连接 80
3.3.2 与网关设备的通信方式 81
3.3.3 有线连接 82
3.3.4 无线连接 84
3.3.5 获得电波认证 89
3.4 采集现实世界的信息 89
3.4.1 传感器是什么 89
3.4.2 传感器的机制 90
3.4.3 传感器的利用过程 94
3.4.4 放大传感器的信号 95
3.4.5 把模拟信号转换成数字信号 96
3.4.6 传感器的校准 98
3.4.7 如何选择传感器 100
3.5 反馈给现实世界 103
3.5.1 使用输出设备时的重要事项 103
3.5.2 驱动的作用 104
3.5.3 制作正确的电源 107
3.5.4 把数字信号转换成模拟信号 108
3.6 硬件原型设计 110
3.6.1 原型设计的重要性 110
3.6.2 硬件原型设计的注意事项 111
3.6.3 硬件原型设计的工具 114
COLUMN 挑战制作电路板! 115
3.6.4 原型制作结束之后 116
第4章 先进的感测技术 119
4.1 逐步扩张的传感器世界 120
4.2 先进的感测设备 120
4.2.1 RGB-D传感器 122
4.2.2 自然用户界面 129
4.3 先进的感测系统 132
4.3.1 卫星定位系统 133
4.3.2 准天顶卫星 144
4.3.3 IMES 145
4.3.4 使用了Wi-Fi的定位技术 147
4.3.5 Beacon 150
4.3.6 位置信息和物联网的关系 152
第5章 物联网服务的系统开发 153
5.1 物联网和系统开发 154
5.1.1 物联网系统开发的问题 154
5.1.2 物联网系统开发的特征 155
5.2 物联网系统开发的流程 157
5.2.1 验证假设阶段 158
5.2.2 系统开发阶段 159
5.2.3 维护应用阶段 159
COLUMN 收益共享 160
5.3 物联网服务的系统开发案例 161
5.3.1 楼层环境监控系统 161
5.3.2 节能监控系统 164
5.4 物联网服务开发的重点 166
5.4.1 设备 167
5.4.2 处理方式设计 175
5.4.3 网络 183
5.4.4 安全性 185
5.4.5 应用与维护 192
5.5 面向物联网服务的系统开发 195
第6章 物联网与数据分析 197
6.1 传感器数据与分析 198
6.2 可视化 200
6.3 高级分析 207
6.3.1 高级分析的基础 207
COLUMN 机器学习和数据挖掘 216
6.3.2 用分析算法来发现和预测 216
6.3.3 预测 217
6.4 分析所需要的要素 221
6.4.1 数据分析的基础架构 221
6.4.2 CEP 224
6.4.3 Jubatus 225
COLUMN 分析的难度 227
第7章 物联网与可穿戴设备 229
7.1 可穿戴设备的基础 230
7.1.1 物联网和可穿戴设备的关系 230
7.1.2 可穿戴设备市场 233
7.1.3 可穿戴设备的特征 237
7.2 可穿戴设备的种类 239
7.2.1 可穿戴设备的分类 239
7.2.2 眼镜型 243
7.2.3 手表型 248
7.2.4 饰品型 250
7.2.5 按照目的来选择 253
7.3 可穿戴设备的应用 261
7.3.1 可穿戴设备的方便之处 261
7.3.2 消费者应用情景 262
7.3.3 用于企业领域 265
COLUMN 硬件开发的近期动向 268
第8章 物联网与机器人 271
8.1 由设备到机器人 272
8.1.1 机器人——设备的延续 272
8.1.2 机器人的实用范围正在扩大 273
8.1.3 构建机器人系统的关键 274
8.2 利用机器人专用中间件 275
8.2.1 机器人专用中间件的作用 275
8.2.2 RT中间件 276
8.2.3 ROS 278
8.3 连接到云端的机器人 280
8.3.1 云机器人 280
8.3.2 UNR-PF 281
8.3.3 RoboEarth 284
8.4 物联网和机器人的未来 287
后记 289
参考文献 291
作者 296
· · · · · · (收起)
"图解物联网"试读 · · · · · ·
这是一本解说物联网的书。物联网整体服务的开发需要灵活应用传感器和各类设备,本书就是为那些准备从事这种开发的硬件和软件工程师编写的。 相信大家近来也经常听到物联网这个词吧。物联网是通过互联网把我们身边的各种物品连在一起,并提供服务的一种机制。它可以给大家的生活带来如同科幻电影一般的体验。 一方面,物联网利用的技术是以现有Web 服务中使用的技术和互联网为基...
丛书信息
喜欢读"图解物联网"的人也喜欢的电子书 · · · · · ·
喜欢读"图解物联网"的人也喜欢 · · · · · ·
图解物联网的书评 · · · · · · ( 全部 3 条 )
> 更多书评 3篇
读书笔记 · · · · · ·
我来写笔记-
物联网的原理是从安装在这些物品和设备上的传感器处收集信息,并通过互联网对其加以灵活运用。要想应用传感器,除了传感器的知识以外,我们还需要掌握硬件和软件的知识、用于分析传感器数据的知识等。本书内容包括用于实现物联网的架构、传感器的种类以及能从传感器获取的信息等基础知识,并进一步介绍了感测设备原型设计所必需的Arduino等主板及这些主板的选择方法,连接传感器的电路,传感器的数据分析,乃至物联网跟智能手机...
2022-06-24 20:35:18
物联网的原理是从安装在这些物品和设备上的传感器处收集信息,并通过互联网对其加以灵活运用。要想应用传感器,除了传感器的知识以外,我们还需要掌握硬件和软件的知识、用于分析传感器数据的知识等。本书内容包括用于实现物联网的架构、传感器的种类以及能从传感器获取的信息等基础知识,并进一步介绍了感测设备原型设计所必需的Arduino等主板及这些主板的选择方法,连接传感器的电路,传感器的数据分析,乃至物联网跟智能手机/可穿戴设备的联动等。
物联网整体服务的开发需要灵活应用传感器和各类设备。物联网是通过互联网把我们身边的各种物品连在一起,并提供服务的一种机制。一方面,物联网利用的技术是以现有Web服务中使用的技术和互联网为基础的。另一方面,为了了解传感器和各类设备的用途,我们需要掌握一些相关的硬件及嵌入式软件知识。物联网的英语是Internet of Things,缩写为IoT,这里的“物”指的是我们身边一切能与网络相连的物品。例如您身上穿着的衣服、戴着的手表、家里的家用电器和汽车,或者是房屋本身,甚至正在读的这本书,只要能与网络相连,就都是物联网说的“物”。物联网就是“物”之间通过连接互联网来共享信息并产生有用的信息,而且无需人为管理就能运行的机制。
图1.1 物联网的相关市场创建物联网市场的要素,那就要提到通信模块价格趋向低廉以及云服务的普及。(Azure智能系统服务)的解决方案,它负责用云技术实现数据管理和处理,以及通信管理等功能。
◆ 1.2 物联网所实现的世界
图1.2 泛在网络可以让人们随时随地访问网络能搭载在机器上的超低功耗传感器投入市场、无线通信技术进步等,都促使除了电脑、服务器和智能手机等传统连接互联网的IT相关设备以外,各种各样的“物”也可以连接互联网。
图1.3 连接互联网的各种各样的“物”先进感测技术的普及实现了人类对现实世界的掌握和预测,通过实时且海量地搜集人、物、社会和环境的数据,也有望进行新型社会基础设施的构建,例如强化产业竞争力、建设都市和社会制度、监测灾害等异常情况。
◆ 1.3 实现物联网的技术要素
设备指的是一种“物”,它上面装有一种名为传感器的电子零件,并与网络相连接。比如大家拿着的智能手机和平板电脑就是设备的一种。这些设备起着两个作用:感测和反馈。感测指的是搜集设备本身的状态和周边环境的状态并通知系统设备是利用传感器这种电子零件来实现感测的。设备的另外一个作用是接收从系统发来的通知,显示信息或执行指定操作(图1.8)。
系统会基于从传感器处搜集到的信息进行一些反馈,并针对现实世界采取行动。反馈有多种方法。大体分成如图1.9所示的3种方法,分别是可视化、通知,以及控制。利用“推送通知”,系统就能检测到“物”的状态和某些活动,并将其通知给设备。利用“控制”,系统就可以直接控制设备的运转,而无需借助人工。传感器负责把物理现象用电子信号的形式输出。通过传感器输出的电子信号,系统就能够获取现实世界的“物”的状态和环境的状态。
还有一种东西叫作传感器节点,它把传感器本身置入环境中搜集信息。传感器节点是集蓝牙和Wi-Fi等无线通信装置与电池为一体的传感器。我们把这些传感器连接到一种叫作网关的专用无线路由器来进行传感器数据的搜集(图1.11)。
在把设备连接到物联网服务时,网络是不可或缺的。不仅要把设备连接到物联网服务,还得把设备连接到其他设备。物联网使用的网络大体上分为两种:一种是把设备连接到其他设备的网络,另一种是把设备连接到物联网服务的网络(图1.12)。
1. 把设备连接到其他设备的网络
无法直接连接到互联网的设备也是存在的。我们通过把设备连接到其他设备,就能通过其他设备把这些不能连接到互联网的设备连接到互联网。前面我们介绍的传感器节点和网关正是两个典型的例子。蓝牙和ZigBee是两种具有代表性的网络标准。它们是用无线连接的,利用的通信协议也是固定的。这些协议的特征有采用擅长近距离通信的无线连接、低功耗、易于嵌入嵌入式设备等。
要把设备连接到其他设备,除了1对1之外,还可以采用1对N、N对N的方式连接。特别是N对N连接的情况,我们称这种情况为网状网络(图1.13)。有一种与网状网络对应的通信标准,名为ZigBee。通过采用N对N的通信方式,设备可以一边接管其他的设备,一边进行远程通信。除此之外它还有一个优点,那就是即使有一台设备发生故障无法通信,其他设备也会代替它来执行通信。
图1.13 设备之间的网络连接2. 把设备连接到服务器的网络
把设备连接到物联网服务的网络时,会用到互联网线路。3G和LTE等移动线路最为常用。除了现在Web服务中广泛使用的HTTP和WebSocket协议以外,还有一些专为机器对机器通信和物联网而产生的轻量级协议,如MQTT等。
1.3.4 物联网服务
物联网服务有两个作用:一是从设备接收数据以及发送数据给设备;二是处理和保存数据(图1.14)。
图1.14 Web系统的作用1. 数据交换
设备和物联网服务的通信方法大致分为两种:同步传输和异步传输(图1.15)。在同步传输的情况下,设备发送数据时会把数据发送给物联网服务。接下来直到物联网服务接收完数据之前,不管设备向物联网服务发送多少次数据,都算作一次传输。反过来,物联网服务在执行对设备的反馈时,则是先由设备向物联网服务发送请求消息,然后物联网服务会响应请求并将消息发送给设备。就这种方法而言,直到设备发送请求之前,物联网服务都不能把消息发送给设备。但是这种方法只适用于不知道设备IP地址的情况,因为就算不知道设备的IP地址,只要设备发送了请求,物联网服务就能把消息发送给设备。在异步传输中,设备会把数据发送给物联网服务,每发送一次,就算作一次传输。此外,从物联网服务向设备进行传输时,无需等待设备发来的请求,可以在任意时间点执行发送。采用这个方法能在物联网服务规定的任意一个时刻发送消息。但是,物联网服务需要预先知道发送消息的设备的IP地址。
图1.15 Web系统和设备的通信>> 处理和保存数据
处理和保存数据的操作包括把从设备接收到的数据保存到数据库,以及从接收到的数据来判断如何控制设备。
从设备接收到的数据不只有能用计算机简单处理的数值型数据,根据要实现的内容,还包含图像、语音、自然语言这些很难直接用计算机处理、没有被结构化的数据。我们把这种数据叫作非结构化数据。处理时,有时也会把那些易于用计算机处理的数据从非结构化数据中提取出来,例如把表示图像和语音特征的值提取出来。这些信息会被保存到数据库中。
设备按照所提取数据的判断逻辑来决定反馈的内容,例如基于某个房间的温度数据来决定空调的开关状态和目标温度。这些处理和保存的方法大体上分为两种:一种是对保存的数据定期进行采集和处理的批处理,另一种是将收到的数据逐次进行处理的流处理(图1.16)。
图1.16 保存和处理数据的时机>> 1.3.5 数据分析
数据分析的代表性方法有两种,分别是统计分析和机器学习。统计分析是用数学手法通过搜集到的大量数据来明确事物的联系性的方法。
◆ 第2章 物联网的架构
实现物联网时,物联网服务大体上发挥着两个作用。第一是把从设备收到的数据保存到数据库,并对采集的数据进行分析。第二是向设备发送指令和信息。一个是设备,另一个是网关,再来就是服务器。关于设备的基本结构和使用的技术,我们会在第3章详细说明。因此本章并不涉及设备。我们来详细看一下用怎样的机制才能实现网关和服务器。
图2.1 物联网的整体结构网关指的是能连接多台设备,并具备直接连接到互联网的功能的机器和软件。选择网关时有几项重要的标准:
1. 接口:第一重要的是用于连接网关和设备的接口。网关的接口决定了能连接的设备,因此重点在于选择一个适配设备的接口。有线连接方式包括串行通信和USB连接。串行通信中经常用的是一种叫作D-SUB 9针(pin)的连接器,而USB连接中用到的USB连接器则种类繁多。无线连接中用的接口是蓝牙和Wi-Fi(IEEE 802.11)。此外,还有采用920 MHz频段的Zigbee标准,以及各制造商们的专属协议。
2. 网络接口:我们用以太网或是Wi-Fi、3G/LTE来连接外部网络。网络接口会影响到网关的设置场所。
3. 硬件:相对于一般计算机而言,网关在CPU和内存这些硬件的性能方面比较受限。我们需要确定让网关做哪些事情,也需要考虑到它的硬件性能。
4. 软件:人们主要使用Linux操作系统来运行网关。虽然有很多种用于服务器的Linux,不过,网关上搭载的Linux是面向嵌入式的。
在功能方面,物联网服务大体上可分为3个部分,本书分别称它们为前端部分、处理部分,以及数据库部分。首先,前端部分包括数据接收服务器和数据发送服务器。数据接收服务器接收设备和网关发来的数据,转交给后续的处理部分。数据发送服务器则刚好相反,它负责把从处理服务器接收到的内容发送给设备。通常情况下,Web服务的前端部分只接受HTTP协议。而物联网服务的前端部分则需要根据连接设备的不同来匹配HTTP以外的协议。使用者需要考虑到协议的实时性和通信的轻量化,以及能否以服务器为起点发送数据。处理部分负责处理从前端部分接收到的数据。这里的“处理”指的是分解数据、存储数据、分析数据、生成发给设备的通知内容,等等。数据处理包括批处理和流处理等,批处理即把数据存入数据库之后一并进行处理,而流处理是逐次处理从前端部分收到的数据。使用者需要根据处理内容和数据特性来灵活使用这些“处理”。最后是数据库。这里的数据库不只会用到关系数据库,还会用到NoSQL数据库。当然,使用者需要根据想存储的数据和想使用的方法来选择数据库。
◆ 2.2 采集数据
网关是一台用于把不能直接连接到互联网的设备转发连接到互联网的设备。再往细了说,网关是由3种功能构成的。这3种功能分别是连接设备功能、数据处理功能和向服务器发送数据的功能。
>> 连接设备:设备和网关是通过各种各样的接口连接的。当通过传感器终端连接时,多数情况下是传感器单方面持续向服务器发送数据。
>> 生成要发送的数据:把从设备接收到的数据转化成能发送给服务器的格式。在表示从设备发送到网关的数据时,也有把4位二进制数(如二进制数据和BCD码)替换成一位十进制数数据来表示的(图2.5)。不把每台设备发来的数据直接发送给服务器,而是将大量数据整合在一起再发送给服务器。这么做有以下两个原因。第一,通过整合数据能减少数据的附加信息,减少数据量。第二,通过一并发送数据能减轻访问物联网服务时对服务器造成的负担。
>> 发送数据给服务器:向物联网服务发送数据。此时,需要根据服务器来决定发送数据的时间间隔和发送数据的协议。
◆ 2.3 接收数据
很多种方法可以从设备把数据发送给服务器,其中具有代表性的包括以下两种方法。
● 准备一个使用了HTTP协议的Web API来访问设备(如通常的Web系统)
● 执行语音和视频的实时通信(如WebSocket和WebRTC)
除此之外,还出现了一种名为MQTT的、专门针对物联网的新型通信协议。
设备用HTTP的GET方法和POST方法访问服务器,把数据存入请求参数和BODY并发送。在Web服务的世界里,有一种思路叫作RESTful。REST是一种接口,它为特定的URL指定参数并执行访问,作为其响应来获取结果。它通过用多个HTTP方法访问一个URL,来对一个URL执行获取和注册数据。这样一来,URL的作用就易于理解了。在发送语音数据等连续的数据,以及发生与服务器的相互交换时,就能使用WebSocket了。
MQTT是一种能实现一对多通信(人们称之为发布或订阅型)的协议。它由3种功能构成,分别是中介(broker)、发布者(publisher)和订阅者(subscriber)(图2.8)。中介承担着转发MQTT通信的服务器的作用。相对而言,发布者和订阅者则起着客户端的作用。发布者是负责发送消息的客户端,而订阅者是负责接收消息的客户端。订阅者和中介总是处于连接状态,而发布者则只需在发布时建立连接,不过要在短期内数次发布时,就需要保持连接状态了。因为中介起着转发消息的作用,所以各个客户端彼此之间没有必要知道对方的IP地址等网络上的收信地址。MQTT还实现了轻量型协议。因此它还能在网络带宽低、可靠性低的环境下运行;又因为消息小、协议机制简单,所以在硬件资源(设备、CPU和内存等)受限的条件下也能运行,可以说是为物联网量身定做的协议。
>> QoS是Quality of Service(服务质量)的简称。这个词在网络领域表示的是通信线路的品质保证。
>> 订阅者只能接收在订阅之后发布的消息,但如果发布者事先发布了带有Retain标志的消息,那么订阅者就能在订阅后马上收到消息。
>> Will有“遗言”的意思。由于中介的I/O错误或网络故障等情况,发布者可能会突然从中介断开,Will就是专门针对于这种情况的一个机构,它用于定义中介向订阅者发送的消息
发布者在连接中介时会用到CONNECT(连接)消息,连接时对其指定Will标志、要发送的消息以及QoS。这样一来,如果连接意外断开,Will消息就会被传递给订阅者。另外,还有一个标志叫作Will Retain。通过指定这个标志,就能跟前面说的Retain达到同样的效果,即在中介处保存消息。
Clean session用于指定中介是否保留了订阅者的已订阅状态。用CONNECT消息连接时,订阅者把Clean session标志设定为0或1。0是保留session,1是不保留session。
数据就是通过协议来进行交换的。通过Web协议来使用的数据格式中,具有代表性的包括XML和JSON。MessagePack的数据格式虽然跟JSON相似,其数据却保留了二进制的形式
◆ 2.4 处理数据
>> 数据的处理方法,它可以归纳成以下4种:数据分析、数据加工、数据保存以及向设备发出指令
>> 批处理的方法是隔一段时间就分批处理一次积攒的数据。一般情况下是先把数据存入数据库里,隔一段时间就从数据库获取数据,执行处理。批处理的重点在于要在规定时间内处理所有数据。
>> 需要处理从数量庞大的设备发来的传感器数据和图像等大型数据,这被称为“大数据”。不过,通过使用一种叫作分布式处理平台的平台软件,就能高效地处理数兆、数千兆这种大型数据了。具有代表性的分布式处理平台包括Hadoop和Spark。
>> Apache Hadoop是一个对大规模数据进行分布式处理的开源框架。Hadoop有一种叫作MapReduce的机制,用来高效处理数据。MapReduce是一种专门用于在分布式环境下高效处理数据的机制,它基本由Map、Shuffle、Reduce这3种处理构成(图2.21)。
>> Hadoop对于每个被称为节点的服务器执行MapReduce,并统计结果。首先是分割数据,这里的数据指的是各个服务器的处理对象。最初负责分割数据的是Map。Map对于每条数据反复执行同一项处理,通过Map而发生变更的数据会被移送到下一项处理,即Shuffle。Shuffle会跨Hadoop的节点来把同种类的数据进行分类。最后,Reduce把分类好的数据汇总。
也就是说,MapReduce是一种类似于收集硬币,按种类给硬币分类后再点数的方法。用Hadoop执行处理的时候,为了能用MapReduce实现处理内容,使用者需要下一番工夫。
另外,Hadoop还有一种叫分布式文件系统(HDFS)的机制,用于在分布式环境下运行Hadoop。HDFS把数据分割并存入多个磁盘里,读取数据时,就从多个磁盘里同时读取分割好的数据。这样一来,跟从一台磁盘里读出巨大的文件相比,这种方法更能高速地进行读取。如上所述,如果使用MapReduce和HDFS这两种机制,Hadoop就能高速处理巨型数据。
>> Apache Spark也和Hadoop一样,是一个分布式处理大规模数据的开源框架。Spark用一种叫作RDD(Resilient Distributed Dataset,弹性分布数据集)的数据结构来处理数据
>> RDD能够把数据放在内存上,不经过磁盘访问也能处理数据。而且RDD使用的内存不能被写入,所以要在新的内存上展开处理结果。通过保持内存之间的关系,就能从必要的时间点开始计算,即使再次计算也不用从头算起。根据这些条件,Spark在反复处理同一数据时(如机器学习等),就能非常高速地运行了。
>> 对物联网而言,传输的数据都是一些像传感器数据、语音、图像这种比较大的数据。批处理能够存储这些数据,然后导出当天的设备使用情况
>> 流处理是不保存数据,按照到达处理服务器的顺序对数据依次进行处理。
◆ 2.5 存储数据
>> RDB用一种叫作SQL的专门用来操作数据库的语言来保存和提取数据。另一方面,NoSQL则是用SQL以外的各种方法来操作数据库。本书还会介绍键值存储(Key-Value Store,简称KVS)和文档型数据库等种类的数据库。
>> 关系数据库具备一种叫作表格的表格型数据结构,其用途在于存储数据库,使用者用SQL语言来对其执行数据的提取、插入以及删除。
>> 键值存储属于NoSQL数据库的一种。NoSQL是一种不使用SQL的数据库的统称。键值存储,就是把一种叫作“值”(value)的数据值,和能够一对一特定“值”的“键”(key)的集合保存在一起。
>> 还有把数据保存在内存里的键值存储,以及把数据保存在硬盘里的键值存储。前者一方面能够高速保存数据,而另一方面,因为数据是放在内存上的,所以软件停止运行的时候,原先保存的内容就会丢失。因此前者适合作为缓存来使用。而后者保存数据的速度虽然不及前者,但即使软件停止运行,数据也不会丢失。有一种叫作Redis的键值存储,它具备前后两者的性质,在通常情况下它是把数据存储在内存上的,但在任何时间都能够把数据保存到硬盘。因此,它既能够高速执行存储,也能永久保存数据。
>> [插图]文档型数据库文档型数据库和键值存储一样,都属于NoSQL数据库的一种。文档型数据库能以XML和JSON这种结构化文档的格式保存数据。特别是近年来,有一种叫作MongoDB的文档型数据库很受欢迎,它以JSON的格式保存数据(图2.29)。
>> MongoDB能够直接保存JSON格式的数据,还能用JSON的值进行检索。这样一来,在用JSON交换传感器的信息时,就能直接对数据进行保存和使用。即使增加了新的数据条目或是新增了设备,也能直接以JSON格式保存数据,因此,不需要像RDB那样考虑表格的结构。非常适合用于无法读出设备的数量和数据的种类等情况,以及保存传感器等设备的数据。
◆ 2.6 控制设备
>> 发送服务器的目的在于向设备发送数据并控制设备。发送服务器可以使用2.3节介绍过的HTTP、WebSocket、MQTT协议和数据格式。发送服务器靠在1.3.4节提到过的两种方法来运行,一种是通过设备申请来发送数据的同步传输;另一种是由发送服务器在任意时间发送数据的异步传输。
>> 要实现数据发送,HTTP是最简单的方法。在这个方法里,发送服务器是等待接收HTTP请求的Web服务器。设备向这台服务器申请发送数据,作为响应,服务器把数据发给设备(图2.30)。[插图]图2.30 通过HTTP发送数据使用者需要定期从设备执行轮询连接。采用此方法的原因主要有以下两个。原因一:无法确定唯一地址,例如无法给设备设定全局IP地址等。这种情况下,发送服务器就不知道应该把数据发送给哪台设备了。原因二:考虑到设备频繁断电和移动线路的传输费用。此时,设备没有持续连接网络。即使设备已经连接过网络,但只要没有持续连接,那么,即使发送服务器执行了发送数据的操作,也发不到设备那里去(图2.31)。
>> 使用WebSocket时,需要用设备连接发送服务器,并确立WebSocket连接。只要建立了一次WebSocket连接,就能实现从发送服务器和客户端发送数据。
>> 前文介绍了HTTP和WebSocket,它们采用的方法都是由设备访问发送服务器。就这些方法而言,只要客户端没有发出申请,数据就不会被发送。当然使用者也可以在设备上建立HTTP和WebSocket协议,由服务器来连接设备。不过,一旦增加了设备,服务器想管理所有设备就相当困难了。
>> 运用MQTT,并且发挥了发布/订阅模型的优点。使用MQTT时的发送服务器如图2.32所示。[插图]图2.32 通过MQTT发送数据首先设备作为订阅者,向MQTT中介进行订阅。然后,发送服务器则是发布者,同样向中介进行发布。这样一来,发送服务器只需要把确定的数据加在主题上发送就行了,发送服务器和设备都不需要知道彼此的地址。只要知道中介的地址,就能够实现通信。一旦订阅者断开,中介就会负责在断开时发送通知,并在重新连接时再次发送数据。
◆ 第3章 物联网设备
>> 一方面,物联网设备本身的结构非常简单,提供的是一种与云服务或智能手机等外部机器组合在一起的一体化服务。这种情况下,用于设备的应用程序能够很轻松地得到更新,在产品发布后还能一边从用户处获取反馈,一边不断改良软件(包括设备自身的固件)。此外,还能够在云端对大量的设备信息进行整合和加工,以一个应用程序为接口向用户提供有益的信息。
◆ 3.2 物联网设备的结构
>> 图3.3 物联网设备的基本结构
>> 微控制器由内存(用于存储程序和保存临时数据)、CPU(用于执行运算处理和控制)以及外围电路(包含与外部的接口,以及计时器等必要的功能)构成
>> 在实际使用微控制器时,需要串行端口和USB等各种接口以及电路等。
>> 现在大部分电子产品都搭载有微控制器。打个比方,请想象一个冰箱(图3.6)。冰箱内部能够达到某个目标温度,是因为微控制器里写有一个程序,这个程序的作用就是监视连接在微控制器输入端子上的温度传感器的状态,并控制制冷机以达到目标温度。利用传感器测量和判别信息就叫作感测。
>> 驱动器是通过输入信号来实现控制的驱动装置的统称。例如具有代表性的伺服电机,它能够根据输入的电子信号把电机转动到任意的角度。
>> 网关机器和设备之间存在无线连接和有线连接两种连接形式,这两种连接形式又存在多种连接方法。
>> 过去,微控制器主板的目标在于搭载单片机,实现结构的简约性和高通用性。与此相对,能用在移动电话和智能手机上的高性能CPU、完善的I/O端口,以及配备了网络接口的超微型计算机,即单板计算机等设备陆续登场。使用者不但能通过Linux操作系统来运行这些单板计算机,还能像控制以往的微控制器那样控制I/O引脚(pin)。微控制器主板和计算机的分界线正在逐渐模糊。
>> [插图]H8型微控制器主板
>> 嵌入式开发更是大多都采用C语言。这是因为比起一般的计算机,单片机在规格方面(如内存和时钟数等)受到种种制约,从高效运用硬件资源的角度来说,多数情况下需要编写位操作和寻址等接近硬件操作的功能。
>> [插图]Arduino
>> Arduino最大的特征就在于它开发的简易性。只要用USB线连接Arduino主板和PC,开发环境就搭建完成了。编写程序和写入主板则通过Arduino IDE(图3.11)来完成。开发是用类似于C++的Arduino语言来进行的。
>> [插图]Raspberry Pi
>> Raspberry Pi是一款搭载有ARM处理器的单板计算机
>> 开发者设计Raspberry Pi的主要目的都是想把它当作计算机来使用,因此,除了USB端口、声音影像输入输出端口、以太网端口等输入输出端口外,使用者还能通过microSD卡等外部存储器来连接Raspberry Pi。从搭载了GPU这点也能看出来,开发者的初衷是把它连接到显示器当作PC来使用。另外Raspberry Pi还安装有Debian类Raspbian操作系统,标准支持Python。从Raspberry Pi 2 model B开始,Raspberry Pi的CPU就是四核处理器了,并宣布支持Windows 10。作为一个能实现多种应用程序的平台,Raspberry Pi备受瞩目。
>> 虽然和传感器等设备直接连接时需要输入模拟信号(详细情况会在后面说明),但Raspberry Pi只能接受数字输入方式。为了处理模拟信号,需要通过A/D转换电路把模拟信号转换成数字信号,并连接到输入端口。
>> [插图]Beagle Bone Black
◆ 3.3 连接“云”与现实世界
>> 与物联网设备相比,网关设备的硬件结构大多比较丰富,有的还支持再次发送数据和保存部分数据等功能。另外,网关设备还支持高级加密及数据压缩,在需要保证数据传输的安全性时,采用网关无疑是一个明智之选。
>> 物联网设备和网关设备进行通信的方式有很多种,既有有线的也有无线的。
>> 选择的标准包括通信时能够使用的协议、通信模块的大小、耗电量,等等。
>> 3.3.3 有线连接
>> [插图]以太网以太网连接方式采用网关设备和以太网电缆进行有线连接。
>> 说到缺点,则包括终端要在一定程度上具备丰富的执行环境(如单板计算机),以及尺寸容易偏大,设置场所受限等。
>> [插图]串行通信串行通信连接方式是指采用RS-232C等串行通信来连接其他设备。
>> 使用RS-232C串口时,设备大多使用D-SUB 9针端口(图3.22)。如果网关设备也有串行端口,那么就能用RS-232C串口线直接连接设备来进行通信。
>> [插图]USB
>> 在连接网关的时候,多数情况下跟计算机一样,采用一种叫Type-A的插头。
>> USB有多种规格,每种规格传输数据的速度都不相同
>> 3.3.4 无线连接
>> 通过Wi-Fi接入点就能够连接网络。
>> 所有无线连接方式都会面对的情况,那就是需要在安装设备的应用程序时考虑到通信断开的情况,例如先把数据保存在内部,等能连接上的时候再一口气发送过去等,这点工夫还是要费的。
>> 和蓝牙4.0(后文再叙述)相比,Wi-Fi耗电量高,所以不适合那些需要长时间进行通信的设备。
>> 3G/LTE连接方式是通过移动运营商的通信线路来连接网络的。只要从运营商购买SIM卡,再把SIM卡插入设备里就能够通信了。
>> 采用这种连接方式时,只要在信号范围内就能连接上网络,不需要像Wi-Fi那样去在意接入点的设置。
>> [插图]蓝牙蓝牙是一种近距离无线通信标准
>> [插图]IEEE 802.15.4/ZigBee
>> IEEE 802.15.4/ZigBee是一种使用2.4 GHz频段的近距离无线通信标准。其特征是虽然传输速度低,但是与Wi-Fi相比,其耗电量较少。
>> 要把ZigBee跟PC、智能手机联动,就需要给这些设备连接专用的接收器。跟蓝牙相比,这是ZigBee一个非常大的缺点,因为蓝牙上普遍标准安装了接收器
>> [插图]易能森
>> 易能森是一个总称,它指的不仅是一种通信标准,还包括感测设备本身(图3.25)。
>> 易能森旗下设备齐全,包括运动传感器、开关、温度传感器、开关门传感器等形形色色的设备,这些设备都是利用能量采集技术自主发电的。
>> 在不同国家开发和使用无线通信设备时,是需要获得认证的。
◆ 3.4 采集现实世界的信息
>> 表3.4 具有代表性的传感器
>> 每种传感器根据其用途而内置有不同的检测元件(图3.26)。检测元件这种物质的电子特性会根据周围环境的变化而变化。
>> 检测的方法大体上分为两种。第一种方法是用输出电压的变化来表示环境的变化。例如,力觉传感器就是依靠一个叫作应变仪的金属力觉元件来发挥作用的(图3.27)。对传感器施加力,应变仪就会产生微小的变形。因为金属的阻值(输出电压)会根据形变而变化——这是金属的性质——所以只要让一定量的电流流过应变仪,那么根据欧姆定律(电压=电阻×电流),输出电压的值就会变化。例如,把应变仪安装在桥梁和高层建筑物的支柱上,就能感测到细微的变形。只要通过网络把采集到的这些数据汇集到服务器,就能持续监测基础设施了。
>> 第二种方法是用输出电流的变化来表示环境的变化。例如会对光产生反应的光电二极管,只要一照射到光,这种半导体元件就会像太阳能电池那样在两个端子间产生电动势和电流(图3.28)。变异是作为电流变化输出的,但实际上是用一种叫运算放大器的IC把电流变化转换成电压变化的。就结果而言,跟刚才第一种方法情况相同,也是用电压的变化体现环境的变化。
>> 图3.31 处理传感器信号的流程
>> 3.4.4 放大传感器的信号
>> 3.4.5 把模拟信号转换成数字信号
>> 把传感器获取的测量值用连续的电子信号表示出来,就是模拟信号。想用PC处理模拟信号,就需要进行模拟/数字(A/D)转换,把模拟信号转换成离散值,即数字信号。A/D转换操作分成以下3个步骤。
● 采样(sampling)用某个频率来区分模拟输入信号,获取值
● 量化把采样后的值近似表现为离散值
● 编码(coding)把量化后的数值编码成二进制代码
>> 传感器把测量好的结果用电子信号(电压)的形式输出。因为我们无法直接从电子信号中获取想测量的参数,所以就需要一个公式,来把测算的数值转换成参数。例如,在使用红外线测距传感器的情况下,就需要输出电压和距离的关系图。
>> 表3.5 传感器的性能指标
◆ 4.3 先进的感测系统
>> 传感器不只是一个电子零件,还“作为设备”而存在着。然而当代传感器不仅限于这个层面,其中还存在靠多个装置协作来获取信息的机制,也就是说还存在“作为系统”的传感器。
>> GPS是一款利用人造卫星测量位置的传感器。
>> 基础轨道是由24颗人造卫星负责的,事实上用于GPS的人造卫星约有30颗左右,第25颗及以后的卫星则用于提升可靠性和精确度。
◆ 第5章 物联网服务的系统开发
>> 图5.1 物联网系统是由众多领域的技术构成的
>> 就算是小规模的物联网服务,也需要多方面的知识。除了在服务器端运行的应用程序外,还需要掌握构成设备的硬件、嵌入式软件、连接设备与传感器的网关、无线通信技术和网络等多方面的知识
◆ 5.3 物联网服务的系统开发案例
>> 图5.6 楼层环境监控系统的系统结构
◆ 5.4 物联网服务开发的重点
>> 如果积累的数据量不多,那么获取数据的时间和查找速度都不会有问题,但是如果积累的数据量变多,那么还可能会产生数据库访问速度变慢,应用程序变卡等问题(图5.17)。
◆ 第6章 物联网与数据分析
>> 分析大体上可分为3种:基于采集的“可视化”分析,基于统计分析和机器学习等高级分析技术的“发现”分析和“预测”分析(图6.2)。
>> 可视化分析指的是对积累的数据进行加工,根据需求通过采集和图表形式把数据的内容加工成人眼能看懂的形式
>> 发现分析就是在可视化所使用的采集分析的基础上,再通过统计分析和机器学习等高级的方法来发现数据的趋势、规律和结构等。
>> 预测分析即从过去积累的数据中找出数据固有的趋势和规律,以掌握今后可能会发生的状况,知晓未来。
◆ 6.4 分析所需要的要素
>> 出于保存大型数据和图像、语音等非结构化数据的目的,也有人在使用Hadoop的HDFS。HDFS能将多台机器的存储空间虚拟地集中在一起,从而构建一个容量巨大的存储空间。
另外,通过应用MapReduce功能,还能对积累的数据进行分布式处理。利用Hadoop的好处就是能够利用一个叫作Apache Mahout的机器学习库,这个库能在Hadoop的MapReduce上实现机器学习,因此Hadoop被认为是一个兼备积累、加工、分析这3种功能的、非常有用的基础架构。
回应 2022-06-24 20:35:18
-
物联网的原理是从安装在这些物品和设备上的传感器处收集信息,并通过互联网对其加以灵活运用。要想应用传感器,除了传感器的知识以外,我们还需要掌握硬件和软件的知识、用于分析传感器数据的知识等。本书内容包括用于实现物联网的架构、传感器的种类以及能从传感器获取的信息等基础知识,并进一步介绍了感测设备原型设计所必需的Arduino等主板及这些主板的选择方法,连接传感器的电路,传感器的数据分析,乃至物联网跟智能手机...
2022-06-24 20:35:18
物联网的原理是从安装在这些物品和设备上的传感器处收集信息,并通过互联网对其加以灵活运用。要想应用传感器,除了传感器的知识以外,我们还需要掌握硬件和软件的知识、用于分析传感器数据的知识等。本书内容包括用于实现物联网的架构、传感器的种类以及能从传感器获取的信息等基础知识,并进一步介绍了感测设备原型设计所必需的Arduino等主板及这些主板的选择方法,连接传感器的电路,传感器的数据分析,乃至物联网跟智能手机/可穿戴设备的联动等。
物联网整体服务的开发需要灵活应用传感器和各类设备。物联网是通过互联网把我们身边的各种物品连在一起,并提供服务的一种机制。一方面,物联网利用的技术是以现有Web服务中使用的技术和互联网为基础的。另一方面,为了了解传感器和各类设备的用途,我们需要掌握一些相关的硬件及嵌入式软件知识。物联网的英语是Internet of Things,缩写为IoT,这里的“物”指的是我们身边一切能与网络相连的物品。例如您身上穿着的衣服、戴着的手表、家里的家用电器和汽车,或者是房屋本身,甚至正在读的这本书,只要能与网络相连,就都是物联网说的“物”。物联网就是“物”之间通过连接互联网来共享信息并产生有用的信息,而且无需人为管理就能运行的机制。
图1.1 物联网的相关市场创建物联网市场的要素,那就要提到通信模块价格趋向低廉以及云服务的普及。(Azure智能系统服务)的解决方案,它负责用云技术实现数据管理和处理,以及通信管理等功能。
◆ 1.2 物联网所实现的世界
图1.2 泛在网络可以让人们随时随地访问网络能搭载在机器上的超低功耗传感器投入市场、无线通信技术进步等,都促使除了电脑、服务器和智能手机等传统连接互联网的IT相关设备以外,各种各样的“物”也可以连接互联网。
图1.3 连接互联网的各种各样的“物”先进感测技术的普及实现了人类对现实世界的掌握和预测,通过实时且海量地搜集人、物、社会和环境的数据,也有望进行新型社会基础设施的构建,例如强化产业竞争力、建设都市和社会制度、监测灾害等异常情况。
◆ 1.3 实现物联网的技术要素
设备指的是一种“物”,它上面装有一种名为传感器的电子零件,并与网络相连接。比如大家拿着的智能手机和平板电脑就是设备的一种。这些设备起着两个作用:感测和反馈。感测指的是搜集设备本身的状态和周边环境的状态并通知系统设备是利用传感器这种电子零件来实现感测的。设备的另外一个作用是接收从系统发来的通知,显示信息或执行指定操作(图1.8)。
系统会基于从传感器处搜集到的信息进行一些反馈,并针对现实世界采取行动。反馈有多种方法。大体分成如图1.9所示的3种方法,分别是可视化、通知,以及控制。利用“推送通知”,系统就能检测到“物”的状态和某些活动,并将其通知给设备。利用“控制”,系统就可以直接控制设备的运转,而无需借助人工。传感器负责把物理现象用电子信号的形式输出。通过传感器输出的电子信号,系统就能够获取现实世界的“物”的状态和环境的状态。
还有一种东西叫作传感器节点,它把传感器本身置入环境中搜集信息。传感器节点是集蓝牙和Wi-Fi等无线通信装置与电池为一体的传感器。我们把这些传感器连接到一种叫作网关的专用无线路由器来进行传感器数据的搜集(图1.11)。
在把设备连接到物联网服务时,网络是不可或缺的。不仅要把设备连接到物联网服务,还得把设备连接到其他设备。物联网使用的网络大体上分为两种:一种是把设备连接到其他设备的网络,另一种是把设备连接到物联网服务的网络(图1.12)。
1. 把设备连接到其他设备的网络
无法直接连接到互联网的设备也是存在的。我们通过把设备连接到其他设备,就能通过其他设备把这些不能连接到互联网的设备连接到互联网。前面我们介绍的传感器节点和网关正是两个典型的例子。蓝牙和ZigBee是两种具有代表性的网络标准。它们是用无线连接的,利用的通信协议也是固定的。这些协议的特征有采用擅长近距离通信的无线连接、低功耗、易于嵌入嵌入式设备等。
要把设备连接到其他设备,除了1对1之外,还可以采用1对N、N对N的方式连接。特别是N对N连接的情况,我们称这种情况为网状网络(图1.13)。有一种与网状网络对应的通信标准,名为ZigBee。通过采用N对N的通信方式,设备可以一边接管其他的设备,一边进行远程通信。除此之外它还有一个优点,那就是即使有一台设备发生故障无法通信,其他设备也会代替它来执行通信。
图1.13 设备之间的网络连接2. 把设备连接到服务器的网络
把设备连接到物联网服务的网络时,会用到互联网线路。3G和LTE等移动线路最为常用。除了现在Web服务中广泛使用的HTTP和WebSocket协议以外,还有一些专为机器对机器通信和物联网而产生的轻量级协议,如MQTT等。
1.3.4 物联网服务
物联网服务有两个作用:一是从设备接收数据以及发送数据给设备;二是处理和保存数据(图1.14)。
图1.14 Web系统的作用1. 数据交换
设备和物联网服务的通信方法大致分为两种:同步传输和异步传输(图1.15)。在同步传输的情况下,设备发送数据时会把数据发送给物联网服务。接下来直到物联网服务接收完数据之前,不管设备向物联网服务发送多少次数据,都算作一次传输。反过来,物联网服务在执行对设备的反馈时,则是先由设备向物联网服务发送请求消息,然后物联网服务会响应请求并将消息发送给设备。就这种方法而言,直到设备发送请求之前,物联网服务都不能把消息发送给设备。但是这种方法只适用于不知道设备IP地址的情况,因为就算不知道设备的IP地址,只要设备发送了请求,物联网服务就能把消息发送给设备。在异步传输中,设备会把数据发送给物联网服务,每发送一次,就算作一次传输。此外,从物联网服务向设备进行传输时,无需等待设备发来的请求,可以在任意时间点执行发送。采用这个方法能在物联网服务规定的任意一个时刻发送消息。但是,物联网服务需要预先知道发送消息的设备的IP地址。
图1.15 Web系统和设备的通信>> 处理和保存数据
处理和保存数据的操作包括把从设备接收到的数据保存到数据库,以及从接收到的数据来判断如何控制设备。
从设备接收到的数据不只有能用计算机简单处理的数值型数据,根据要实现的内容,还包含图像、语音、自然语言这些很难直接用计算机处理、没有被结构化的数据。我们把这种数据叫作非结构化数据。处理时,有时也会把那些易于用计算机处理的数据从非结构化数据中提取出来,例如把表示图像和语音特征的值提取出来。这些信息会被保存到数据库中。
设备按照所提取数据的判断逻辑来决定反馈的内容,例如基于某个房间的温度数据来决定空调的开关状态和目标温度。这些处理和保存的方法大体上分为两种:一种是对保存的数据定期进行采集和处理的批处理,另一种是将收到的数据逐次进行处理的流处理(图1.16)。
图1.16 保存和处理数据的时机>> 1.3.5 数据分析
数据分析的代表性方法有两种,分别是统计分析和机器学习。统计分析是用数学手法通过搜集到的大量数据来明确事物的联系性的方法。
◆ 第2章 物联网的架构
实现物联网时,物联网服务大体上发挥着两个作用。第一是把从设备收到的数据保存到数据库,并对采集的数据进行分析。第二是向设备发送指令和信息。一个是设备,另一个是网关,再来就是服务器。关于设备的基本结构和使用的技术,我们会在第3章详细说明。因此本章并不涉及设备。我们来详细看一下用怎样的机制才能实现网关和服务器。
图2.1 物联网的整体结构网关指的是能连接多台设备,并具备直接连接到互联网的功能的机器和软件。选择网关时有几项重要的标准:
1. 接口:第一重要的是用于连接网关和设备的接口。网关的接口决定了能连接的设备,因此重点在于选择一个适配设备的接口。有线连接方式包括串行通信和USB连接。串行通信中经常用的是一种叫作D-SUB 9针(pin)的连接器,而USB连接中用到的USB连接器则种类繁多。无线连接中用的接口是蓝牙和Wi-Fi(IEEE 802.11)。此外,还有采用920 MHz频段的Zigbee标准,以及各制造商们的专属协议。
2. 网络接口:我们用以太网或是Wi-Fi、3G/LTE来连接外部网络。网络接口会影响到网关的设置场所。
3. 硬件:相对于一般计算机而言,网关在CPU和内存这些硬件的性能方面比较受限。我们需要确定让网关做哪些事情,也需要考虑到它的硬件性能。
4. 软件:人们主要使用Linux操作系统来运行网关。虽然有很多种用于服务器的Linux,不过,网关上搭载的Linux是面向嵌入式的。
在功能方面,物联网服务大体上可分为3个部分,本书分别称它们为前端部分、处理部分,以及数据库部分。首先,前端部分包括数据接收服务器和数据发送服务器。数据接收服务器接收设备和网关发来的数据,转交给后续的处理部分。数据发送服务器则刚好相反,它负责把从处理服务器接收到的内容发送给设备。通常情况下,Web服务的前端部分只接受HTTP协议。而物联网服务的前端部分则需要根据连接设备的不同来匹配HTTP以外的协议。使用者需要考虑到协议的实时性和通信的轻量化,以及能否以服务器为起点发送数据。处理部分负责处理从前端部分接收到的数据。这里的“处理”指的是分解数据、存储数据、分析数据、生成发给设备的通知内容,等等。数据处理包括批处理和流处理等,批处理即把数据存入数据库之后一并进行处理,而流处理是逐次处理从前端部分收到的数据。使用者需要根据处理内容和数据特性来灵活使用这些“处理”。最后是数据库。这里的数据库不只会用到关系数据库,还会用到NoSQL数据库。当然,使用者需要根据想存储的数据和想使用的方法来选择数据库。
◆ 2.2 采集数据
网关是一台用于把不能直接连接到互联网的设备转发连接到互联网的设备。再往细了说,网关是由3种功能构成的。这3种功能分别是连接设备功能、数据处理功能和向服务器发送数据的功能。
>> 连接设备:设备和网关是通过各种各样的接口连接的。当通过传感器终端连接时,多数情况下是传感器单方面持续向服务器发送数据。
>> 生成要发送的数据:把从设备接收到的数据转化成能发送给服务器的格式。在表示从设备发送到网关的数据时,也有把4位二进制数(如二进制数据和BCD码)替换成一位十进制数数据来表示的(图2.5)。不把每台设备发来的数据直接发送给服务器,而是将大量数据整合在一起再发送给服务器。这么做有以下两个原因。第一,通过整合数据能减少数据的附加信息,减少数据量。第二,通过一并发送数据能减轻访问物联网服务时对服务器造成的负担。
>> 发送数据给服务器:向物联网服务发送数据。此时,需要根据服务器来决定发送数据的时间间隔和发送数据的协议。
◆ 2.3 接收数据
很多种方法可以从设备把数据发送给服务器,其中具有代表性的包括以下两种方法。
● 准备一个使用了HTTP协议的Web API来访问设备(如通常的Web系统)
● 执行语音和视频的实时通信(如WebSocket和WebRTC)
除此之外,还出现了一种名为MQTT的、专门针对物联网的新型通信协议。
设备用HTTP的GET方法和POST方法访问服务器,把数据存入请求参数和BODY并发送。在Web服务的世界里,有一种思路叫作RESTful。REST是一种接口,它为特定的URL指定参数并执行访问,作为其响应来获取结果。它通过用多个HTTP方法访问一个URL,来对一个URL执行获取和注册数据。这样一来,URL的作用就易于理解了。在发送语音数据等连续的数据,以及发生与服务器的相互交换时,就能使用WebSocket了。
MQTT是一种能实现一对多通信(人们称之为发布或订阅型)的协议。它由3种功能构成,分别是中介(broker)、发布者(publisher)和订阅者(subscriber)(图2.8)。中介承担着转发MQTT通信的服务器的作用。相对而言,发布者和订阅者则起着客户端的作用。发布者是负责发送消息的客户端,而订阅者是负责接收消息的客户端。订阅者和中介总是处于连接状态,而发布者则只需在发布时建立连接,不过要在短期内数次发布时,就需要保持连接状态了。因为中介起着转发消息的作用,所以各个客户端彼此之间没有必要知道对方的IP地址等网络上的收信地址。MQTT还实现了轻量型协议。因此它还能在网络带宽低、可靠性低的环境下运行;又因为消息小、协议机制简单,所以在硬件资源(设备、CPU和内存等)受限的条件下也能运行,可以说是为物联网量身定做的协议。
>> QoS是Quality of Service(服务质量)的简称。这个词在网络领域表示的是通信线路的品质保证。
>> 订阅者只能接收在订阅之后发布的消息,但如果发布者事先发布了带有Retain标志的消息,那么订阅者就能在订阅后马上收到消息。
>> Will有“遗言”的意思。由于中介的I/O错误或网络故障等情况,发布者可能会突然从中介断开,Will就是专门针对于这种情况的一个机构,它用于定义中介向订阅者发送的消息
发布者在连接中介时会用到CONNECT(连接)消息,连接时对其指定Will标志、要发送的消息以及QoS。这样一来,如果连接意外断开,Will消息就会被传递给订阅者。另外,还有一个标志叫作Will Retain。通过指定这个标志,就能跟前面说的Retain达到同样的效果,即在中介处保存消息。
Clean session用于指定中介是否保留了订阅者的已订阅状态。用CONNECT消息连接时,订阅者把Clean session标志设定为0或1。0是保留session,1是不保留session。
数据就是通过协议来进行交换的。通过Web协议来使用的数据格式中,具有代表性的包括XML和JSON。MessagePack的数据格式虽然跟JSON相似,其数据却保留了二进制的形式
◆ 2.4 处理数据
>> 数据的处理方法,它可以归纳成以下4种:数据分析、数据加工、数据保存以及向设备发出指令
>> 批处理的方法是隔一段时间就分批处理一次积攒的数据。一般情况下是先把数据存入数据库里,隔一段时间就从数据库获取数据,执行处理。批处理的重点在于要在规定时间内处理所有数据。
>> 需要处理从数量庞大的设备发来的传感器数据和图像等大型数据,这被称为“大数据”。不过,通过使用一种叫作分布式处理平台的平台软件,就能高效地处理数兆、数千兆这种大型数据了。具有代表性的分布式处理平台包括Hadoop和Spark。
>> Apache Hadoop是一个对大规模数据进行分布式处理的开源框架。Hadoop有一种叫作MapReduce的机制,用来高效处理数据。MapReduce是一种专门用于在分布式环境下高效处理数据的机制,它基本由Map、Shuffle、Reduce这3种处理构成(图2.21)。
>> Hadoop对于每个被称为节点的服务器执行MapReduce,并统计结果。首先是分割数据,这里的数据指的是各个服务器的处理对象。最初负责分割数据的是Map。Map对于每条数据反复执行同一项处理,通过Map而发生变更的数据会被移送到下一项处理,即Shuffle。Shuffle会跨Hadoop的节点来把同种类的数据进行分类。最后,Reduce把分类好的数据汇总。
也就是说,MapReduce是一种类似于收集硬币,按种类给硬币分类后再点数的方法。用Hadoop执行处理的时候,为了能用MapReduce实现处理内容,使用者需要下一番工夫。
另外,Hadoop还有一种叫分布式文件系统(HDFS)的机制,用于在分布式环境下运行Hadoop。HDFS把数据分割并存入多个磁盘里,读取数据时,就从多个磁盘里同时读取分割好的数据。这样一来,跟从一台磁盘里读出巨大的文件相比,这种方法更能高速地进行读取。如上所述,如果使用MapReduce和HDFS这两种机制,Hadoop就能高速处理巨型数据。
>> Apache Spark也和Hadoop一样,是一个分布式处理大规模数据的开源框架。Spark用一种叫作RDD(Resilient Distributed Dataset,弹性分布数据集)的数据结构来处理数据
>> RDD能够把数据放在内存上,不经过磁盘访问也能处理数据。而且RDD使用的内存不能被写入,所以要在新的内存上展开处理结果。通过保持内存之间的关系,就能从必要的时间点开始计算,即使再次计算也不用从头算起。根据这些条件,Spark在反复处理同一数据时(如机器学习等),就能非常高速地运行了。
>> 对物联网而言,传输的数据都是一些像传感器数据、语音、图像这种比较大的数据。批处理能够存储这些数据,然后导出当天的设备使用情况
>> 流处理是不保存数据,按照到达处理服务器的顺序对数据依次进行处理。
◆ 2.5 存储数据
>> RDB用一种叫作SQL的专门用来操作数据库的语言来保存和提取数据。另一方面,NoSQL则是用SQL以外的各种方法来操作数据库。本书还会介绍键值存储(Key-Value Store,简称KVS)和文档型数据库等种类的数据库。
>> 关系数据库具备一种叫作表格的表格型数据结构,其用途在于存储数据库,使用者用SQL语言来对其执行数据的提取、插入以及删除。
>> 键值存储属于NoSQL数据库的一种。NoSQL是一种不使用SQL的数据库的统称。键值存储,就是把一种叫作“值”(value)的数据值,和能够一对一特定“值”的“键”(key)的集合保存在一起。
>> 还有把数据保存在内存里的键值存储,以及把数据保存在硬盘里的键值存储。前者一方面能够高速保存数据,而另一方面,因为数据是放在内存上的,所以软件停止运行的时候,原先保存的内容就会丢失。因此前者适合作为缓存来使用。而后者保存数据的速度虽然不及前者,但即使软件停止运行,数据也不会丢失。有一种叫作Redis的键值存储,它具备前后两者的性质,在通常情况下它是把数据存储在内存上的,但在任何时间都能够把数据保存到硬盘。因此,它既能够高速执行存储,也能永久保存数据。
>> [插图]文档型数据库文档型数据库和键值存储一样,都属于NoSQL数据库的一种。文档型数据库能以XML和JSON这种结构化文档的格式保存数据。特别是近年来,有一种叫作MongoDB的文档型数据库很受欢迎,它以JSON的格式保存数据(图2.29)。
>> MongoDB能够直接保存JSON格式的数据,还能用JSON的值进行检索。这样一来,在用JSON交换传感器的信息时,就能直接对数据进行保存和使用。即使增加了新的数据条目或是新增了设备,也能直接以JSON格式保存数据,因此,不需要像RDB那样考虑表格的结构。非常适合用于无法读出设备的数量和数据的种类等情况,以及保存传感器等设备的数据。
◆ 2.6 控制设备
>> 发送服务器的目的在于向设备发送数据并控制设备。发送服务器可以使用2.3节介绍过的HTTP、WebSocket、MQTT协议和数据格式。发送服务器靠在1.3.4节提到过的两种方法来运行,一种是通过设备申请来发送数据的同步传输;另一种是由发送服务器在任意时间发送数据的异步传输。
>> 要实现数据发送,HTTP是最简单的方法。在这个方法里,发送服务器是等待接收HTTP请求的Web服务器。设备向这台服务器申请发送数据,作为响应,服务器把数据发给设备(图2.30)。[插图]图2.30 通过HTTP发送数据使用者需要定期从设备执行轮询连接。采用此方法的原因主要有以下两个。原因一:无法确定唯一地址,例如无法给设备设定全局IP地址等。这种情况下,发送服务器就不知道应该把数据发送给哪台设备了。原因二:考虑到设备频繁断电和移动线路的传输费用。此时,设备没有持续连接网络。即使设备已经连接过网络,但只要没有持续连接,那么,即使发送服务器执行了发送数据的操作,也发不到设备那里去(图2.31)。
>> 使用WebSocket时,需要用设备连接发送服务器,并确立WebSocket连接。只要建立了一次WebSocket连接,就能实现从发送服务器和客户端发送数据。
>> 前文介绍了HTTP和WebSocket,它们采用的方法都是由设备访问发送服务器。就这些方法而言,只要客户端没有发出申请,数据就不会被发送。当然使用者也可以在设备上建立HTTP和WebSocket协议,由服务器来连接设备。不过,一旦增加了设备,服务器想管理所有设备就相当困难了。
>> 运用MQTT,并且发挥了发布/订阅模型的优点。使用MQTT时的发送服务器如图2.32所示。[插图]图2.32 通过MQTT发送数据首先设备作为订阅者,向MQTT中介进行订阅。然后,发送服务器则是发布者,同样向中介进行发布。这样一来,发送服务器只需要把确定的数据加在主题上发送就行了,发送服务器和设备都不需要知道彼此的地址。只要知道中介的地址,就能够实现通信。一旦订阅者断开,中介就会负责在断开时发送通知,并在重新连接时再次发送数据。
◆ 第3章 物联网设备
>> 一方面,物联网设备本身的结构非常简单,提供的是一种与云服务或智能手机等外部机器组合在一起的一体化服务。这种情况下,用于设备的应用程序能够很轻松地得到更新,在产品发布后还能一边从用户处获取反馈,一边不断改良软件(包括设备自身的固件)。此外,还能够在云端对大量的设备信息进行整合和加工,以一个应用程序为接口向用户提供有益的信息。
◆ 3.2 物联网设备的结构
>> 图3.3 物联网设备的基本结构
>> 微控制器由内存(用于存储程序和保存临时数据)、CPU(用于执行运算处理和控制)以及外围电路(包含与外部的接口,以及计时器等必要的功能)构成
>> 在实际使用微控制器时,需要串行端口和USB等各种接口以及电路等。
>> 现在大部分电子产品都搭载有微控制器。打个比方,请想象一个冰箱(图3.6)。冰箱内部能够达到某个目标温度,是因为微控制器里写有一个程序,这个程序的作用就是监视连接在微控制器输入端子上的温度传感器的状态,并控制制冷机以达到目标温度。利用传感器测量和判别信息就叫作感测。
>> 驱动器是通过输入信号来实现控制的驱动装置的统称。例如具有代表性的伺服电机,它能够根据输入的电子信号把电机转动到任意的角度。
>> 网关机器和设备之间存在无线连接和有线连接两种连接形式,这两种连接形式又存在多种连接方法。
>> 过去,微控制器主板的目标在于搭载单片机,实现结构的简约性和高通用性。与此相对,能用在移动电话和智能手机上的高性能CPU、完善的I/O端口,以及配备了网络接口的超微型计算机,即单板计算机等设备陆续登场。使用者不但能通过Linux操作系统来运行这些单板计算机,还能像控制以往的微控制器那样控制I/O引脚(pin)。微控制器主板和计算机的分界线正在逐渐模糊。
>> [插图]H8型微控制器主板
>> 嵌入式开发更是大多都采用C语言。这是因为比起一般的计算机,单片机在规格方面(如内存和时钟数等)受到种种制约,从高效运用硬件资源的角度来说,多数情况下需要编写位操作和寻址等接近硬件操作的功能。
>> [插图]Arduino
>> Arduino最大的特征就在于它开发的简易性。只要用USB线连接Arduino主板和PC,开发环境就搭建完成了。编写程序和写入主板则通过Arduino IDE(图3.11)来完成。开发是用类似于C++的Arduino语言来进行的。
>> [插图]Raspberry Pi
>> Raspberry Pi是一款搭载有ARM处理器的单板计算机
>> 开发者设计Raspberry Pi的主要目的都是想把它当作计算机来使用,因此,除了USB端口、声音影像输入输出端口、以太网端口等输入输出端口外,使用者还能通过microSD卡等外部存储器来连接Raspberry Pi。从搭载了GPU这点也能看出来,开发者的初衷是把它连接到显示器当作PC来使用。另外Raspberry Pi还安装有Debian类Raspbian操作系统,标准支持Python。从Raspberry Pi 2 model B开始,Raspberry Pi的CPU就是四核处理器了,并宣布支持Windows 10。作为一个能实现多种应用程序的平台,Raspberry Pi备受瞩目。
>> 虽然和传感器等设备直接连接时需要输入模拟信号(详细情况会在后面说明),但Raspberry Pi只能接受数字输入方式。为了处理模拟信号,需要通过A/D转换电路把模拟信号转换成数字信号,并连接到输入端口。
>> [插图]Beagle Bone Black
◆ 3.3 连接“云”与现实世界
>> 与物联网设备相比,网关设备的硬件结构大多比较丰富,有的还支持再次发送数据和保存部分数据等功能。另外,网关设备还支持高级加密及数据压缩,在需要保证数据传输的安全性时,采用网关无疑是一个明智之选。
>> 物联网设备和网关设备进行通信的方式有很多种,既有有线的也有无线的。
>> 选择的标准包括通信时能够使用的协议、通信模块的大小、耗电量,等等。
>> 3.3.3 有线连接
>> [插图]以太网以太网连接方式采用网关设备和以太网电缆进行有线连接。
>> 说到缺点,则包括终端要在一定程度上具备丰富的执行环境(如单板计算机),以及尺寸容易偏大,设置场所受限等。
>> [插图]串行通信串行通信连接方式是指采用RS-232C等串行通信来连接其他设备。
>> 使用RS-232C串口时,设备大多使用D-SUB 9针端口(图3.22)。如果网关设备也有串行端口,那么就能用RS-232C串口线直接连接设备来进行通信。
>> [插图]USB
>> 在连接网关的时候,多数情况下跟计算机一样,采用一种叫Type-A的插头。
>> USB有多种规格,每种规格传输数据的速度都不相同
>> 3.3.4 无线连接
>> 通过Wi-Fi接入点就能够连接网络。
>> 所有无线连接方式都会面对的情况,那就是需要在安装设备的应用程序时考虑到通信断开的情况,例如先把数据保存在内部,等能连接上的时候再一口气发送过去等,这点工夫还是要费的。
>> 和蓝牙4.0(后文再叙述)相比,Wi-Fi耗电量高,所以不适合那些需要长时间进行通信的设备。
>> 3G/LTE连接方式是通过移动运营商的通信线路来连接网络的。只要从运营商购买SIM卡,再把SIM卡插入设备里就能够通信了。
>> 采用这种连接方式时,只要在信号范围内就能连接上网络,不需要像Wi-Fi那样去在意接入点的设置。
>> [插图]蓝牙蓝牙是一种近距离无线通信标准
>> [插图]IEEE 802.15.4/ZigBee
>> IEEE 802.15.4/ZigBee是一种使用2.4 GHz频段的近距离无线通信标准。其特征是虽然传输速度低,但是与Wi-Fi相比,其耗电量较少。
>> 要把ZigBee跟PC、智能手机联动,就需要给这些设备连接专用的接收器。跟蓝牙相比,这是ZigBee一个非常大的缺点,因为蓝牙上普遍标准安装了接收器
>> [插图]易能森
>> 易能森是一个总称,它指的不仅是一种通信标准,还包括感测设备本身(图3.25)。
>> 易能森旗下设备齐全,包括运动传感器、开关、温度传感器、开关门传感器等形形色色的设备,这些设备都是利用能量采集技术自主发电的。
>> 在不同国家开发和使用无线通信设备时,是需要获得认证的。
◆ 3.4 采集现实世界的信息
>> 表3.4 具有代表性的传感器
>> 每种传感器根据其用途而内置有不同的检测元件(图3.26)。检测元件这种物质的电子特性会根据周围环境的变化而变化。
>> 检测的方法大体上分为两种。第一种方法是用输出电压的变化来表示环境的变化。例如,力觉传感器就是依靠一个叫作应变仪的金属力觉元件来发挥作用的(图3.27)。对传感器施加力,应变仪就会产生微小的变形。因为金属的阻值(输出电压)会根据形变而变化——这是金属的性质——所以只要让一定量的电流流过应变仪,那么根据欧姆定律(电压=电阻×电流),输出电压的值就会变化。例如,把应变仪安装在桥梁和高层建筑物的支柱上,就能感测到细微的变形。只要通过网络把采集到的这些数据汇集到服务器,就能持续监测基础设施了。
>> 第二种方法是用输出电流的变化来表示环境的变化。例如会对光产生反应的光电二极管,只要一照射到光,这种半导体元件就会像太阳能电池那样在两个端子间产生电动势和电流(图3.28)。变异是作为电流变化输出的,但实际上是用一种叫运算放大器的IC把电流变化转换成电压变化的。就结果而言,跟刚才第一种方法情况相同,也是用电压的变化体现环境的变化。
>> 图3.31 处理传感器信号的流程
>> 3.4.4 放大传感器的信号
>> 3.4.5 把模拟信号转换成数字信号
>> 把传感器获取的测量值用连续的电子信号表示出来,就是模拟信号。想用PC处理模拟信号,就需要进行模拟/数字(A/D)转换,把模拟信号转换成离散值,即数字信号。A/D转换操作分成以下3个步骤。
● 采样(sampling)用某个频率来区分模拟输入信号,获取值
● 量化把采样后的值近似表现为离散值
● 编码(coding)把量化后的数值编码成二进制代码
>> 传感器把测量好的结果用电子信号(电压)的形式输出。因为我们无法直接从电子信号中获取想测量的参数,所以就需要一个公式,来把测算的数值转换成参数。例如,在使用红外线测距传感器的情况下,就需要输出电压和距离的关系图。
>> 表3.5 传感器的性能指标
◆ 4.3 先进的感测系统
>> 传感器不只是一个电子零件,还“作为设备”而存在着。然而当代传感器不仅限于这个层面,其中还存在靠多个装置协作来获取信息的机制,也就是说还存在“作为系统”的传感器。
>> GPS是一款利用人造卫星测量位置的传感器。
>> 基础轨道是由24颗人造卫星负责的,事实上用于GPS的人造卫星约有30颗左右,第25颗及以后的卫星则用于提升可靠性和精确度。
◆ 第5章 物联网服务的系统开发
>> 图5.1 物联网系统是由众多领域的技术构成的
>> 就算是小规模的物联网服务,也需要多方面的知识。除了在服务器端运行的应用程序外,还需要掌握构成设备的硬件、嵌入式软件、连接设备与传感器的网关、无线通信技术和网络等多方面的知识
◆ 5.3 物联网服务的系统开发案例
>> 图5.6 楼层环境监控系统的系统结构
◆ 5.4 物联网服务开发的重点
>> 如果积累的数据量不多,那么获取数据的时间和查找速度都不会有问题,但是如果积累的数据量变多,那么还可能会产生数据库访问速度变慢,应用程序变卡等问题(图5.17)。
◆ 第6章 物联网与数据分析
>> 分析大体上可分为3种:基于采集的“可视化”分析,基于统计分析和机器学习等高级分析技术的“发现”分析和“预测”分析(图6.2)。
>> 可视化分析指的是对积累的数据进行加工,根据需求通过采集和图表形式把数据的内容加工成人眼能看懂的形式
>> 发现分析就是在可视化所使用的采集分析的基础上,再通过统计分析和机器学习等高级的方法来发现数据的趋势、规律和结构等。
>> 预测分析即从过去积累的数据中找出数据固有的趋势和规律,以掌握今后可能会发生的状况,知晓未来。
◆ 6.4 分析所需要的要素
>> 出于保存大型数据和图像、语音等非结构化数据的目的,也有人在使用Hadoop的HDFS。HDFS能将多台机器的存储空间虚拟地集中在一起,从而构建一个容量巨大的存储空间。
另外,通过应用MapReduce功能,还能对积累的数据进行分布式处理。利用Hadoop的好处就是能够利用一个叫作Apache Mahout的机器学习库,这个库能在Hadoop的MapReduce上实现机器学习,因此Hadoop被认为是一个兼备积累、加工、分析这3种功能的、非常有用的基础架构。
回应 2022-06-24 20:35:18
-
物联网的原理是从安装在这些物品和设备上的传感器处收集信息,并通过互联网对其加以灵活运用。要想应用传感器,除了传感器的知识以外,我们还需要掌握硬件和软件的知识、用于分析传感器数据的知识等。本书内容包括用于实现物联网的架构、传感器的种类以及能从传感器获取的信息等基础知识,并进一步介绍了感测设备原型设计所必需的Arduino等主板及这些主板的选择方法,连接传感器的电路,传感器的数据分析,乃至物联网跟智能手机...
2022-06-24 20:35:18
物联网的原理是从安装在这些物品和设备上的传感器处收集信息,并通过互联网对其加以灵活运用。要想应用传感器,除了传感器的知识以外,我们还需要掌握硬件和软件的知识、用于分析传感器数据的知识等。本书内容包括用于实现物联网的架构、传感器的种类以及能从传感器获取的信息等基础知识,并进一步介绍了感测设备原型设计所必需的Arduino等主板及这些主板的选择方法,连接传感器的电路,传感器的数据分析,乃至物联网跟智能手机/可穿戴设备的联动等。
物联网整体服务的开发需要灵活应用传感器和各类设备。物联网是通过互联网把我们身边的各种物品连在一起,并提供服务的一种机制。一方面,物联网利用的技术是以现有Web服务中使用的技术和互联网为基础的。另一方面,为了了解传感器和各类设备的用途,我们需要掌握一些相关的硬件及嵌入式软件知识。物联网的英语是Internet of Things,缩写为IoT,这里的“物”指的是我们身边一切能与网络相连的物品。例如您身上穿着的衣服、戴着的手表、家里的家用电器和汽车,或者是房屋本身,甚至正在读的这本书,只要能与网络相连,就都是物联网说的“物”。物联网就是“物”之间通过连接互联网来共享信息并产生有用的信息,而且无需人为管理就能运行的机制。
图1.1 物联网的相关市场创建物联网市场的要素,那就要提到通信模块价格趋向低廉以及云服务的普及。(Azure智能系统服务)的解决方案,它负责用云技术实现数据管理和处理,以及通信管理等功能。
◆ 1.2 物联网所实现的世界
图1.2 泛在网络可以让人们随时随地访问网络能搭载在机器上的超低功耗传感器投入市场、无线通信技术进步等,都促使除了电脑、服务器和智能手机等传统连接互联网的IT相关设备以外,各种各样的“物”也可以连接互联网。
图1.3 连接互联网的各种各样的“物”先进感测技术的普及实现了人类对现实世界的掌握和预测,通过实时且海量地搜集人、物、社会和环境的数据,也有望进行新型社会基础设施的构建,例如强化产业竞争力、建设都市和社会制度、监测灾害等异常情况。
◆ 1.3 实现物联网的技术要素
设备指的是一种“物”,它上面装有一种名为传感器的电子零件,并与网络相连接。比如大家拿着的智能手机和平板电脑就是设备的一种。这些设备起着两个作用:感测和反馈。感测指的是搜集设备本身的状态和周边环境的状态并通知系统设备是利用传感器这种电子零件来实现感测的。设备的另外一个作用是接收从系统发来的通知,显示信息或执行指定操作(图1.8)。
系统会基于从传感器处搜集到的信息进行一些反馈,并针对现实世界采取行动。反馈有多种方法。大体分成如图1.9所示的3种方法,分别是可视化、通知,以及控制。利用“推送通知”,系统就能检测到“物”的状态和某些活动,并将其通知给设备。利用“控制”,系统就可以直接控制设备的运转,而无需借助人工。传感器负责把物理现象用电子信号的形式输出。通过传感器输出的电子信号,系统就能够获取现实世界的“物”的状态和环境的状态。
还有一种东西叫作传感器节点,它把传感器本身置入环境中搜集信息。传感器节点是集蓝牙和Wi-Fi等无线通信装置与电池为一体的传感器。我们把这些传感器连接到一种叫作网关的专用无线路由器来进行传感器数据的搜集(图1.11)。
在把设备连接到物联网服务时,网络是不可或缺的。不仅要把设备连接到物联网服务,还得把设备连接到其他设备。物联网使用的网络大体上分为两种:一种是把设备连接到其他设备的网络,另一种是把设备连接到物联网服务的网络(图1.12)。
1. 把设备连接到其他设备的网络
无法直接连接到互联网的设备也是存在的。我们通过把设备连接到其他设备,就能通过其他设备把这些不能连接到互联网的设备连接到互联网。前面我们介绍的传感器节点和网关正是两个典型的例子。蓝牙和ZigBee是两种具有代表性的网络标准。它们是用无线连接的,利用的通信协议也是固定的。这些协议的特征有采用擅长近距离通信的无线连接、低功耗、易于嵌入嵌入式设备等。
要把设备连接到其他设备,除了1对1之外,还可以采用1对N、N对N的方式连接。特别是N对N连接的情况,我们称这种情况为网状网络(图1.13)。有一种与网状网络对应的通信标准,名为ZigBee。通过采用N对N的通信方式,设备可以一边接管其他的设备,一边进行远程通信。除此之外它还有一个优点,那就是即使有一台设备发生故障无法通信,其他设备也会代替它来执行通信。
图1.13 设备之间的网络连接2. 把设备连接到服务器的网络
把设备连接到物联网服务的网络时,会用到互联网线路。3G和LTE等移动线路最为常用。除了现在Web服务中广泛使用的HTTP和WebSocket协议以外,还有一些专为机器对机器通信和物联网而产生的轻量级协议,如MQTT等。
1.3.4 物联网服务
物联网服务有两个作用:一是从设备接收数据以及发送数据给设备;二是处理和保存数据(图1.14)。
图1.14 Web系统的作用1. 数据交换
设备和物联网服务的通信方法大致分为两种:同步传输和异步传输(图1.15)。在同步传输的情况下,设备发送数据时会把数据发送给物联网服务。接下来直到物联网服务接收完数据之前,不管设备向物联网服务发送多少次数据,都算作一次传输。反过来,物联网服务在执行对设备的反馈时,则是先由设备向物联网服务发送请求消息,然后物联网服务会响应请求并将消息发送给设备。就这种方法而言,直到设备发送请求之前,物联网服务都不能把消息发送给设备。但是这种方法只适用于不知道设备IP地址的情况,因为就算不知道设备的IP地址,只要设备发送了请求,物联网服务就能把消息发送给设备。在异步传输中,设备会把数据发送给物联网服务,每发送一次,就算作一次传输。此外,从物联网服务向设备进行传输时,无需等待设备发来的请求,可以在任意时间点执行发送。采用这个方法能在物联网服务规定的任意一个时刻发送消息。但是,物联网服务需要预先知道发送消息的设备的IP地址。
图1.15 Web系统和设备的通信>> 处理和保存数据
处理和保存数据的操作包括把从设备接收到的数据保存到数据库,以及从接收到的数据来判断如何控制设备。
从设备接收到的数据不只有能用计算机简单处理的数值型数据,根据要实现的内容,还包含图像、语音、自然语言这些很难直接用计算机处理、没有被结构化的数据。我们把这种数据叫作非结构化数据。处理时,有时也会把那些易于用计算机处理的数据从非结构化数据中提取出来,例如把表示图像和语音特征的值提取出来。这些信息会被保存到数据库中。
设备按照所提取数据的判断逻辑来决定反馈的内容,例如基于某个房间的温度数据来决定空调的开关状态和目标温度。这些处理和保存的方法大体上分为两种:一种是对保存的数据定期进行采集和处理的批处理,另一种是将收到的数据逐次进行处理的流处理(图1.16)。
图1.16 保存和处理数据的时机>> 1.3.5 数据分析
数据分析的代表性方法有两种,分别是统计分析和机器学习。统计分析是用数学手法通过搜集到的大量数据来明确事物的联系性的方法。
◆ 第2章 物联网的架构
实现物联网时,物联网服务大体上发挥着两个作用。第一是把从设备收到的数据保存到数据库,并对采集的数据进行分析。第二是向设备发送指令和信息。一个是设备,另一个是网关,再来就是服务器。关于设备的基本结构和使用的技术,我们会在第3章详细说明。因此本章并不涉及设备。我们来详细看一下用怎样的机制才能实现网关和服务器。
图2.1 物联网的整体结构网关指的是能连接多台设备,并具备直接连接到互联网的功能的机器和软件。选择网关时有几项重要的标准:
1. 接口:第一重要的是用于连接网关和设备的接口。网关的接口决定了能连接的设备,因此重点在于选择一个适配设备的接口。有线连接方式包括串行通信和USB连接。串行通信中经常用的是一种叫作D-SUB 9针(pin)的连接器,而USB连接中用到的USB连接器则种类繁多。无线连接中用的接口是蓝牙和Wi-Fi(IEEE 802.11)。此外,还有采用920 MHz频段的Zigbee标准,以及各制造商们的专属协议。
2. 网络接口:我们用以太网或是Wi-Fi、3G/LTE来连接外部网络。网络接口会影响到网关的设置场所。
3. 硬件:相对于一般计算机而言,网关在CPU和内存这些硬件的性能方面比较受限。我们需要确定让网关做哪些事情,也需要考虑到它的硬件性能。
4. 软件:人们主要使用Linux操作系统来运行网关。虽然有很多种用于服务器的Linux,不过,网关上搭载的Linux是面向嵌入式的。
在功能方面,物联网服务大体上可分为3个部分,本书分别称它们为前端部分、处理部分,以及数据库部分。首先,前端部分包括数据接收服务器和数据发送服务器。数据接收服务器接收设备和网关发来的数据,转交给后续的处理部分。数据发送服务器则刚好相反,它负责把从处理服务器接收到的内容发送给设备。通常情况下,Web服务的前端部分只接受HTTP协议。而物联网服务的前端部分则需要根据连接设备的不同来匹配HTTP以外的协议。使用者需要考虑到协议的实时性和通信的轻量化,以及能否以服务器为起点发送数据。处理部分负责处理从前端部分接收到的数据。这里的“处理”指的是分解数据、存储数据、分析数据、生成发给设备的通知内容,等等。数据处理包括批处理和流处理等,批处理即把数据存入数据库之后一并进行处理,而流处理是逐次处理从前端部分收到的数据。使用者需要根据处理内容和数据特性来灵活使用这些“处理”。最后是数据库。这里的数据库不只会用到关系数据库,还会用到NoSQL数据库。当然,使用者需要根据想存储的数据和想使用的方法来选择数据库。
◆ 2.2 采集数据
网关是一台用于把不能直接连接到互联网的设备转发连接到互联网的设备。再往细了说,网关是由3种功能构成的。这3种功能分别是连接设备功能、数据处理功能和向服务器发送数据的功能。
>> 连接设备:设备和网关是通过各种各样的接口连接的。当通过传感器终端连接时,多数情况下是传感器单方面持续向服务器发送数据。
>> 生成要发送的数据:把从设备接收到的数据转化成能发送给服务器的格式。在表示从设备发送到网关的数据时,也有把4位二进制数(如二进制数据和BCD码)替换成一位十进制数数据来表示的(图2.5)。不把每台设备发来的数据直接发送给服务器,而是将大量数据整合在一起再发送给服务器。这么做有以下两个原因。第一,通过整合数据能减少数据的附加信息,减少数据量。第二,通过一并发送数据能减轻访问物联网服务时对服务器造成的负担。
>> 发送数据给服务器:向物联网服务发送数据。此时,需要根据服务器来决定发送数据的时间间隔和发送数据的协议。
◆ 2.3 接收数据
很多种方法可以从设备把数据发送给服务器,其中具有代表性的包括以下两种方法。
● 准备一个使用了HTTP协议的Web API来访问设备(如通常的Web系统)
● 执行语音和视频的实时通信(如WebSocket和WebRTC)
除此之外,还出现了一种名为MQTT的、专门针对物联网的新型通信协议。
设备用HTTP的GET方法和POST方法访问服务器,把数据存入请求参数和BODY并发送。在Web服务的世界里,有一种思路叫作RESTful。REST是一种接口,它为特定的URL指定参数并执行访问,作为其响应来获取结果。它通过用多个HTTP方法访问一个URL,来对一个URL执行获取和注册数据。这样一来,URL的作用就易于理解了。在发送语音数据等连续的数据,以及发生与服务器的相互交换时,就能使用WebSocket了。
MQTT是一种能实现一对多通信(人们称之为发布或订阅型)的协议。它由3种功能构成,分别是中介(broker)、发布者(publisher)和订阅者(subscriber)(图2.8)。中介承担着转发MQTT通信的服务器的作用。相对而言,发布者和订阅者则起着客户端的作用。发布者是负责发送消息的客户端,而订阅者是负责接收消息的客户端。订阅者和中介总是处于连接状态,而发布者则只需在发布时建立连接,不过要在短期内数次发布时,就需要保持连接状态了。因为中介起着转发消息的作用,所以各个客户端彼此之间没有必要知道对方的IP地址等网络上的收信地址。MQTT还实现了轻量型协议。因此它还能在网络带宽低、可靠性低的环境下运行;又因为消息小、协议机制简单,所以在硬件资源(设备、CPU和内存等)受限的条件下也能运行,可以说是为物联网量身定做的协议。
>> QoS是Quality of Service(服务质量)的简称。这个词在网络领域表示的是通信线路的品质保证。
>> 订阅者只能接收在订阅之后发布的消息,但如果发布者事先发布了带有Retain标志的消息,那么订阅者就能在订阅后马上收到消息。
>> Will有“遗言”的意思。由于中介的I/O错误或网络故障等情况,发布者可能会突然从中介断开,Will就是专门针对于这种情况的一个机构,它用于定义中介向订阅者发送的消息
发布者在连接中介时会用到CONNECT(连接)消息,连接时对其指定Will标志、要发送的消息以及QoS。这样一来,如果连接意外断开,Will消息就会被传递给订阅者。另外,还有一个标志叫作Will Retain。通过指定这个标志,就能跟前面说的Retain达到同样的效果,即在中介处保存消息。
Clean session用于指定中介是否保留了订阅者的已订阅状态。用CONNECT消息连接时,订阅者把Clean session标志设定为0或1。0是保留session,1是不保留session。
数据就是通过协议来进行交换的。通过Web协议来使用的数据格式中,具有代表性的包括XML和JSON。MessagePack的数据格式虽然跟JSON相似,其数据却保留了二进制的形式
◆ 2.4 处理数据
>> 数据的处理方法,它可以归纳成以下4种:数据分析、数据加工、数据保存以及向设备发出指令
>> 批处理的方法是隔一段时间就分批处理一次积攒的数据。一般情况下是先把数据存入数据库里,隔一段时间就从数据库获取数据,执行处理。批处理的重点在于要在规定时间内处理所有数据。
>> 需要处理从数量庞大的设备发来的传感器数据和图像等大型数据,这被称为“大数据”。不过,通过使用一种叫作分布式处理平台的平台软件,就能高效地处理数兆、数千兆这种大型数据了。具有代表性的分布式处理平台包括Hadoop和Spark。
>> Apache Hadoop是一个对大规模数据进行分布式处理的开源框架。Hadoop有一种叫作MapReduce的机制,用来高效处理数据。MapReduce是一种专门用于在分布式环境下高效处理数据的机制,它基本由Map、Shuffle、Reduce这3种处理构成(图2.21)。
>> Hadoop对于每个被称为节点的服务器执行MapReduce,并统计结果。首先是分割数据,这里的数据指的是各个服务器的处理对象。最初负责分割数据的是Map。Map对于每条数据反复执行同一项处理,通过Map而发生变更的数据会被移送到下一项处理,即Shuffle。Shuffle会跨Hadoop的节点来把同种类的数据进行分类。最后,Reduce把分类好的数据汇总。
也就是说,MapReduce是一种类似于收集硬币,按种类给硬币分类后再点数的方法。用Hadoop执行处理的时候,为了能用MapReduce实现处理内容,使用者需要下一番工夫。
另外,Hadoop还有一种叫分布式文件系统(HDFS)的机制,用于在分布式环境下运行Hadoop。HDFS把数据分割并存入多个磁盘里,读取数据时,就从多个磁盘里同时读取分割好的数据。这样一来,跟从一台磁盘里读出巨大的文件相比,这种方法更能高速地进行读取。如上所述,如果使用MapReduce和HDFS这两种机制,Hadoop就能高速处理巨型数据。
>> Apache Spark也和Hadoop一样,是一个分布式处理大规模数据的开源框架。Spark用一种叫作RDD(Resilient Distributed Dataset,弹性分布数据集)的数据结构来处理数据
>> RDD能够把数据放在内存上,不经过磁盘访问也能处理数据。而且RDD使用的内存不能被写入,所以要在新的内存上展开处理结果。通过保持内存之间的关系,就能从必要的时间点开始计算,即使再次计算也不用从头算起。根据这些条件,Spark在反复处理同一数据时(如机器学习等),就能非常高速地运行了。
>> 对物联网而言,传输的数据都是一些像传感器数据、语音、图像这种比较大的数据。批处理能够存储这些数据,然后导出当天的设备使用情况
>> 流处理是不保存数据,按照到达处理服务器的顺序对数据依次进行处理。
◆ 2.5 存储数据
>> RDB用一种叫作SQL的专门用来操作数据库的语言来保存和提取数据。另一方面,NoSQL则是用SQL以外的各种方法来操作数据库。本书还会介绍键值存储(Key-Value Store,简称KVS)和文档型数据库等种类的数据库。
>> 关系数据库具备一种叫作表格的表格型数据结构,其用途在于存储数据库,使用者用SQL语言来对其执行数据的提取、插入以及删除。
>> 键值存储属于NoSQL数据库的一种。NoSQL是一种不使用SQL的数据库的统称。键值存储,就是把一种叫作“值”(value)的数据值,和能够一对一特定“值”的“键”(key)的集合保存在一起。
>> 还有把数据保存在内存里的键值存储,以及把数据保存在硬盘里的键值存储。前者一方面能够高速保存数据,而另一方面,因为数据是放在内存上的,所以软件停止运行的时候,原先保存的内容就会丢失。因此前者适合作为缓存来使用。而后者保存数据的速度虽然不及前者,但即使软件停止运行,数据也不会丢失。有一种叫作Redis的键值存储,它具备前后两者的性质,在通常情况下它是把数据存储在内存上的,但在任何时间都能够把数据保存到硬盘。因此,它既能够高速执行存储,也能永久保存数据。
>> [插图]文档型数据库文档型数据库和键值存储一样,都属于NoSQL数据库的一种。文档型数据库能以XML和JSON这种结构化文档的格式保存数据。特别是近年来,有一种叫作MongoDB的文档型数据库很受欢迎,它以JSON的格式保存数据(图2.29)。
>> MongoDB能够直接保存JSON格式的数据,还能用JSON的值进行检索。这样一来,在用JSON交换传感器的信息时,就能直接对数据进行保存和使用。即使增加了新的数据条目或是新增了设备,也能直接以JSON格式保存数据,因此,不需要像RDB那样考虑表格的结构。非常适合用于无法读出设备的数量和数据的种类等情况,以及保存传感器等设备的数据。
◆ 2.6 控制设备
>> 发送服务器的目的在于向设备发送数据并控制设备。发送服务器可以使用2.3节介绍过的HTTP、WebSocket、MQTT协议和数据格式。发送服务器靠在1.3.4节提到过的两种方法来运行,一种是通过设备申请来发送数据的同步传输;另一种是由发送服务器在任意时间发送数据的异步传输。
>> 要实现数据发送,HTTP是最简单的方法。在这个方法里,发送服务器是等待接收HTTP请求的Web服务器。设备向这台服务器申请发送数据,作为响应,服务器把数据发给设备(图2.30)。[插图]图2.30 通过HTTP发送数据使用者需要定期从设备执行轮询连接。采用此方法的原因主要有以下两个。原因一:无法确定唯一地址,例如无法给设备设定全局IP地址等。这种情况下,发送服务器就不知道应该把数据发送给哪台设备了。原因二:考虑到设备频繁断电和移动线路的传输费用。此时,设备没有持续连接网络。即使设备已经连接过网络,但只要没有持续连接,那么,即使发送服务器执行了发送数据的操作,也发不到设备那里去(图2.31)。
>> 使用WebSocket时,需要用设备连接发送服务器,并确立WebSocket连接。只要建立了一次WebSocket连接,就能实现从发送服务器和客户端发送数据。
>> 前文介绍了HTTP和WebSocket,它们采用的方法都是由设备访问发送服务器。就这些方法而言,只要客户端没有发出申请,数据就不会被发送。当然使用者也可以在设备上建立HTTP和WebSocket协议,由服务器来连接设备。不过,一旦增加了设备,服务器想管理所有设备就相当困难了。
>> 运用MQTT,并且发挥了发布/订阅模型的优点。使用MQTT时的发送服务器如图2.32所示。[插图]图2.32 通过MQTT发送数据首先设备作为订阅者,向MQTT中介进行订阅。然后,发送服务器则是发布者,同样向中介进行发布。这样一来,发送服务器只需要把确定的数据加在主题上发送就行了,发送服务器和设备都不需要知道彼此的地址。只要知道中介的地址,就能够实现通信。一旦订阅者断开,中介就会负责在断开时发送通知,并在重新连接时再次发送数据。
◆ 第3章 物联网设备
>> 一方面,物联网设备本身的结构非常简单,提供的是一种与云服务或智能手机等外部机器组合在一起的一体化服务。这种情况下,用于设备的应用程序能够很轻松地得到更新,在产品发布后还能一边从用户处获取反馈,一边不断改良软件(包括设备自身的固件)。此外,还能够在云端对大量的设备信息进行整合和加工,以一个应用程序为接口向用户提供有益的信息。
◆ 3.2 物联网设备的结构
>> 图3.3 物联网设备的基本结构
>> 微控制器由内存(用于存储程序和保存临时数据)、CPU(用于执行运算处理和控制)以及外围电路(包含与外部的接口,以及计时器等必要的功能)构成
>> 在实际使用微控制器时,需要串行端口和USB等各种接口以及电路等。
>> 现在大部分电子产品都搭载有微控制器。打个比方,请想象一个冰箱(图3.6)。冰箱内部能够达到某个目标温度,是因为微控制器里写有一个程序,这个程序的作用就是监视连接在微控制器输入端子上的温度传感器的状态,并控制制冷机以达到目标温度。利用传感器测量和判别信息就叫作感测。
>> 驱动器是通过输入信号来实现控制的驱动装置的统称。例如具有代表性的伺服电机,它能够根据输入的电子信号把电机转动到任意的角度。
>> 网关机器和设备之间存在无线连接和有线连接两种连接形式,这两种连接形式又存在多种连接方法。
>> 过去,微控制器主板的目标在于搭载单片机,实现结构的简约性和高通用性。与此相对,能用在移动电话和智能手机上的高性能CPU、完善的I/O端口,以及配备了网络接口的超微型计算机,即单板计算机等设备陆续登场。使用者不但能通过Linux操作系统来运行这些单板计算机,还能像控制以往的微控制器那样控制I/O引脚(pin)。微控制器主板和计算机的分界线正在逐渐模糊。
>> [插图]H8型微控制器主板
>> 嵌入式开发更是大多都采用C语言。这是因为比起一般的计算机,单片机在规格方面(如内存和时钟数等)受到种种制约,从高效运用硬件资源的角度来说,多数情况下需要编写位操作和寻址等接近硬件操作的功能。
>> [插图]Arduino
>> Arduino最大的特征就在于它开发的简易性。只要用USB线连接Arduino主板和PC,开发环境就搭建完成了。编写程序和写入主板则通过Arduino IDE(图3.11)来完成。开发是用类似于C++的Arduino语言来进行的。
>> [插图]Raspberry Pi
>> Raspberry Pi是一款搭载有ARM处理器的单板计算机
>> 开发者设计Raspberry Pi的主要目的都是想把它当作计算机来使用,因此,除了USB端口、声音影像输入输出端口、以太网端口等输入输出端口外,使用者还能通过microSD卡等外部存储器来连接Raspberry Pi。从搭载了GPU这点也能看出来,开发者的初衷是把它连接到显示器当作PC来使用。另外Raspberry Pi还安装有Debian类Raspbian操作系统,标准支持Python。从Raspberry Pi 2 model B开始,Raspberry Pi的CPU就是四核处理器了,并宣布支持Windows 10。作为一个能实现多种应用程序的平台,Raspberry Pi备受瞩目。
>> 虽然和传感器等设备直接连接时需要输入模拟信号(详细情况会在后面说明),但Raspberry Pi只能接受数字输入方式。为了处理模拟信号,需要通过A/D转换电路把模拟信号转换成数字信号,并连接到输入端口。
>> [插图]Beagle Bone Black
◆ 3.3 连接“云”与现实世界
>> 与物联网设备相比,网关设备的硬件结构大多比较丰富,有的还支持再次发送数据和保存部分数据等功能。另外,网关设备还支持高级加密及数据压缩,在需要保证数据传输的安全性时,采用网关无疑是一个明智之选。
>> 物联网设备和网关设备进行通信的方式有很多种,既有有线的也有无线的。
>> 选择的标准包括通信时能够使用的协议、通信模块的大小、耗电量,等等。
>> 3.3.3 有线连接
>> [插图]以太网以太网连接方式采用网关设备和以太网电缆进行有线连接。
>> 说到缺点,则包括终端要在一定程度上具备丰富的执行环境(如单板计算机),以及尺寸容易偏大,设置场所受限等。
>> [插图]串行通信串行通信连接方式是指采用RS-232C等串行通信来连接其他设备。
>> 使用RS-232C串口时,设备大多使用D-SUB 9针端口(图3.22)。如果网关设备也有串行端口,那么就能用RS-232C串口线直接连接设备来进行通信。
>> [插图]USB
>> 在连接网关的时候,多数情况下跟计算机一样,采用一种叫Type-A的插头。
>> USB有多种规格,每种规格传输数据的速度都不相同
>> 3.3.4 无线连接
>> 通过Wi-Fi接入点就能够连接网络。
>> 所有无线连接方式都会面对的情况,那就是需要在安装设备的应用程序时考虑到通信断开的情况,例如先把数据保存在内部,等能连接上的时候再一口气发送过去等,这点工夫还是要费的。
>> 和蓝牙4.0(后文再叙述)相比,Wi-Fi耗电量高,所以不适合那些需要长时间进行通信的设备。
>> 3G/LTE连接方式是通过移动运营商的通信线路来连接网络的。只要从运营商购买SIM卡,再把SIM卡插入设备里就能够通信了。
>> 采用这种连接方式时,只要在信号范围内就能连接上网络,不需要像Wi-Fi那样去在意接入点的设置。
>> [插图]蓝牙蓝牙是一种近距离无线通信标准
>> [插图]IEEE 802.15.4/ZigBee
>> IEEE 802.15.4/ZigBee是一种使用2.4 GHz频段的近距离无线通信标准。其特征是虽然传输速度低,但是与Wi-Fi相比,其耗电量较少。
>> 要把ZigBee跟PC、智能手机联动,就需要给这些设备连接专用的接收器。跟蓝牙相比,这是ZigBee一个非常大的缺点,因为蓝牙上普遍标准安装了接收器
>> [插图]易能森
>> 易能森是一个总称,它指的不仅是一种通信标准,还包括感测设备本身(图3.25)。
>> 易能森旗下设备齐全,包括运动传感器、开关、温度传感器、开关门传感器等形形色色的设备,这些设备都是利用能量采集技术自主发电的。
>> 在不同国家开发和使用无线通信设备时,是需要获得认证的。
◆ 3.4 采集现实世界的信息
>> 表3.4 具有代表性的传感器
>> 每种传感器根据其用途而内置有不同的检测元件(图3.26)。检测元件这种物质的电子特性会根据周围环境的变化而变化。
>> 检测的方法大体上分为两种。第一种方法是用输出电压的变化来表示环境的变化。例如,力觉传感器就是依靠一个叫作应变仪的金属力觉元件来发挥作用的(图3.27)。对传感器施加力,应变仪就会产生微小的变形。因为金属的阻值(输出电压)会根据形变而变化——这是金属的性质——所以只要让一定量的电流流过应变仪,那么根据欧姆定律(电压=电阻×电流),输出电压的值就会变化。例如,把应变仪安装在桥梁和高层建筑物的支柱上,就能感测到细微的变形。只要通过网络把采集到的这些数据汇集到服务器,就能持续监测基础设施了。
>> 第二种方法是用输出电流的变化来表示环境的变化。例如会对光产生反应的光电二极管,只要一照射到光,这种半导体元件就会像太阳能电池那样在两个端子间产生电动势和电流(图3.28)。变异是作为电流变化输出的,但实际上是用一种叫运算放大器的IC把电流变化转换成电压变化的。就结果而言,跟刚才第一种方法情况相同,也是用电压的变化体现环境的变化。
>> 图3.31 处理传感器信号的流程
>> 3.4.4 放大传感器的信号
>> 3.4.5 把模拟信号转换成数字信号
>> 把传感器获取的测量值用连续的电子信号表示出来,就是模拟信号。想用PC处理模拟信号,就需要进行模拟/数字(A/D)转换,把模拟信号转换成离散值,即数字信号。A/D转换操作分成以下3个步骤。
● 采样(sampling)用某个频率来区分模拟输入信号,获取值
● 量化把采样后的值近似表现为离散值
● 编码(coding)把量化后的数值编码成二进制代码
>> 传感器把测量好的结果用电子信号(电压)的形式输出。因为我们无法直接从电子信号中获取想测量的参数,所以就需要一个公式,来把测算的数值转换成参数。例如,在使用红外线测距传感器的情况下,就需要输出电压和距离的关系图。
>> 表3.5 传感器的性能指标
◆ 4.3 先进的感测系统
>> 传感器不只是一个电子零件,还“作为设备”而存在着。然而当代传感器不仅限于这个层面,其中还存在靠多个装置协作来获取信息的机制,也就是说还存在“作为系统”的传感器。
>> GPS是一款利用人造卫星测量位置的传感器。
>> 基础轨道是由24颗人造卫星负责的,事实上用于GPS的人造卫星约有30颗左右,第25颗及以后的卫星则用于提升可靠性和精确度。
◆ 第5章 物联网服务的系统开发
>> 图5.1 物联网系统是由众多领域的技术构成的
>> 就算是小规模的物联网服务,也需要多方面的知识。除了在服务器端运行的应用程序外,还需要掌握构成设备的硬件、嵌入式软件、连接设备与传感器的网关、无线通信技术和网络等多方面的知识
◆ 5.3 物联网服务的系统开发案例
>> 图5.6 楼层环境监控系统的系统结构
◆ 5.4 物联网服务开发的重点
>> 如果积累的数据量不多,那么获取数据的时间和查找速度都不会有问题,但是如果积累的数据量变多,那么还可能会产生数据库访问速度变慢,应用程序变卡等问题(图5.17)。
◆ 第6章 物联网与数据分析
>> 分析大体上可分为3种:基于采集的“可视化”分析,基于统计分析和机器学习等高级分析技术的“发现”分析和“预测”分析(图6.2)。
>> 可视化分析指的是对积累的数据进行加工,根据需求通过采集和图表形式把数据的内容加工成人眼能看懂的形式
>> 发现分析就是在可视化所使用的采集分析的基础上,再通过统计分析和机器学习等高级的方法来发现数据的趋势、规律和结构等。
>> 预测分析即从过去积累的数据中找出数据固有的趋势和规律,以掌握今后可能会发生的状况,知晓未来。
◆ 6.4 分析所需要的要素
>> 出于保存大型数据和图像、语音等非结构化数据的目的,也有人在使用Hadoop的HDFS。HDFS能将多台机器的存储空间虚拟地集中在一起,从而构建一个容量巨大的存储空间。
另外,通过应用MapReduce功能,还能对积累的数据进行分布式处理。利用Hadoop的好处就是能够利用一个叫作Apache Mahout的机器学习库,这个库能在Hadoop的MapReduce上实现机器学习,因此Hadoop被认为是一个兼备积累、加工、分析这3种功能的、非常有用的基础架构。
回应 2022-06-24 20:35:18
论坛 · · · · · ·
试读后还不错,很深刻。 | 来自残羽 | 2020-07-08 07:53:47 |
0 有用 国王KING 2021-06-05 08:15:32
趁着 Harmony OS 的热度迅速读了点物联网相关的知识,挺不错的物联网科普书。
0 有用 周二本 2020-03-06 16:27:30
物联网就是把所有设备连接到互联网。5G通信,大量数据收集、传输变得可行,主动脉变粗;传感器进步,可以搜集混乱数据并过滤转化为信号输出;云处理技术大发展,大数据处理可行……应用,智能家居,智能医疗,智能交通。机器人,深度学习,机器学习,人工智能的世界。
0 有用 KatnissStoa 2022-06-24 20:35:05
车上翻完 毕设用
0 有用 Lonely Highway 2018-06-08 20:50:19
科普级别的图书,介绍的比较全面,想了解物联网的话,值得翻一翻。
0 有用 onionion 2019-10-14 15:19:26
是一本对物联网介绍比较全面的科普书,编排很棒,插图易懂。--19年第20本。
0 有用 哦哟哟 2022-07-02 23:15:30
手绘的图确实挺好看
0 有用 KatnissStoa 2022-06-24 20:35:05
车上翻完 毕设用
0 有用 书路 2022-04-02 23:33:12
内容做得挺认真。对于专业技术人员,相当于给数学研究生介绍1+1;对于其他人,字都认识也没用。
0 有用 一张过去的CD 2022-03-04 18:03:34
帮助不大
0 有用 HPH 2022-03-02 20:10:11
内容比较简单浅显,收获并不多