《物联网核心技术丛书物联网程序设计:基于微软的物联网解决方案》[美]大卫・博里基(DawidBor | PDF下载|ePub下载
物联网核心技术丛书物联网程序设计:基于微软的物联网解决方案 版权信息
- 出版社:机械工业出版社
- 出版时间:2019-05-01
- ISBN:9787111626428
- 条形码:9787111626428 ; 978-7-111-62642-8
物联网核心技术丛书物联网程序设计:基于微软的物联网解决方案 本书特色
本书涵盖了三个主要的物联网程序设计部分,可帮助我们快速实施物联网解决方案。具体内容包括:如何准备开发环境、从传感器读取数据、与其他配件通信、构建人工视觉、构建电机、构建听力系统,以及如何将机器学习和人工智能融入设备。书中还展示了如何设置远程遥测和预测性维护,如Azure IoT解决方案,以及如何从头开始构建自定义IoT解决方案。
物联网核心技术丛书物联网程序设计:基于微软的物联网解决方案 内容简介
本书涵盖了三个主要的物联网程序设计部分,可帮助我们快速实施物联网解决方案。具体内容包括:如何准备开发环境、从传感器读取数据、与其他配件通信、构建人工视觉、构建电机、构建听力系统,以及如何将机器学习和人工智能融入设备。书中还展示了如何设置远程遥测和预测性维护,如Azure IoT解决方案,以及如何从头开始构建自定义IoT解决方案。
物联网核心技术丛书物联网程序设计:基于微软的物联网解决方案 目录
译者序
前言
**部分 基础知识
第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
前言
**部分 基础知识
第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
物联网核心技术丛书物联网程序设计:基于微软的物联网解决方案 作者简介
Dawid Borycki 是一名软件工程师和生物医学研究员,他拥有丰富的 Microsoft技术栈相关经验,完成了一系列具有挑战性的项目,包括开发设备原型软件(主要是医疗设备)、嵌入式设备接口以及桌面和移动编程。