新到貨2本75折
從芯片到雲端:Python物聯網全棧開發實踐

從芯片到雲端:Python物聯網全棧開發實踐

  • 定價:714
  • 運送方式:
  • 臺灣與離島
  • 海外
  • 可配送點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
  • 可取貨點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
載入中...
  • 分享
 

內容簡介

物聯網開發重新定義了「全棧開發」的范圍。Python作為一門快速發展的語言,已經成為系統集成領域的優選語言之一,其可覆蓋從電路邏輯設計到大數據分析的物聯網端到端開發。各領域開發者可以利用Python交叉涉足物聯網設備、邊緣計算、雲計算、數據分析的工程設計。

《從芯片到雲端:Python物聯網全棧開發實踐》嘗試讓讀者建立物聯網設計的整體概念,從基礎概念開始,到相關技術選型、開源工程、參考設計與經驗分享。無論是物聯網領域的創業者,還是系統架構師,都可從本書中獲得靈感。本書對於嵌入式開發領域的開發者尤具學習價值,利用Python可加快開發迭代速度、降低開發成本,並可以基於嵌入式Python建立完整的物聯網軟硬件生態。

劉凱,服務於微電子行業二十余載的資深工程師。曾在飛利浦半導體(即NXP恩智浦半導體前身)任資深工程師,從事軟、硬件開發與產品設計等工作,有用匯編/C/C++開發嵌入式系統固件、用Perl/Python腳本做開發支持工具、用PHP/Java/Python做設備雲和Web應用的豐富經驗。現作為獨立系統集成開發商,專業從事物聯網相關項目設計和咨詢服務,主攻嵌入式、RFID、微控制器、物聯網、WSN、Linux、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.2.1 單位轉化器 453
8.2.2 內碼轉換器 454
8.2.3 其他編碼轉換 455
8.3 原型驗證 458
8.4 代碼生成器 459
8.5 軟件測試 461
8.5.1 unittest單元測試 462
8.5.2 socket壓力測試 462
8.5.3 urllib2遠程記錄 463
8.5.4 PCBA測試 466
8.6 文檔生成器 468
8.6.1 文檔格式 469
8.6.2 文檔生成工具 473
8.7 文檔操縱 477
8.7.1 Doc文檔操縱 477
8.7.2 Excel表格操縱 478
8.8 國際化與本地化 479
8.8.1 gettext 479
8.8.2 Web多語種切換 482
8.8.3 字庫文件生成器 482
8.8.4 GB2312點陣字庫提取 482
8.8.5 TTF字庫提取 483
8.9 配置管理 484
8.9.1 軟件配置管理 484
8.9.2 軟件配置管理自動化 485
8.9.3 Git Bash 485
8.9.4 Dulwich/Gittle包 485
8.9.5 Python Subversion包 486
8.9.6 watchdog系統監控 486
8.10 數據與素材處理 486
8.10.1 二維碼顯示 486
8.10.2 多媒體相關軟件包 490
8.10.3 地理位置 494
8.11 通信報文分析 495
8.11.1 PyShark 495
8.11.2 pypcapfile 497
8.11.3 scapy和scapy3k 497
8.11.4 pcap Web分析 497
8.12 與Arduino/mbed相關的Python包 497
8.12.1 Arduino Prototyping 498
8.12.2 pyFirmata 501
8.12.3 Py2B 501
8.12.4 CmdMessager 501
8.12.5 mbed 504
8.12.6 mbed RPC 504
8.12.7 mbed-ls 505
8.12.8 Python-mbedtls 507
8.12.9 Python-xbee 508
8.13 虛擬儀器 509
8.13.1 實時顯示波形 510
8.13.2 Instrumentino 510
8.13.3 Vipy 511
8.13.4 PyVISA 511
8.13.5 Pythics 512
8.14 3D/VR/AR 512
8.14.1 PyOpenGL 513
8.14.2 PySoy 514
8.14.3 VPython 514
8.14.4 Printrun 3D打印 514
8.15 本章小結 515

第9章 物聯網服務器端設計 516
9.1 物聯網計算模型 517
9.1.1 雲計算 517
9.1.2 Web PaaS與IoT PaaS 518
9.1.3 IoT PaaS供應商 518
9.1.4 PaaS/IaaS混合架構 524
9.1.5 霧計算 525
9.2 物聯網與互聯網設計異同 526
9.2.1 基礎架構 526
9.2.2 標准化程度 527
9.2.3 業務模式 527
9.2.4 系統構成 527
9.2.5 設備接入協議 528
9.2.6 數據特性 529
9.2.7 系統架構 530
9.2.8 數據持久層 532
9.2.9 大數據分析架構 534
9.2.10 業務耦合與分離 534
9.2.11 業務與數據融合 535
9.2.12 認證授權與計費 535
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.4.1 異步通信框架Twisted 541
9.4.2 Twisted 套接字服務器設計 544
9.4.3 物聯網專用協議 558
9.4.4 CoAP 560
9.4.5 MQTT 564
9.4.6 mosquitto/paho 567
9.4.7 REST API 572
9.4.8 服務器數據推送技術 572
9.5 高可用性與高並發性 575
9.5.1 並行與並發計算 575
9.5.2 網絡I/O模型分類 575
9.5.3 架構優化的路徑 576
9.5.4 關系數據庫系統 576
9.5.5 SQL/NoSQL/NewSQL 578
9.5.6 Redis 579
9.5.7 MongoDB 580
9.5.8 時序數據庫 581
9.5.9 消息隊列 583
9.6 業務與數據融合 585
9.6.1 網站權限管理 585
9.6.2 認證授權與計費 586
9.6.3 OpenID 587
9.6.4 OAUTH 587
9.6.5 OpenID與OAUTH的異同 588
9.6.6 社交化硬件 588
9.7 Web開發框架 589
9.7.1 MVC模型 589
9.7.2 Web開發流程 589
9.7.3 Python Web百花齊放 590
9.7.4 Zope 591
9.7.5 Django 591
9.7.6 Flask 592
9.7.7 gevent提升性能 593
9.7.8 異步Web框架Tornado 593
9.7.9 異步網絡框架Twisted 593
9.7.10 異步Web框架Cyclone 594
9.7.11 靜態網頁 594
9.7.12 TLS安全網頁 594
9.8 物聯網安全 597
9.8.1 物聯網安全現狀堪憂 598
9.8.2 操作系統安全 598
9.8.3 數據緩存與數據持久層安全 599
9.8.4 Web框架與容器安全 599
9.8.5 遠程加載風險 600
9.8.6 Web前端安全 600
9.8.7 傳輸層安全 601
9.9 服務器交付 603
9.9.1 虛擬機交付 603
9.9.2 Docker容器交付 603
9.9.3 VirtualEnv交付 605
9.10 服務器運維 605
9.10.1 Linux定時任務 606
9.10.2 常見的定時任務 610
9.10.3 系統監控 611
9.10.4 集成化運維軟件 613
9.11 物聯網系統設計實踐 614
9.11.1 服務器端需求分析 614
9.11.2 確定設備接入方式 616
9.11.3 物聯網的實時要求 617
9.11.4 EPIC IoT設備服務器 617
9.11.5 EPIC架構優化 619
9.12 本章小結 625

第10章 融合應用與數據分析 626
10.1 物聯網是可編程的 626
10.1.1 Web API的「滿漢全席」 627
10.1.2 Web API技術演進 628
10.1.3 IoT Web API的必要性 628
10.1.4 Device as a Service 629
10.2 數據統計、分析和挖掘 630
10.2.1 名詞解釋 630
10.2.2 術語小結 631
10.2.3 大數據分析 632
10.3 采集整理自有數據 633
10.3.1 原始設備數據 633
10.3.2 數據埋點 633
10.3.3 服務器端數據 634
10.3.4 需求確定分析方法 637
10.4 采集第三方數據 637
10.4.1 結構化數據 638
10.4.2 半結構化數據 638
10.4.3 非結構化數據 639
10.4.4 數據錄入 644
10.4.5 數據融合 644
10.4.6 數據規整 646
10.4.7 數據交易 646
10.5 數據分析 647
10.5.1 常見編程語言 647
10.5.2 數據分析分類 647
10.5.3 科學計算數據分析工具 651
10.5.4 統計學數據分析工具 658
10.5.5 金融數據分析工具 659
10.5.6 大數據平台與生態 661
10.6 數據可視化 663
10.6.1 數據可視化的發展趨勢 664
10.6.2 matplotlib 665
10.6.3 seaborn 665
10.6.4 mpld3 666
10.6.5 Chaco 667
10.6.6 Pygal 668
10.6.7 Plotly 670
10.6.8 TVTK 671
10.6.9 VPython 672
10.6.10 Folium 673
10.6.11 NetworkX 674
10.6.12 Bokeh 676
10.6.13 Mayavi 678
10.6.14 Vispy 680
10.6.15 MoviePy 681
10.6.16 其他新技術 682
10.7 本章小結 682

推薦書目與結束語 683
 

詳細資料

  • ISBN:9787121311277
  • 規格:689頁 / 普通級 / 1-1
  • 出版地:中國

最近瀏覽商品

 

相關活動

  • 【其他】2024采實電子書全書系:春暖花開‧享閱讀,參展書單書85折起、任選3本79折
 

購物說明

溫馨提醒您:若您訂單中有購買簡體館無庫存/預售書或庫存於海外廠商的書籍,建議與其他商品分開下單,以避免等待時間過長,謝謝。

大陸出版品書況:因裝幀品質及貨運條件未臻完善,書況與台灣出版品落差甚大,封面老舊、出現磨痕、凹痕等均屬常態,故簡體字館除封面破損、內頁脫落...等較嚴重的狀態外,其餘所有商品將正常出貨。 

 

請注意,部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

調貨時間:若您購買海外庫存之商品,於您完成訂購後,商品原則上約45個工作天內抵台(若有將延遲另行告知)。為了縮短等待的時間,建議您將簡體書與其它商品分開訂購,以利一般商品快速出貨。 

若您具有法人身份為常態性且大量購書者,或有特殊作業需求,建議您可洽詢「企業採購」。 

退換貨說明 

會員所購買的商品均享有到貨十天的猶豫期(含例假日)。退回之商品必須於猶豫期內寄回。 

辦理退換貨時,商品必須是全新狀態與完整包裝(請注意保持商品本體、配件、贈品、保證書、原廠包裝及所有附隨文件或資料的完整性,切勿缺漏任何配件或損毀原廠外盒)。退回商品無法回復原狀者,恐將影響退貨權益或需負擔部分費用。 

訂購本商品前請務必詳閱商品退換貨原則

  • 翦商作者新作79折
  • 針灸匠張寶旬
  • 浪漫小說精選3本72折