首页>参考读物>计算机科学与技术>软件与程序设计

物联网程序设计:基于微软的物联网解决方案
作者 : [美] 大卫·博里基(Dawid Borycki) 著
译者 : 史鑫 译
出版日期 : 2019-05-24
ISBN : 978-7-111-62642-8
定价 : 139.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 554
开本 : 16
原书名 : Programming for the Internet of Things: Using Windows 10 IoT Core and Azure IoT Suite
原出版社: Pearson Education Inc.
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书涵盖了三个主要的物联网程序设计部分,可帮助我们快速实施物联网解决方案。具体内容包括:如何准备开发环境、从传感器读取数据、与其他配件通信、构建人工视觉、构建电机、构建听力系统,以及如何将机器学习和人工智能融入设备。书中还展示了如何设置远程遥测和预测性维护,如Azure IoT解决方案,以及如何从头开始构建自定义IoT解决方案。

图书特色

图书前言

近些年,物联网(IoT)、大数据、机器学习和人工智能已成为非常热门的话题。物联网被定义为设备互联的全球网络。这些设备可以像植入式葡萄糖连续监测仪或可穿戴设备一样小,也可以像信用卡大小的计算机一样大,如Raspberry Pi。随着此类设备数量的不断增加,它们产生的数据量也将迅速增加,并将出现新的技术挑战。
第一个挑战与存储有关。小型设备具有物理约束,不能存储大型数据集。第二个挑战是大数据的量超出了传统算法的计算能力范围,需要不同的基于统计的方法。这些方法可以由人工智能的一个分支——机器学习提供。因此,物联网、大数据、机器学习和人工智能是紧密相关的概念。通常,设备是端,它通过网络将数据发送到云,在云中存储和处理数据以获得全新的见解,而这些见解依靠以前的技术是很难获得的。这些见解有助于理解和优化智能设备监控的流程。
虽然这种描述听起来很吸引人,但我们要实施自定义IoT解决方案,所需要学习的新技术很多,多到令人生畏。幸运的是,Microsoft创建了Windows 10 IoT Core和Azure IoT Suite,使你能够快速编写自定义IoT解决方案。它们的功能仅受你的想象力限制。在本书中,许多项目将会逐步呈现。通过完成这些项目,你不仅可以获得设备编程的基础知识,而且还可以编写代码来彻底改变设备和机器人,让它们为你工作!
本书分三个主要部分来帮助读者掌握物联网编程。每部分都包含适当的细节,具体内容包括如何准备开发环境、从传感器读取数据、与其他配件通信、构建人工视觉、构建电机、构建听力系统,以及将机器学习和人工智能融入设备。本书还展示了如何设置远程遥测和预测性维护功能,如Azure IoT解决方案,以及如何从头开始构建自定义物联网解决方案。
本书读者对象和所需技能
本书面向学生、程序员、工程师、爱好者、设计师、科学家和研究人员,他们希望利用现有的编程技能开发定制设备和传感器的软件,并使用云来存储、处理和可视化远程传感器读数。
我们假设你了解C#编程的基础知识,并且有丰富的Windows编程经验。因此,本书没有专门讨论C#语言或编程基础知识。本书不需要你了解音频和图像处理、机器学习或Azure的知识,这些主题将在对应章节中详细介绍。
工具和所需硬件
在本书中,使用Windows 10和Visual Studio 2015/2017作为开发环境。我们使用的大多数硬件组件都来自Adafruit Industries提供的用于Raspberry Pi的Microsoft IoT Pack。本书中出现的其他硬件,如相机、Raspberry Pi的扩展板、通信适配器或电机,都将在相关章节中进行描述。
本书的组织结构
本书分为基础知识、设备编程和Azure IoT Suite三个部分。
第一部分介绍嵌入式编程的基础知识,并讨论它们与桌面、Web和移动应用程序编程的区别,还将展示如何配置编程环境,编写“Hello,world!”程序,并运行在Windows 10 IoT Core上。此外,还会介绍有关UWP线程模型和XAML标记的几个用于声明UI的基本概念。大多数有经验的开发人员可以跳过这部分内容,直接进入第二部分。
第二部分介绍如何用Windows 10 IoT Core和UWP进行设备编程。首先展示如何从多个传感器获取数据并控制设备。随后,将解释如何从麦克风和摄像头获取并处理信号。然后,将展示如何使用各种通信协议,包括串行通信、蓝牙、Wi-Fi和AllJoyn,使物联网模块能够与其他设备通信。此外,还会展示如何控制电机并使用Microsoft Cognitive Services(微软认知服务)和Azure Machine Learning(Azure机器学习)为我们使用的设备添加智能。
第三部分聚焦于云计算,将展示如何使用两个预配置的Azure IoT解决方案进行远程设备遥测和预测性维护。在最后一章中,将介绍从头开始构建自定义物联网解决方案的详细过程。该过程展示了物联网编程的本质,包括如何将远程传感器的数据传输到云,在云中存储、处理和呈现。此外,该部分还会解释如何直接向Windows 10上运行的移动应用程序报告异常传感器读数。
本书有6个附录,补充了一些其他的材料,包括如何使用Visual Basic和JavaScript(附录A)、实现LED闪烁、Raspberry Pi的HDMI模式(附录B)、位编码(附录C)、代码共享策略(附录D)、Visual C++ / Component Extensions相关介绍(附录E)以及如何为物联网开发设置Visual Studio 2017(附录F)。这些附录可在线获取,网址为https://aka.ms/IoT/downloads,也可在机工新阅读网站(www.cmpreading.com)下载。
关于附带内容
书中添加了配套代码以丰富你的学习体验。可以从以下网址下载本书的配套代码:
https://aka.ms/IoT/downloads
也可以从GitHub下载代码:
https://github.com/ProgrammingForTheIoT
源代码放在相应章节和附录的子文件夹中。为了提高图书的可读性,在书中很多地方都会直接参考配套代码,而不是显示完整的代码。在阅读本书时打开配套代码是个不错的主意。
致谢
如果没有Devon Musgrave的支持,这本书今天就不会存在。关于我的这本图书,他热情地给出回应,进行了初步审阅并提供了写作指导。
我很感谢Chaim Krause彻底检查了本书中讨论的每一个项目,并找到了很多问题,有些甚至是非常细微的问题。我也非常感谢Kraig Brockschmidt,他对每一章都进行了全面的评审。他丰富的经验和宝贵的意见大大提高了本书的质量。最后,感谢Traci Cumbay,他的编辑工作非常出色。
非常感谢Kate Shoup管理本书的制作过程。还要感谢Kim Spilker带领大家直至这本书完成。
最后,特别感谢我的妻子Agnieszka和女儿Zuzanna在本书写作过程中给予我的一如既往的支持。

上架指导

计算机\程序设计

封底文字

基于优秀平台快速开发物联网应用使我们可以搭建自定义设备并为其编程,这些设备的功能仅受我们的想象力所限。本书将教你打造物联网应用,其中的示例解决方案会循序渐进地展开。阅读本书,不仅可以学习设备编程的基础知识,还可以为你自己的设备和机器人开发应用程序。

要想通过阅读本书学会物联网应用开发,无须成为底层编程专家。在深入研究更复杂的主题之前,本书解释了基本概念和编程技术。书中包含难度适当的细节介绍,可帮助你快速掌握设备编程。

本书内容包括
构建针对互联嵌入式设备的通用Windows平台(UWP)应用程序
设计和实现后台应用程序,以便与硬件组件无缝集成
使用内建的UWP功能来检测和跟踪人脸
构建人工听觉、视觉和学习系统
处理音频信号,使LED按照音乐节奏闪烁
使用 OpenCV 开发自定义的图像处理算法
使用串口、USB、Wi-Fi和 AllJoyn 等与外部设备通信
设计和实现应用程序,以控制机器人的直流、步进和伺服电机
使用Microsoft认知服务来检测人的情绪
使用Azure IoT Suite构建预测分析和预测性维护系统

本书读者对象
想要开始构建自定义IoT解决方案的C#和.NET开发人员
希望编写功能仅受其想象力限制的自定义设备的嵌入式软件研发人员与爱好者

作者简介

[美] 大卫·博里基(Dawid Borycki) 著:Dawid Borycki 是一名软件工程师和生物医学研究员,他拥有丰富的 Microsoft技术栈相关经验,完成了一系列具有挑战性的项目,包括开发设备原型软件(主要是医疗设备)、嵌入式设备接口以及桌面和移动编程。

译者序

物联网技术的出现,模糊了物理世界和数字世界的边界,逐渐改变着人们的工作和生活方式,我们的日常生活也随之变得越来越数字化。物联网技术的四个关键组件包括:设备和传感器、连接、数据处理和可视化界面。近十年来,嵌入式处理器的成本下降、处理能力上升,以及无线网络和人工智能等关键技术的进步,直接促进了物联网产业的蓬勃发展。在可以预见的不远的将来,物联网应用的规模会越来越大,越来越和人类生活有更紧密的联系。
普通消费者对物联网最直接的感知可能在于智能家居行业的发展,但智能家居只是物联网垂直领域中的一个。在实际的行业应用中、物联网和传统领域的碰撞与结合催生了很多新的领域,例如智慧城市、智能医疗、车联网、智慧农业、智能制造等。物联网的发展带动着这些领域一起进行数字化转型,转型的速度可能比我们感受到的还要快,许多内容已经逐步渗透到了我们的日常生活之中。这些都为广大开发者提供了更多更好的机会。
本书是一本简单易上手的物联网应用编程指南。作者在书中介绍了物联网编程的各个方面,涵盖了物联网编程基础、设备程序编写、云端解决方案定制化等几大方面,涉及设备输入输出、音频图像处理、设备连接、机器学习、数据存储、数据可视化等众多内容。本书主要依赖微软的技术栈。微软为物联网开发者提供了一整套从语言、工具到云端平台的一站式解决方案。在本书中,你将会接触跨平台的C#、C++开发,安装和编写Windows 10 IoT应用程序,并在云端部署和运行Azure IoT套件。如果你对微软的技术栈有一定的了解,那么阅读本书可以让你学会物联网技术的精髓。如果你有一定的物联网技术或嵌入式开发技术基础,那么阅读本书可以让你更加深刻地理解云平台在物联网中扮演的角色。如果你是一名物联网技术的初学者,可能需要一定的C#语言基础,才能更好地参照作者的思路学习和实践。本书不是一本高阶书籍,按照我个人的理解,这是一本偏向于工程应用的实战指南,面向新手和进阶用户。总之,这是一本很好的学习和参考书籍,值得你反复阅读。
在承接本书的翻译工作时,我在微软开发平台事业部工作,主要为物联网开发者提供一流的开发体验。我清楚地知道,中国有着物联网技术发展最好的土壤,中国的物联网技术发展日新月异。本着降低物联网技术学习的门槛,让更多的中文读者有更加丰富的参考技术书目,我努力完成了本书的翻译。物联网技术面广、术语繁杂,有些内容实际没有统一或对应的中文译文。在对这些术语的处理过程中,我尽可能地做到使其符合中文语言习惯。在本书的出版过程中,机械工业出版社华章分社的关敏、赵亮宇编辑付出了辛勤的劳动,在此向她们表示感谢。
最后,希望读到这本书的你能从中获益。

史 鑫
2019年4月于微软雷德蒙德总部

图书目录

译者序
前言
第一部分 基础知识
第1章 嵌入式设备编程 2
1.1 什么是嵌入式设备 2
1.1.1 专用固件 2
1.1.2 微控制器的存储器 3
1.2 嵌入式设备无处不在 4
1.3 连接嵌入式设备:物联网 5
1.4 嵌入式设备的基础 7
1.5 嵌入式设备编程与桌面、Web和移动编程 9
1.5.1 相似之处及用户互动 9
1.5.2 硬件抽象层 10
1.5.3 鲁棒性 10
1.5.4 资源 10
1.5.5 安全 11
1.6 Windows 10 IoT Core和通用Windows平台的优势 11
1.7 总结 12
第2章 嵌入式设备上的UWP 13
2.1 什么是Windows 10 IoT Core 13
2.2 UWP的功能 14
2.3 工具的安装和配置 15
2.3.1 Windows 10 15
2.3.2 Visual Studio 2015或更高版本 16
2.3.3 Windows IoT Core项目模板 17
2.3.4 Windows 10 IoT Core Dashboard 18
2.4 配置设备 19
2.4.1 用于RPi2和RPi3的Windows 10 IoT核心入门套件 19
2.4.2 安装Windows 10 IoT Core 21
2.4.3 配置开发板 22
2.5 “Hello,World!”Windows IoT 24
2.5.1 电路连接 24
2.5.2 使用C#和C++打开和关闭LED 30
2.6 实用工具和程序 40
2.6.1 Device Portal 40
2.6.2 Windows IoT远程客户端 41
2.6.3 SSH 43
2.6.4 FTP 44
2.7 总结 46
第3章 Windows IoT编程精粹 47
3.1 将RPi2连接到外部显示器并进行引导配置 47
3.2 有界面和无界面模式 48
3.3 无界面应用 50
3.3.1 C# 50
3.3.2 C++ 52
3.3.3 小结 58
3.4 有界面应用程序的入口点 58
3.5 异步编程 63
3.5.1 工作线程和线程池 63
3.5.2 计时器 66
3.5.3 工作线程与UI同步 71
3.6 使用DispatcherTimer闪烁LED 75
3.7 总结 79
第4章 有界面设备的用户界面设计 80
4.1 UWP应用程序的UI设计 80
4.2 可视化编辑器 81
4.3 XAML命名空间 83
4.4 控件的声明、属性和特性 85
4.5 Style类 87
4.5.1 样式声明 87
4.5.2 样式定义 88
4.5.3 StaticResource和ThemeResource标记扩展 92
4.5.4 视觉状态和VisualStateManager 95
4.5.5 自适应和状态触发器 100
4.5.6 资源集合 103
4.5.7 默认样式和主题资源 109
4.6 布局 109
4.6.1 StackPanel 109
4.6.2 Grid 111
4.6.3 RelativePanel 114
4.7 事件 116
4.7.1 事件处理 116
4.7.2 事件处理函数和视觉设计器 120
4.7.3 事件传播 121
4.7.4 声明和触发自定义事件 123
4.8 数据绑定 126
4.8.1 绑定控件属性 126
4.8.2 转换器 128
4.8.3 绑定到字段 129
4.8.4 绑定到方法 134
4.9 总结 136
第二部分 设备编程
第5章 从传感器读取数据 139
5.1 位、字节和数据类型 140
5.2 解码和编码二进制数据 141
5.2.1 按位运算符 141
5.2.2 移位运算符、位掩码和二进制表示 141
5.2.3 字节编码和字节顺序 150
5.2.4 BitConverter 151
5.2.5 BitArray 153
5.3 Sense HAT扩展板 156
5.4 用户界面 156
5.5 温度和气压 158
5.6 相对湿度 169
5.7 加速度计和陀螺仪 173
5.8 磁力计 177
5.9 传感器校准 183
5.10 单例模式 184
5.11 总结 185
第6章 输入和输出 187
6.1 触觉按钮 188
6.2 操纵杆 190
6.2.1 中间件层 191
6.2.2 控制杆状态可视化 196
6.3 LED阵列 199
6.4 操纵杆和LED阵列集成 206
6.5 LED阵列与传感器读数集成 209
6.6 触摸屏和手势处理 210
6.7 总结 215
第7章 音频处理 216
7.1 语音合成 216
7.2 语音识别 220
7.2.1 背景 220
7.2.2 应用程序功能和系统配置 220
7.2.3 UI更改 221
7.2.4 一次性识别 222
7.2.5 连续识别 225
7.3 使用语音命令进行设备控制 227
7.3.1 设置硬件 227
7.3.2 编码 228
7.4 波的时域和频域 231
7.4.1 快速傅里叶变换 232
7.4.2 采样率和频率范围 238
7.4.3 分贝 239
7.5 波形谱分析器 240
7.5.1 读取文件 240
7.5.2 波形音频文件格式阅读器 241
7.5.3 信号窗口和短时傅里叶变换 244
7.5.4 谱直方图 245
7.5.5 频谱显示:整合 247
7.5.6 在LED阵列上显示频谱 250
7.6 总结 254
第8章 图像处理 255
8.1 使用USB摄像头获取图像 256
8.2 人脸检测 261
8.3 面部追踪 265
8.3.1 在UI中显示面部位置 268
8.3.2 在LED阵列上显示面部位置 269
8.4 OpenCV与原生代码接口 272
8.4.1 解决方案配置和OpenCV安装 272
8.4.2 图像阈值 274
8.4.3 处理结果的可视化 278
8.4.4 对象检测 283
8.4.5 用于物体识别的机器视觉 286
8.5 总结 294
第9章 连接设备 295
9.1 串行通信 295
9.1.1 UART环回模式 296
9.1.2 项目轮廓 296
9.1.3 串行设备配置 297
9.1.4 写数据和读数据 300
9.2 为设备内部通信写应用程序 303
9.2.1 连接转换器 304
9.2.2 远程控制物联网设备 305
9.3 蓝牙 318
9.3.1 设置连接 319
9.3.2 蓝牙绑定和配对 321
9.3.3 LED颜色命令 323
9.3.4 Windows Runtime组件对LedArray类的要求 324
9.3.5 有界面客户端应用程序 329
9.4 Wi-Fi 331
9.5 AllJoyn 335
9.5.1 内省XML文件 336
9.5.2 AllJoyn Studio 338
9.5.3 生产者 340
9.5.4 IoT Explorer for AllJoyn 343
9.5.5 自定义消费者 345
9.6 Windows Remote Arduino 350
9.7 总结 350
第10章 电机 351
10.1 电机和设备控制基础 351
10.2 电机HAT 352
10.3 脉冲宽度调制 353
10.4 直流电机 359
10.4.1 用PWM信号实现电机控制 360
10.4.2 有界面应用程序 363
10.5 步进电机 365
10.5.1 全步模式控制 367
10.5.2 有界面应用程序 372
10.5.3 自动调节速度 373
10.5.4 微步进 376
10.6 伺服电机 381
10.6.1 硬件组装 382
10.6.2 有界面应用程序 383
10.7 提供者模型 385
10.7.1 Lightning提供者 386
10.7.2 PCA9685控制器提供者 387
10.7.3 直流电机控制 390
10.8 总结 391
第11章 设备学习 392
11.1 微软认知服务 393
11.1.1 情绪检测 393
11.1.2 使用LED阵列指示情绪 402
11.1.3 计算机视觉API 404
11.2 定制人工智能 406
11.2.1 动机和概念 406
11.2.2 Microsoft Azure Machine Learning Studio 408
11.3 异常检测 416
11.3.1 训练数据集采集 416
11.3.2 使用一类支持向量机进行异常检测 421
11.3.3 准备和发布Web服务 424
11.3.4 实现Web服务客户端 427
11.3.5 组合所有的内容 432
11.4 总结 435
第三部分 Azure IoT Suite
第12章 远程监控 438
12.1 设置预先配置的解决方案 439
12.2 预配设备 441
12.2.1 注册新设备 441
12.2.2 发送设备信息 442
12.3 发送遥测数据 448
12.4 接收和处理远程命令 452
12.4.1 更新设备信息 452
12.4.2 响应远程命令 454
12.5 Azure IoT服务 456
12.6 总结 457
第13章 预测性维护 458
13.1 预配置解决方案 459
13.1.1 解决方案仪表板 460
13.1.2 机器学习工作区 461
13.1.3 Cortana Analytics Gallery 465
13.2 Azure资源 465
13.3 Azure Storage 467
13.3.1 预测性维护存储 467
13.3.2 遥测和预测结果存储 468
13.3.3 设备列表 469
13.4 Azure Stream Analytics 470
13.5 解决方案源代码 472
13.6 Event Hub和机器学习事件处理器 473
13.6.1 机器学习数据处理器 477
13.6.2 Azure Table存储 480
13.7 WebJob模拟器 484
13.8 预测性维护Web应用程序 487
13.8.1 模拟服务 487
13.8.2 遥测服务 488
13.9 总结 490
第14章 自定义解决方案 491
14.1 IoT Hub 492
14.1.1 客户端应用 493
14.1.2 设备注册表 496
14.1.3 发送遥测数据 500
14.2 流分析 501
14.2.1 存储账户 501
14.2.2 Azure Table 503
14.2.3 Event Hub 503
14.2.4 Stream Analytics Job 504
14.3 事件处理器 510
14.4 使用Microsoft Power BI进行数据可视化 517
14.5 Notification Hub 521
14.5.1 关联Windows Store 522
14.5.2 通知客户端应用 522
14.5.3 Notification Hub的创建和配置 527
14.5.4 使用事件处理器发送Toast通知 529
14.6 将Event Hub处理器部署到云端 532
14.7 总结 535

教学资源推荐
作者: [美]肯尼斯·A.兰伯特(Kenneth A. Lambert)著
作者: Richard Blum
作者: 骆吉洲
作者: 陈家骏 郑滔 编著
参考读物推荐