从芯片到云端:Python物联网全栈开发实践
第1章 物联网简介 1
1.1 物联网定义 1
1.2 物联网发展趋势 1
1.3 物联网应用与技术 2
1.3.1 物联网核心价值 2
1.3.2 物联网发展阶段 3
1.3.3 物联网分层 5
1.3.4 物联网数据传输与网络拓扑 5
1.3.5 物联网实施所需技术栈 8
1.3.6 标准、现状与未来 10
查看完整
1.1 物联网定义 1
1.2 物联网发展趋势 1
1.3 物联网应用与技术 2
1.3.1 物联网核心价值 2
1.3.2 物联网发展阶段 3
1.3.3 物联网分层 5
1.3.4 物联网数据传输与网络拓扑 5
1.3.5 物联网实施所需技术栈 8
1.3.6 标准、现状与未来 10
查看完整
刘凯,服务于微电子行业二十余载的资深工程师。曾在飞利浦半导体(即NXP恩智浦半导体前身)任资深工程师,从事软、硬件开发与产品设计等工作,有用汇编/C/C++开发嵌入式系统固件、用Perl/Python脚本做开发支持工具、用PHP/Java/Python做设备云和Web应用的丰富经验。现作为独立系统集成开发商,专业从事物联网相关项目设计和咨询服务,主攻嵌入式、RFID、微控制器、物联网、WSN、Linux、Python、开源等领域。
物联网开发重新定义了“全栈开发”的范围。Python作为一门快速发展的语言,已经成为系统集成领域的优选语言之一,其可覆盖从电路逻辑设计到大数据分析的物联网端到端开发。各领域开发者可以利用Python交叉涉足物联网设备、边缘计算、云计算、数据分析的工程设计。
《从芯片到云端:Python物联网全栈开发实践》尝试让读者建立物联网设计的整体概念,从基础概念开始,到相关技术选型、开源工程、参考设计与经验分享。无论是物联网领域的创业者,还是系统架构师,都可从本书中获得灵感。本书对于嵌入式开发领域的开发者尤具学习价值,利用Python可加快开发迭代速度、降低开发成本,并可以基于嵌入式Python建立完整的物联网软硬件生态。
《从芯片到云端:Python物联网全栈开发实践》尝试让读者建立物联网设计的整体概念,从基础概念开始,到相关技术选型、开源工程、参考设计与经验分享。无论是物联网领域的创业者,还是系统架构师,都可从本书中获得灵感。本书对于嵌入式开发领域的开发者尤具学习价值,利用Python可加快开发迭代速度、降低开发成本,并可以基于嵌入式Python建立完整的物联网软硬件生态。
第1章 物联网简介 1
1.1 物联网定义 1
1.2 物联网发展趋势 1
1.3 物联网应用与技术 2
1.3.1 物联网核心价值 2
1.3.2 物联网发展阶段 3
1.3.3 物联网分层 5
1.3.4 物联网数据传输与网络拓扑 5
1.3.5 物联网实施所需技术栈 8
1.3.6 标准、现状与未来 10
1.4 本章小结 16
第2章 Python语言基础 17
2.1 Python的由来与特征 19
2.1.1 概述 19
2.1.2 设计定位与哲学 19
2.1.3 优点与缺点 20
2.2 Python与物联网开发 22
2.3 获取Python资源 24
2.3.1 Python主程序 24
2.3.2 Python文档 24
2.3.3 Python PyPI 24
2.4 Python解释器运行环境 26
2.4.1 REPL交互模式 26
2.4.2 直接运行与模块运行 26
2.4.3 脚本文件直接运行 27
2.4.4 源程序文字编码与结束符 28
2.5 Python类型与语法 29
2.5.1 动态类型 29
2.5.2 传值与传引用 30
2.5.3 数据类型 31
2.5.4 内置类型 32
2.5.5 内置类型的普适操作 34
2.5.6 数值类型 35
2.5.7 布尔类型 37
2.5.8 迭代器类型 37
2.5.9 生成器类型 38
2.5.10 yield表达式 39
2.5.11 序列类型 39
2.5.12 set集合类型 54
2.5.13 映射类型 55
2.5.14 其他类型 56
2.5.15 控制流 59
2.5.16 内置函数 61
2.5.17 用户自定义函数 62
2.5.18 模块 65
2.5.19 输入/输出 68
2.5.20 面向对象编程 74
2.5.21 进程和线程 82
2.5.22 错误和异常 90
2.6 Python标准库概览 93
2.7 本章小结 94
第3章 Python语言进阶 95
3.1 HOWTO:常见任务和解决方案 95
3.1.1 数据类型转换 96
3.1.2 数据的调试打印 100
3.1.3 数据类型资源优化 102
3.1.4 数据结构与算法 102
3.1.5 数据缓存 103
3.1.6 数据多路复用和解复用 104
3.1.7 数据序列化和反序列化 107
3.1.8 数据压缩和解压缩 119
3.1.9 数据加密 120
3.1.10 数据传输 121
3.1.11 数据后处理 121
3.1.12 数据持久化 121
3.1.13 数据交换 122
3.2 HOWTO:函数式编程 123
3.2.1 高阶函数 123
3.2.2 map函数 124
3.2.3 reduce函数 124
3.2.4 filter函数 124
3.2.5 sorted函数 125
3.2.6 返回函数 125
3.2.7 闭包 126
3.2.8 匿名函数 126
3.2.9 装饰器 127
3.3 HOWTO:并发运行模型 131
3.3.1 协程 131
3.3.2 I/O模型 134
3.4 HOWTO:日期与时间 136
3.4.1 类型转换 136
3.4.2 时区的处理 138
3.5 Python版本迁移 139
3.5.1 Python 2与Python 3的区别 140
3.5.2 Python 2到Python 3的流程 140
3.5.3 多个Python版本共存 140
3.5.4 virtualenv 141
3.5.5 Windows多个版本共存 141
3.5.6 Linux多个版本共存 142
3.6 其他常见技巧 143
3.6.1 常数类型的模拟 143
3.6.2 枚举类型的模拟 143
3.6.3 开发自定义模块 144
3.7 Python与其他语言 145
3.8 Python语言扩展 151
3.8.1 C语言扩展Python 151
3.8.2 ctypes访问Windows DLL 153
3.8.3 Jython访问Java类 154
3.8.4 IronPython访问.NET 155
3.9 Python加速 157
3.9.1 PyPy 158
3.9.2 Cython 159
3.9.3 PyCUDA 159
3.9.4 PyOpenCL 159
3.9.5 Theano 159
3.9.6 Nuitka 159
3.10 本章小结 160
第4章 嵌入式系统开发 161
4.1 嵌入式系统硬件分类 162
4.1.1 MCU 162
4.1.2 MPU 163
4.1.3 DSP 163
4.1.4 SMP 164
4.1.5 异构大小核 164
4.1.6 FPGA原型 165
4.1.7 SoPC 165
4.1.8 GPU 167
4.1.9 哈佛结构和冯•诺依曼结构 168
4.2 电路原型设计 168
4.2.1 集成电路设计流程 170
4.2.2 模拟电路原型设计 170
4.2.3 数字电路原型设计 175
4.3 常见嵌入式微控制器(MCU) 179
4.3.1 MCU市场状况 179
4.3.2 Arduino/Wiring 180
4.3.3 ARM mbed 181
4.3.4 设计专属架构和专属MCU 182
4.3.5 ARM MCU差异化竞争 182
4.4 常见嵌入式处理器和主板 184
4.4.1 ARM架构 185
4.4.2 其余的ARM Linux主板 188
4.4.3 MIPS开发板 190
4.4.4 x86 mini-ITX 191
4.5 常见传感器和执行器 192
4.5.1 虚拟传感器 193
4.5.2 智能传感器 193
4.5.3 专用传感器 194
4.5.4 执行器 195
4.6 物联网通信集成电路 196
4.7 嵌入式系统开发语言演进 197
4.7.1 从汇编到嵌入式C 197
4.7.2 从C到C++ 199
4.7.3 压缩C++的系统消耗 199
4.7.4 C++适合物联网开发 200
4.8 C/C++的编程模式和技巧 204
4.8.1 C/C++设计模式 205
4.8.2 回调函数 206
4.8.3 有限状态机模型 209
4.8.4 善用结构体 211
4.8.5 C/C++协程 214
4.9 开发生态选择 215
4.9.1 工业标准与厂家私有指令集架构 215
4.9.2 硬件与软件平台选择 215
4.9.3 编译器选择 216
4.10 常见操作系统 217
4.10.1 无操作系统 217
4.10.2 RTOS的优势 218
4.10.3 uC/OS 219
4.10.4 Keil RTX 219
4.10.5 mbed RTOS与mbed OS 220
4.10.6 FreeRTOS 221
4.10.7 Linux是开发复杂联网设备的现实选择 222
4.11 物联网中间件 227
4.11.1 WSN堆栈 227
4.11.2 TCP/IP 227
4.11.3 USB 227
4.11.4 FAT/FS 228
4.11.5 GUI 228
4.11.6 Terminal 228
4.11.7 MQTT 228
4.11.8 CoAP 229
4.12 物联网安全性 230
4.12.1 安全相关芯片 230
4.12.2 安全中间件 231
4.12.3 Python安全算法 232
4.13 设备固件更新 232
4.13.1 固件更新技术发展史 232
4.13.2 本地固件更新 234
4.13.3 远程固件更新 234
4.13.4 固件升级定制 234
4.14 各类串口实现联网 235
4.14.1 串口协议的选择 235
4.14.2 模拟串口设备 236
4.14.3 其他类型虚拟设备 238
4.14.4 ISP编程器 238
4.14.5 串口设备监控器 239
4.15 本章小结 239
第5章 设备连接和编程接口 240
5.1 设备连接概述 240
5.1.1 嵌入式系统连接层次 240
5.1.2 选择正确的连接方案 241
5.1.3 具体落实连接设计 241
5.1.4 本章内容安排 242
5.2 连接能力汇总 242
5.2.1 连接由芯片开始 243
5.2.2 芯片内部系统总线 245
5.2.3 芯片间连接技术 246
5.2.4 设备间连接 249
5.2.5 设备组网 250
5.2.6 设备组网与联网的无线技术 253
5.2.7 连接性回顾 266
5.3 Linux文件系统 266
5.3.1 设备即文件 266
5.3.2 设备文件系统 267
5.3.3 Linux设备文件的演变 268
5.3.4 文件I/O操作 271
5.3.5 Linux硬件编程 272
5.4 并行接口 273
5.4.1 老旧的PC并行接口 274
5.4.2 高速总线 274
5.4.3 GPIO 274
5.4.4 Linux访问GPIO 275
5.4.5 GPIO的Python包 276
5.5 串行接口 277
5.5.1 异步通信串行口 277
5.5.2 I2C总线 284
5.5.3 SPI总线 290
5.5.4 与其他硬件平台相关的Python包 294
5.6 USB总线 296
5.6.1 USB Endpoints 297
5.6.2 USB Device/Host/OTG 297
5.6.3 USB 3.0 297
5.6.4 libUSB 297
5.6.5 PyUSB 298
5.6.6 标准化USB桥接 299
5.6.7 与USB相关的其他设计 301
5.7 Linux网络设备驱动 301
5.7.1 TCP/IP套接字编程 301
5.7.2 IEEE 802.3到IEEE 802.11 302
5.7.3 网络通信实现方案 302
5.7.4 私有通信协议栈 305
5.7.5 短距离无线连接 307
5.8 工业总线 310
5.8.1 CAN总线 310
5.8.2 LIN总线 312
5.8.3 其他ASIC 313
5.8.4 定制Python扩展 313
5.8.5 Windows DLL 314
5.9 本章小结 314
第6章 嵌入式Python虚拟机 315
6.1 嵌入式高级语言平台大荟萃 315
6.1.1 高级语言与二次开发 315
6.1.2 BASIC 319
6.1.3 Java 319
6.1.4 Lua 322
6.1.5 JavaScript 322
6.1.6 .NET 323
6.2 前一代Python虚拟机 323
6.2.1 Telit GPRS模块 323
6.2.2 Symbian 325
6.2.3 Windows CE 325
6.2.4 OpenMoko 325
6.3 深嵌入式Python平台 326
6.3.1 LEGO EV3 326
6.3.2 TinyPy 326
6.3.3 嵌入式Python的局限 327
6.4 PyMite 328
6.4.1 硬件平台 328
6.4.2 维护者 329
6.4.3 pymbed分支 329
6.4.4 开发现状 331
6.4.5 文档 332
6.4.6 源码树 333
6.4.7 使用流程 335
6.4.8 实践 336
6.4.9 工程小结 337
6.4.10 网络资源 338
6.5 VIPER/Zerynth 338
6.5.1 硬件平台 339
6.5.2 Zerynth Studio 340
6.5.3 与标准Python的区别 341
6.5.4 快速启动 342
6.5.5 坎坷的使用过程 342
6.5.6 Zerynth目录结构 343
6.5.7 硬件相关库 344
6.5.8 其他特性 355
6.6 MicroPython 356
6.6.1 工程背景知识 356
6.6.2 在线评估网页 358
6.6.3 官方硬件平台分支 358
6.6.4 衍生项目 359
6.6.5 UNIX版本 360
6.6.6 MicroPython库 363
6.6.7 STM32HAL分支 365
6.6.8 NUCLEO-F401RE适配 367
6.6.9 pyboard评估 372
6.6.10 异步处理和中断处理 389
6.6.11 中断处理的普遍问题 392
6.6.12 使用心得 395
6.6.13 商品化与知识产权 396
6.6.14 BBC microbit 396
6.7 Linux与Python 398
6.7.1 Linux中Python的运行环境 398
6.7.2 交叉编译CPython 401
6.7.3 交叉编译MicroPython 402
6.7.4 Jython运行环境 404
6.7.5 Android SL4A 406
6.8 本章小结 407
第7章 Python应用APP 408
7.1 基于字符的人机界面 409
7.1.1 命令行参数 409
7.1.2 字符终端开发 410
7.1.3 ncurses 411
7.2 桌面GUI开发 412
7.2.1 Tkinter 413
7.2.2 wxPython 414
7.2.3 Boa Constructor 415
7.2.4 wxGlade 416
7.2.5 PyGTK 417
7.2.6 PyQt 419
7.2.7 PySide 420
7.2.8 Enthought 421
7.2.9 Cocoa+PyObjC 423
7.2.10 Java AWT 424
7.2.11 IronPython与WPF 425
7.2.12 其他UI 425
7.3 本地Web GUI 426
7.3.1 与WebKit相关的Python包 427
7.3.2 OneRing 427
7.3.3 Pyjs 427
7.3.4 Python Flexx 428
7.4 本地可执行文件 429
7.4.1 Linux可执行文件 429
7.4.2 Mac OS X应用程序包 430
7.4.3 Windows可执行文件 430
7.4.4 pyinstaller 430
7.4.5 py2exe 430
7.4.6 py2app 430
7.4.7 cx_Freeze 431
7.4.8 Windows系统服务 431
7.4.9 Windows定时任务 432
7.4.10 Linux系统服务 433
7.4.11 Linux定时任务 435
7.5 移动APP开发 436
7.5.1 响应式网页 437
7.5.2 PhoneGAP应用开发 437
7.5.3 SL4A 437
7.5.4 QPython开发 441
7.5.5 Kivy 443
7.5.6 其他开发方式 449
7.6 本章小结 449
第8章 Python开发辅助支持 451
8.1 物联网开发需要不断优化 452
8.2 专属小工具 452
8.3 原型验证 458
8.4 代码生成器 459
8.5 软件测试 461
8.6 文档生成器 468
8.7 文档操纵 477
8.8 国际化与本地化 479
8.9 配置管理 484
8.10 数据与素材处理 486
8.11 通信报文分析 495
8.12 与Arduino/mbed相关的Python包 497
8.13 虚拟仪器 509
8.14 3D/VR/AR 512
8.15 本章小结 515
第9章 物联网服务器端设计 516
9.1 物联网计算模型 517
9.2 物联网与互联网设计异同 526
9.3 物联网网关与边缘服务器 535
9.3.1 Python socket服务器 536
9.3.2 pyserial RFC2217 536
9.3.3 SubGHz网关panStamp 537
9.3.4 Rascal micro 538
9.3.5 Java IoT网关 539
9.4 物联网设备接入协议 540
9.5 高可用性与高并发性 575
9.7 Web开发框架 589
9.8 物联网安全 597
9.9 服务器交付 603
9.10 服务器运维 605
9.11 物联网系统设计实践 614
9.12 本章小结 625
第10章 融合应用与数据分析 626
10.1 物联网是可编程的 626
10.2 数据统计、分析和挖掘 630
10.3 采集整理自有数据 633
10.4 采集第三方数据 637
10.5 数据分析 647
10.6 数据可视化 663
10.7 本章小结 682
推荐书目与结束语 683
(篇幅有限,完整目录请查看本书)
^ 收 起
1.1 物联网定义 1
1.2 物联网发展趋势 1
1.3 物联网应用与技术 2
1.3.1 物联网核心价值 2
1.3.2 物联网发展阶段 3
1.3.3 物联网分层 5
1.3.4 物联网数据传输与网络拓扑 5
1.3.5 物联网实施所需技术栈 8
1.3.6 标准、现状与未来 10
1.4 本章小结 16
第2章 Python语言基础 17
2.1 Python的由来与特征 19
2.1.1 概述 19
2.1.2 设计定位与哲学 19
2.1.3 优点与缺点 20
2.2 Python与物联网开发 22
2.3 获取Python资源 24
2.3.1 Python主程序 24
2.3.2 Python文档 24
2.3.3 Python PyPI 24
2.4 Python解释器运行环境 26
2.4.1 REPL交互模式 26
2.4.2 直接运行与模块运行 26
2.4.3 脚本文件直接运行 27
2.4.4 源程序文字编码与结束符 28
2.5 Python类型与语法 29
2.5.1 动态类型 29
2.5.2 传值与传引用 30
2.5.3 数据类型 31
2.5.4 内置类型 32
2.5.5 内置类型的普适操作 34
2.5.6 数值类型 35
2.5.7 布尔类型 37
2.5.8 迭代器类型 37
2.5.9 生成器类型 38
2.5.10 yield表达式 39
2.5.11 序列类型 39
2.5.12 set集合类型 54
2.5.13 映射类型 55
2.5.14 其他类型 56
2.5.15 控制流 59
2.5.16 内置函数 61
2.5.17 用户自定义函数 62
2.5.18 模块 65
2.5.19 输入/输出 68
2.5.20 面向对象编程 74
2.5.21 进程和线程 82
2.5.22 错误和异常 90
2.6 Python标准库概览 93
2.7 本章小结 94
第3章 Python语言进阶 95
3.1 HOWTO:常见任务和解决方案 95
3.1.1 数据类型转换 96
3.1.2 数据的调试打印 100
3.1.3 数据类型资源优化 102
3.1.4 数据结构与算法 102
3.1.5 数据缓存 103
3.1.6 数据多路复用和解复用 104
3.1.7 数据序列化和反序列化 107
3.1.8 数据压缩和解压缩 119
3.1.9 数据加密 120
3.1.10 数据传输 121
3.1.11 数据后处理 121
3.1.12 数据持久化 121
3.1.13 数据交换 122
3.2 HOWTO:函数式编程 123
3.2.1 高阶函数 123
3.2.2 map函数 124
3.2.3 reduce函数 124
3.2.4 filter函数 124
3.2.5 sorted函数 125
3.2.6 返回函数 125
3.2.7 闭包 126
3.2.8 匿名函数 126
3.2.9 装饰器 127
3.3 HOWTO:并发运行模型 131
3.3.1 协程 131
3.3.2 I/O模型 134
3.4 HOWTO:日期与时间 136
3.4.1 类型转换 136
3.4.2 时区的处理 138
3.5 Python版本迁移 139
3.5.1 Python 2与Python 3的区别 140
3.5.2 Python 2到Python 3的流程 140
3.5.3 多个Python版本共存 140
3.5.4 virtualenv 141
3.5.5 Windows多个版本共存 141
3.5.6 Linux多个版本共存 142
3.6 其他常见技巧 143
3.6.1 常数类型的模拟 143
3.6.2 枚举类型的模拟 143
3.6.3 开发自定义模块 144
3.7 Python与其他语言 145
3.8 Python语言扩展 151
3.8.1 C语言扩展Python 151
3.8.2 ctypes访问Windows DLL 153
3.8.3 Jython访问Java类 154
3.8.4 IronPython访问.NET 155
3.9 Python加速 157
3.9.1 PyPy 158
3.9.2 Cython 159
3.9.3 PyCUDA 159
3.9.4 PyOpenCL 159
3.9.5 Theano 159
3.9.6 Nuitka 159
3.10 本章小结 160
第4章 嵌入式系统开发 161
4.1 嵌入式系统硬件分类 162
4.1.1 MCU 162
4.1.2 MPU 163
4.1.3 DSP 163
4.1.4 SMP 164
4.1.5 异构大小核 164
4.1.6 FPGA原型 165
4.1.7 SoPC 165
4.1.8 GPU 167
4.1.9 哈佛结构和冯•诺依曼结构 168
4.2 电路原型设计 168
4.2.1 集成电路设计流程 170
4.2.2 模拟电路原型设计 170
4.2.3 数字电路原型设计 175
4.3 常见嵌入式微控制器(MCU) 179
4.3.1 MCU市场状况 179
4.3.2 Arduino/Wiring 180
4.3.3 ARM mbed 181
4.3.4 设计专属架构和专属MCU 182
4.3.5 ARM MCU差异化竞争 182
4.4 常见嵌入式处理器和主板 184
4.4.1 ARM架构 185
4.4.2 其余的ARM Linux主板 188
4.4.3 MIPS开发板 190
4.4.4 x86 mini-ITX 191
4.5 常见传感器和执行器 192
4.5.1 虚拟传感器 193
4.5.2 智能传感器 193
4.5.3 专用传感器 194
4.5.4 执行器 195
4.6 物联网通信集成电路 196
4.7 嵌入式系统开发语言演进 197
4.7.1 从汇编到嵌入式C 197
4.7.2 从C到C++ 199
4.7.3 压缩C++的系统消耗 199
4.7.4 C++适合物联网开发 200
4.8 C/C++的编程模式和技巧 204
4.8.1 C/C++设计模式 205
4.8.2 回调函数 206
4.8.3 有限状态机模型 209
4.8.4 善用结构体 211
4.8.5 C/C++协程 214
4.9 开发生态选择 215
4.9.1 工业标准与厂家私有指令集架构 215
4.9.2 硬件与软件平台选择 215
4.9.3 编译器选择 216
4.10 常见操作系统 217
4.10.1 无操作系统 217
4.10.2 RTOS的优势 218
4.10.3 uC/OS 219
4.10.4 Keil RTX 219
4.10.5 mbed RTOS与mbed OS 220
4.10.6 FreeRTOS 221
4.10.7 Linux是开发复杂联网设备的现实选择 222
4.11 物联网中间件 227
4.11.1 WSN堆栈 227
4.11.2 TCP/IP 227
4.11.3 USB 227
4.11.4 FAT/FS 228
4.11.5 GUI 228
4.11.6 Terminal 228
4.11.7 MQTT 228
4.11.8 CoAP 229
4.12 物联网安全性 230
4.12.1 安全相关芯片 230
4.12.2 安全中间件 231
4.12.3 Python安全算法 232
4.13 设备固件更新 232
4.13.1 固件更新技术发展史 232
4.13.2 本地固件更新 234
4.13.3 远程固件更新 234
4.13.4 固件升级定制 234
4.14 各类串口实现联网 235
4.14.1 串口协议的选择 235
4.14.2 模拟串口设备 236
4.14.3 其他类型虚拟设备 238
4.14.4 ISP编程器 238
4.14.5 串口设备监控器 239
4.15 本章小结 239
第5章 设备连接和编程接口 240
5.1 设备连接概述 240
5.1.1 嵌入式系统连接层次 240
5.1.2 选择正确的连接方案 241
5.1.3 具体落实连接设计 241
5.1.4 本章内容安排 242
5.2 连接能力汇总 242
5.2.1 连接由芯片开始 243
5.2.2 芯片内部系统总线 245
5.2.3 芯片间连接技术 246
5.2.4 设备间连接 249
5.2.5 设备组网 250
5.2.6 设备组网与联网的无线技术 253
5.2.7 连接性回顾 266
5.3 Linux文件系统 266
5.3.1 设备即文件 266
5.3.2 设备文件系统 267
5.3.3 Linux设备文件的演变 268
5.3.4 文件I/O操作 271
5.3.5 Linux硬件编程 272
5.4 并行接口 273
5.4.1 老旧的PC并行接口 274
5.4.2 高速总线 274
5.4.3 GPIO 274
5.4.4 Linux访问GPIO 275
5.4.5 GPIO的Python包 276
5.5 串行接口 277
5.5.1 异步通信串行口 277
5.5.2 I2C总线 284
5.5.3 SPI总线 290
5.5.4 与其他硬件平台相关的Python包 294
5.6 USB总线 296
5.6.1 USB Endpoints 297
5.6.2 USB Device/Host/OTG 297
5.6.3 USB 3.0 297
5.6.4 libUSB 297
5.6.5 PyUSB 298
5.6.6 标准化USB桥接 299
5.6.7 与USB相关的其他设计 301
5.7 Linux网络设备驱动 301
5.7.1 TCP/IP套接字编程 301
5.7.2 IEEE 802.3到IEEE 802.11 302
5.7.3 网络通信实现方案 302
5.7.4 私有通信协议栈 305
5.7.5 短距离无线连接 307
5.8 工业总线 310
5.8.1 CAN总线 310
5.8.2 LIN总线 312
5.8.3 其他ASIC 313
5.8.4 定制Python扩展 313
5.8.5 Windows DLL 314
5.9 本章小结 314
第6章 嵌入式Python虚拟机 315
6.1 嵌入式高级语言平台大荟萃 315
6.1.1 高级语言与二次开发 315
6.1.2 BASIC 319
6.1.3 Java 319
6.1.4 Lua 322
6.1.5 JavaScript 322
6.1.6 .NET 323
6.2 前一代Python虚拟机 323
6.2.1 Telit GPRS模块 323
6.2.2 Symbian 325
6.2.3 Windows CE 325
6.2.4 OpenMoko 325
6.3 深嵌入式Python平台 326
6.3.1 LEGO EV3 326
6.3.2 TinyPy 326
6.3.3 嵌入式Python的局限 327
6.4 PyMite 328
6.4.1 硬件平台 328
6.4.2 维护者 329
6.4.3 pymbed分支 329
6.4.4 开发现状 331
6.4.5 文档 332
6.4.6 源码树 333
6.4.7 使用流程 335
6.4.8 实践 336
6.4.9 工程小结 337
6.4.10 网络资源 338
6.5 VIPER/Zerynth 338
6.5.1 硬件平台 339
6.5.2 Zerynth Studio 340
6.5.3 与标准Python的区别 341
6.5.4 快速启动 342
6.5.5 坎坷的使用过程 342
6.5.6 Zerynth目录结构 343
6.5.7 硬件相关库 344
6.5.8 其他特性 355
6.6 MicroPython 356
6.6.1 工程背景知识 356
6.6.2 在线评估网页 358
6.6.3 官方硬件平台分支 358
6.6.4 衍生项目 359
6.6.5 UNIX版本 360
6.6.6 MicroPython库 363
6.6.7 STM32HAL分支 365
6.6.8 NUCLEO-F401RE适配 367
6.6.9 pyboard评估 372
6.6.10 异步处理和中断处理 389
6.6.11 中断处理的普遍问题 392
6.6.12 使用心得 395
6.6.13 商品化与知识产权 396
6.6.14 BBC microbit 396
6.7 Linux与Python 398
6.7.1 Linux中Python的运行环境 398
6.7.2 交叉编译CPython 401
6.7.3 交叉编译MicroPython 402
6.7.4 Jython运行环境 404
6.7.5 Android SL4A 406
6.8 本章小结 407
第7章 Python应用APP 408
7.1 基于字符的人机界面 409
7.1.1 命令行参数 409
7.1.2 字符终端开发 410
7.1.3 ncurses 411
7.2 桌面GUI开发 412
7.2.1 Tkinter 413
7.2.2 wxPython 414
7.2.3 Boa Constructor 415
7.2.4 wxGlade 416
7.2.5 PyGTK 417
7.2.6 PyQt 419
7.2.7 PySide 420
7.2.8 Enthought 421
7.2.9 Cocoa+PyObjC 423
7.2.10 Java AWT 424
7.2.11 IronPython与WPF 425
7.2.12 其他UI 425
7.3 本地Web GUI 426
7.3.1 与WebKit相关的Python包 427
7.3.2 OneRing 427
7.3.3 Pyjs 427
7.3.4 Python Flexx 428
7.4 本地可执行文件 429
7.4.1 Linux可执行文件 429
7.4.2 Mac OS X应用程序包 430
7.4.3 Windows可执行文件 430
7.4.4 pyinstaller 430
7.4.5 py2exe 430
7.4.6 py2app 430
7.4.7 cx_Freeze 431
7.4.8 Windows系统服务 431
7.4.9 Windows定时任务 432
7.4.10 Linux系统服务 433
7.4.11 Linux定时任务 435
7.5 移动APP开发 436
7.5.1 响应式网页 437
7.5.2 PhoneGAP应用开发 437
7.5.3 SL4A 437
7.5.4 QPython开发 441
7.5.5 Kivy 443
7.5.6 其他开发方式 449
7.6 本章小结 449
第8章 Python开发辅助支持 451
8.1 物联网开发需要不断优化 452
8.2 专属小工具 452
8.3 原型验证 458
8.4 代码生成器 459
8.5 软件测试 461
8.6 文档生成器 468
8.7 文档操纵 477
8.8 国际化与本地化 479
8.9 配置管理 484
8.10 数据与素材处理 486
8.11 通信报文分析 495
8.12 与Arduino/mbed相关的Python包 497
8.13 虚拟仪器 509
8.14 3D/VR/AR 512
8.15 本章小结 515
第9章 物联网服务器端设计 516
9.1 物联网计算模型 517
9.2 物联网与互联网设计异同 526
9.3 物联网网关与边缘服务器 535
9.3.1 Python socket服务器 536
9.3.2 pyserial RFC2217 536
9.3.3 SubGHz网关panStamp 537
9.3.4 Rascal micro 538
9.3.5 Java IoT网关 539
9.4 物联网设备接入协议 540
9.5 高可用性与高并发性 575
9.7 Web开发框架 589
9.8 物联网安全 597
9.9 服务器交付 603
9.10 服务器运维 605
9.11 物联网系统设计实践 614
9.12 本章小结 625
第10章 融合应用与数据分析 626
10.1 物联网是可编程的 626
10.2 数据统计、分析和挖掘 630
10.3 采集整理自有数据 633
10.4 采集第三方数据 637
10.5 数据分析 647
10.6 数据可视化 663
10.7 本章小结 682
推荐书目与结束语 683
(篇幅有限,完整目录请查看本书)
^ 收 起
刘凯,服务于微电子行业二十余载的资深工程师。曾在飞利浦半导体(即NXP恩智浦半导体前身)任资深工程师,从事软、硬件开发与产品设计等工作,有用汇编/C/C++开发嵌入式系统固件、用Perl/Python脚本做开发支持工具、用PHP/Java/Python做设备云和Web应用的丰富经验。现作为独立系统集成开发商,专业从事物联网相关项目设计和咨询服务,主攻嵌入式、RFID、微控制器、物联网、WSN、Linux、Python、开源等领域。
物联网开发重新定义了“全栈开发”的范围。Python作为一门快速发展的语言,已经成为系统集成领域的优选语言之一,其可覆盖从电路逻辑设计到大数据分析的物联网端到端开发。各领域开发者可以利用Python交叉涉足物联网设备、边缘计算、云计算、数据分析的工程设计。
《从芯片到云端:Python物联网全栈开发实践》尝试让读者建立物联网设计的整体概念,从基础概念开始,到相关技术选型、开源工程、参考设计与经验分享。无论是物联网领域的创业者,还是系统架构师,都可从本书中获得灵感。本书对于嵌入式开发领域的开发者尤具学习价值,利用Python可加快开发迭代速度、降低开发成本,并可以基于嵌入式Python建立完整的物联网软硬件生态。
《从芯片到云端:Python物联网全栈开发实践》尝试让读者建立物联网设计的整体概念,从基础概念开始,到相关技术选型、开源工程、参考设计与经验分享。无论是物联网领域的创业者,还是系统架构师,都可从本书中获得灵感。本书对于嵌入式开发领域的开发者尤具学习价值,利用Python可加快开发迭代速度、降低开发成本,并可以基于嵌入式Python建立完整的物联网软硬件生态。
比价列表
1人想要
公众号、微信群
缺书网
微信公众号
微信公众号
扫码进群
实时获取购书优惠
实时获取购书优惠