新書推薦:
《
英雄之旅:把人生活成一个好故事
》
售價:NT$
398.0
《
分析性一体的涌现:进入精神分析的核心
》
售價:NT$
556.0
《
火枪与账簿:早期经济全球化时代的中国与东亚世界
》
售價:NT$
352.0
《
《全面与进步跨太平洋伙伴关系协定》国有企业条款研究
》
售價:NT$
449.0
《
银行业架构网络BIAN(全球数字化时代金融服务业框架)(数字化转型与创新管理丛书)
》
售價:NT$
449.0
《
金托邦:江湖中的沉重正义
》
售價:NT$
275.0
《
易经今解:释疑·解惑·见微
》
售價:NT$
403.0
《
东欧史(全二册)-“中间地带”的困境
》
售價:NT$
1010.0
|
內容簡介: |
本书涵盖了三个主要的物联网程序设计部分,可帮助我们快速实施物联网解决方案。具体内容包括:如何准备开发环境、从传感器读取数据、与其他配件通信、构建人工视觉、构建电机、构建听力系统,以及如何将机器学习和人工智能融入设备。书中还展示了如何设置远程遥测和预测性维护,如Azure IoT解决方案,以及如何从头开始构建自定义IoT解决方案。
|
關於作者: |
Dawid Borycki 是一名软件工程师和生物医学研究员,他拥有丰富的 Microsoft技术栈相关经验,完成了一系列具有挑战性的项目,包括开发设备原型软件(主要是医疗设备)、嵌入式设备接口以及桌面和移动编程。
|
目錄:
|
译者序
前言
第一部分 基础知识
第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章 嵌入式设备上的UWP13
2.1 什么是Windows 10 IoT Core13
2.2 UWP的功能14
2.3 工具的安装和配置15
2.3.1 Windows 1015
2.3.2 Visual Studio 2015或更高版本16
2.3.3 Windows IoT Core项目模板17
2.3.4 Windows 10 IoT Core Dashboard18
2.4 配置设备19
2.4.1 用于RPi2和RPi3的Windows 10 IoT核心入门套件19
2.4.2 安装Windows 10 IoT Core21
2.4.3 配置开发板22
2.5 “Hello,World!”Windows IoT24
2.5.1 电路连接24
2.5.2 使用C#和C++打开和关闭LED30
2.6 实用工具和程序40
2.6.1 Device Portal40
2.6.2 Windows IoT远程客户端41
2.6.3 SSH43
2.6.4 FTP44
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闪烁LED75
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 视觉状态和VisualStateManager95
4.5.5 自适应和状态触发器100
4.5.6 资源集合103
4.5.7 默认样式和主题资源109
4.6 布局109
4.6.1 StackPanel109
4.6.2 Grid111
4.6.3 RelativePanel114
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 BitConverter151
5.2.5 BitArray153
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-Fi331
9.5 AllJoyn335
9.5.1 内省XML文件336
9.5.2 AllJoyn Studio338
9.5.3 生产者340
9.5.4 IoT Explorer for AllJoyn343
9.5.5 自定义消费者345
9.6 Windows Remote Arduino350
9.7 总结350
第10章 电机351
10.1 电机和设备控制基础351
10.2 电机HAT352
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 计算机视觉API404
11.2 定制人工智能406
11.2.1 动机和概念406
11.2.2 Microsoft Azure Machine Learning Studio408
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 Gallery465
13.2 Azure资源465
13.3 Azure Storage467
13.3.1 预测性维护存储467
13.3.2 遥测和预测结果存储468
13.3.3 设备列表469
13.4 Azure Stream Analytics470
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 Hub492
14.1.1 客户端应用493
14.1.2 设备注册表496
14.1.3 发送遥测数据500
14.2 流分析501
14.2.1 存储账户501
14.2.2 Azure Table503
14.2.3 Event Hub503
14.2.4 Stream Analytics Job504
14.3 事件处理器510
14.4 使用Microsoft Power BI进行数据可视化517
14.5 Notification Hub521
14.5.1 关联Windows Store522
14.5.2 通知客户端应用522
14.5.3 Notification Hub的创建和配置527
14.5.4 使用事件处理器发送Toast通知529
14.6 将Event Hub处理器部署到云端532
14.7 总结535
|
內容試閱:
|
近些年,物联网(IoT)、大数据、机器学习和人工智能已成为非常热门的话题。物联网被定义为设备互联的全球网络。这些设备可以像植入式葡萄糖连续监测仪或可穿戴设备一样小,也可以像信用卡大小的计算机一样大,如Raspberry Pi。随着此类设备数量的不断增加,它们产生的数据量也将迅速增加,并将出现新的技术挑战。
第一个挑战与存储有关。小型设备具有物理约束,不能存储大型数据集。第二个挑战是大数据的量超出了传统算法的计算能力范围,需要不同的基于统计的方法。这些方法可以由人工智能的一个分支——机器学习提供。因此,物联网、大数据、机器学习和人工智能是紧密相关的概念。通常,设备是端,它通过网络将数据发送到云,在云中存储和处理数据以获得全新的见解,而这些见解依靠以前的技术是很难获得的。这些见解有助于理解和优化智能设备监控的流程。
虽然这种描述听起来很吸引人,但我们要实施自定义IoT解决方案,所需要学习的新技术很多,多到令人生畏。幸运的是,Microsoft创建了Windows 10 IoT Core和Azure IoT Suite,使你能够快速编写自定义IoT解决方案。它们的功能仅受你的想象力限制。在本书中,许多项目将会逐步呈现。通过完成这些项目,你不仅可以获得设备编程的基础知识,而且还可以编写代码来彻底改变设备和机器人,让它们为你工作!
本书分三个主要部分来帮助读者掌握物联网编程。每部分都包含适当的细节,具体内容包括如何准备开发环境、从传感器读取数据、与其他配件通信、构建人工视觉、构建电机、构建听力系统,以及将机器学习和人工智能融入设备。本书还展示了如何设置远程遥测和预测性维护功能,如Azure IoT解决方案,以及如何从头开始构建自定义物联网解决方案。
本书读者对象和所需技能
本书面向学生、程序员、工程师、爱好者、设计师、科学家和研究人员,他们希望利用现有的编程技能开发定制设备和传感器的软件,并使用云来存储、处理和可视化远程传感器读数。
我们假设你了解C#编程的基础知识,并且有丰富的Windows编程经验。因此,本书没有专门讨论C#语言或编程基础知识。本书不需要你了解音频和图像处理、机器学习或Azure的知识,这些主题将在对应章节中详细介绍。
工具和所需硬件
在本书中,使用Windows 10和Visual Studio 20152017作为开发环境。我们使用的大多数硬件组件都来自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.msIoTdownloads,也可在华章公司网站下载:www.hzbook.com。
关于附带内容
书中添加了配套代码以丰富你的学习体验。可以从以下网址下载本书的配套代码:
https:aka.msIoTdownloads
也可以从GitHub下载代码:
https:github.comProgrammingForTheIoT
源代码放在相应章节和附录的子文件夹中。为了提高图书的可读性,在书中很多地方都会直接参考配套代码,而不是显示完整的代码。在阅读本书时打开配套代码是个不错的主意。
致谢
如果没有Devon Musgrave的支持,这本书今天就不会存在。关于我的这本图书,他热情地给出回应,进行了初步审阅并提供了写作指导。
我很感谢Chaim Krause彻底检查了本书中讨论的每一个项目,并找到了很多问题,有些甚至是非常细微的问题。我也非常感谢Kraig
|
|