Python與物聯網程式開發終極實戰寶典

    物聯網(IoT)結合了時下最熱門的Python開放原始碼程式語言之後,就能用來製作具備直觀好用介面的智能物聯網系統。

    Collecting
    US$19.50

    內容簡介


    現在已經是萬物互聯的時代,從健身環到智慧家庭都是。了解如何透過網路與硬體元件互動來收集並分析使用者資料,到了今天變得更加重要了。物聯網(IoT)結合了時下最熱門的Python開放原始碼程式語言之後,就能用來製作具備直觀好用介面的智能物聯網系統。

    本書包含三大篇幅,第一篇談的是物聯網的「網」。你會製作一些端對端的物聯網app來透過網路控制LED,接著學習如何使用Python來建立各種RESTful API、WebSocket API與MQTT服務。第二篇則是介紹電子電路與GPIO介接的重要觀念。到了第三篇,重點轉到物聯網的「物」,你會學到如何透過Python來連接與控制各種電子感測器與制動器,主題包含了馬達控制、超音波感測器測距與量測溫度。最後,我們還要告訴你如何用Python來實作許多進階的物聯網技術、整合各種物聯網資料視覺化與自動化平台,並完成一個相當厲害的物聯網專案。

    讀完本書之後,你對物聯網開發就有相當的掌握,也會具備使用Python製作更複雜的物聯網系統所需的知識。

    本書精彩內容:
    .從零開始!了解如何使用Raspberry Pi來介接電子元件
    .了解如何製作感測器與致動器電路
    .使用Async IO、發佈/訂閱架構等更多方式來建構Python程式碼
    .整合各種感測器與致動器來自動化生活中的物聯網專案
    .整合電路專案與ThingSpeak、IFTTT來作到自動化應用
    .製作並運用RESTful API、WebSocket與MQTT來操作感測器與致動器
    .設定用於物聯網專題的Raspberry Pi與Python開發環境

    作者介紹


    Gary Smart
    一名資深的軟體工程師與物聯網整合專家。他的IT職涯起點正好是WWW崛起之際,並與隨後的網路科技一同成長,包含行動手機與平板電腦的崛起、嵌入式科技、SaaS與企業往雲端遷移,以及近年來的物聯網革命。Gary的實務經驗包含在不同規模的技術職與管理職,包含HP、Pacific Hydro-Tango、澳洲迪肯大學、小型顧問公司與許多網路與物聯網新創公司。

    目錄


    Part I 在Raspberry Pi上使用Python來開發
    01 設定開發環境
    02 認識Python與物聯網
    03 使用Flask搭配RESTful API與Web Socket進行網路通訊
    04 MQTT、Python與Mosquitto MQTT Broker之連網應用

    Part II 可與真實世界互動的實用電子元件
    05 Raspberry Pi連接真實世界
    06 給軟體工程師的電子學入門課

    Part III 物聯網遊樂場-與真實世界互動的實例
    07 開關各種裝置
    08 燈光、指示與顯示資訊
    09 測量溫度、濕度與亮度
    10 伺服機、馬達與步進馬達之運動
    11 測量距離與動作偵測
    12 進階IoT程式設計概念-執行緒、AsyncIO和事件迴圈
    13 物聯網資料視覺與自動化平台
    14 融會貫通-物聯網聖誕樹

    A 評量解答

    Content

    • 1-1
      封面頁
    • 1-2
      書名頁
    • 1-3
      貢獻者
    • 1-4
      前言
    • 1-5
      目錄
    • 1-6
      PartI 在Raspberry Pi 上使用Python 來開發
    • 1-7
      Ch01 設定開發環境
    • 1-8
      1.1 技術要求
    • 1-9
      1.2 認識你的Python
    • 1-10
      1.3 設定Python 虛擬環境
    • 1-11
      1.4 用pip 安裝Python GPIO 套件
    • 1-12
      1.4.1 深入了解虛擬環境
    • 1-13
      1.5 執行Python 腳本的替代方法
    • 1-14
      1.5.1 在虛擬環境內使用sudo
    • 1-15
      1.5.2 在虛擬環境外執行Python 腳本
    • 1-16
      1.5.3 開機時執行Python 腳本
    • 1-17
      1.6 Raspberry Pi 的GPIO 介面
    • 1-18
      1.6.1 設定PiGPIO 常駐程式
    • 1-19
      1.7 總結
    • 1-20
      1.8 問題
    • 1-21
      1.9 延伸閱讀
    • 1-22
      Ch02 認識Python與物聯網
    • 1-23
      2.1 技術要求
    • 1-24
      2.2 建立麵包板原型電路
    • 1-25
      2.2.1 了解麵包板
    • 1-26
      2.2.2 安裝按鈕與接線
    • 1-27
      2.2.3 安裝LED 與接線
    • 1-28
      2.2.4 安裝電阻與接線
    • 1-29
      2.3 閱讀電路電路圖
    • 1-30
      2.3.1 判讀按鈕接線電路電路圖
    • 1-31
      2.3.2 判讀LED 與電阻電路電路圖
    • 1-32
      2.3.3 介紹接地連接與符號
    • 1-33
      2.4 探索用Python 使LED 閃爍的兩個方法
    • 1-34
      2.4.1 透過GPIOZero 控制LED 閃爍
    • 1-35
      匯入函式庫
    • 1-36
      Pin Factory 設定
    • 1-37
      使 LED 閃爍
    • 1-38
      2.4.2 透過PiGPIO 控制LED 閃爍
    • 1-39
      匯入
    • 1-40
      PiGPIO 與接腳組態
    • 1-41
      使 LED 閃爍
    • 1-42
      2.4.3 比較GPIOZero 與PiGPIO 的範例
    • 1-43
      2.5 探討用Python 整合按鈕的兩個方法
    • 1-44
      2.5.1 用GPIOZero 對應至按鈕按下
    • 1-45
      匯入
    • 1-46
      按鈕按下的處理器
    • 1-47
      按鈕設定
    • 1-48
      防止主執行緒終止
    • 1-49
      2.5.2 用PiGPIO 回應按鈕按壓
    • 1-50
      按鈕腳位設定
    • 1-51
      按鈕按下處理器
    • 1-52
      2.6 建立第一個物聯網程式
    • 1-53
      2.6.1 執行與測試Python 伺服器
    • 1-54
      2.6.2 了解伺服器程式碼
    • 1-55
      匯入
    • 1-56
      變數定義
    • 1-57
      resolve_thing_name() 方法
    • 1-58
      get_lastest_dweet() 方法
    • 1-59
      poll_dweets_forever() 方法
    • 1-60
      process_dweet() 方法
    • 1-61
      程式主進入點
    • 1-62
      2.7 擴充你的物聯網程式功能
    • 1-63
      2.7.1 實作dweeting 按鈕
    • 1-64
      2.7.2 PiGPIO LED 作為類別
    • 1-65
      2.8 總結
    • 1-66
      2.9 問題
    • 1-67
      2.10 延伸閱讀
    • 1-68
      Ch03 使用Flask 搭配RESTful API 與 WebSocket 進行網路通訊
    • 1-69
      3.1 技術要求
    • 1-70
      3.2 介紹Flask 微服務架構
    • 1-71
      3.3 用Flask-RESTful 建立RESTful API 服務
    • 1-72
      3.3.1 執行與測試Python 伺服器
    • 1-73
      3.2.2 了解伺服器程式碼
    • 1-74
      匯入
    • 1-75
      Flask 與 Flask-RESTful API 實例變數
    • 1-76
      全域變數
    • 1-77
      init_led() 方法
    • 1-78
      提供網頁
    • 1-79
      LEDControl 類別
    • 1-80
      get() 類別方法
    • 1-81
      post() 類別方法
    • 1-82
      LEDController 註冊與啟動伺服器
    • 1-83
      3.2.3 介紹PWM
    • 1-84
      3.4 加入RESTful API 客戶端網頁
    • 1-85
      3.4.1 了解客戶端程式碼
    • 1-86
      匯入 JavaScript
    • 1-87
      getState() 函式
    • 1-88
      postUpdate() 函式
    • 1-89
      updateControls() 函式
    • 1-90
      用 jQuery 註冊事件處理器
    • 1-91
      網頁 HTML
    • 1-92
      3.5 用Flask-SocketIO 建立Web Socket 服務
    • 1-93
      3.5.1 執行與測試Python 伺服器
    • 1-94
      3.5.2 伺服器程式碼
    • 1-95
      匯入
    • 1-96
      Flask 與 Flask-RESTful API 實例變數
    • 1-97
      提供網頁
    • 1-98
      處理器連線與斷線
    • 1-99
      LED 處理器
    • 1-100
      啟動伺服器
    • 1-101
      3.6 加入Web Socket 客戶端網頁
    • 1-102
      3.6.1 了解客戶端程式碼
    • 1-103
      匯入
    • 1-104
      Socket.IO 連接與斷線處理器
    • 1-105
      on LED 處理器
    • 1-106
      文件備妥函式
    • 1-107
      網頁 HTML
    • 1-108
      3.7 比較RESTful API 與Web Socket 伺服器
    • 1-109
      3.8 總結
    • 1-110
      3.9 問題
    • 1-111
      3.10 延伸閱讀
    • 1-112
      Ch04 MQTT、Python 與Mosquitto MQTTBroker 之連網應用
    • 1-113
      4.1 技術要求
    • 1-114
      4.2 安裝Mosquitto MQTT broker
    • 1-115
      4.3 以範例來學習MQTT
    • 1-116
      4.3.1 發佈和訂閱MQTT 訊息
    • 1-117
      4.3.2 探索MQTT 專題和通配字元
    • 1-118
      4.3.3 訊息的服務品質
    • 1-119
      4.3.4 保留訊息以便後續傳輸
    • 1-120
      發佈保留後的訊息
    • 1-121
      建立持久性連線
    • 1-122
      4.3.5 用Will 說再見
    • 1-123
      4.3.6 使用MQTT 代理服務
    • 1-124
      4.4 介紹Python Paho-MQTT 客戶端函式庫
    • 1-125
      4.5 用Python 和MQTT 來控制LED
    • 1-126
      4.5.1 運行LED MQTT 範例
    • 1-127
      4.5.2 了解程式碼
    • 1-128
      匯入
    • 1-129
      全域變數
    • 1-130
      set_led_level(data) 方法
    • 1-131
      on_connect() 與 on_disconnect() MQTT 回呼方法
    • 1-132
      on_message() MQTT 回呼方法
    • 1-133
      init_mqtt() 方法
    • 1-134
      主進入點
    • 1-135
      4.6 製作以網頁為基礎的MQTT 客戶端
    • 1-136
      4.6.1 了解程式碼
    • 1-137
      匯入
    • 1-138
      全域變數
    • 1-139
      Paho JavaScript MQTT client
    • 1-140
      連接到代理
    • 1-141
      onConnectionLost 與 onMessageArrived 處理函式方法
    • 1-142
      JQuery 的文件備妥函式
    • 1-143
      4.7 總結
    • 1-144
      4.8 問題
    • 1-145
      4.9 延伸閱讀
    • 1-146
      PartII 可與真實世界互動的實用電子元件
    • 1-147
      Ch05 Raspberry Pi連接真實世界
    • 1-148
      5.1 技術要求
    • 1-149
      5.2 了解Raspberry Pi 腳位編號
    • 1-150
      5.3 常用的Python GPIO 函式庫
    • 1-151
      5.3.1 回顧GPIOZero - 初學者的簡易介面
    • 1-152
      5.3.2 回顧RPi.GPIO - 初學者的低階GPIO
    • 1-153
      5.3.3 回顧Circuit Python 與Blinka – 介接複雜裝置
    • 1-154
      5.3.4 回顧PiGPIO - 低階GPIO 函式庫
    • 1-155
      透過 PiGPIO(與 GPIOZero)進行遠端 GPIO
    • 1-156
      5.3.5 回顧SPIDev 與SMBus - 專用SPI 與I2C 函式庫
    • 1-157
      5.3.6 為何選用PiGPIO ?
    • 1-158
      5.4 探索Raspberry Pi 電子產品介接選項
    • 1-159
      5.4.1 了解數位IO
    • 1-160
      5.4.2 了解類比IO
    • 1-161
      5.4.3 認識PWM - 脈衝頻寬調變
    • 1-162
      產生 PWM 訊號
    • 1-163
      5.4.4 了解SPI、I2C 與單線介面
    • 1-164
      5.4.5 了解序列/UART 協定
    • 1-165
      5.5 介接類比- 數位轉換器
    • 1-166
      5.5.1 製作ADS1115 ADC 電路
    • 1-167
      5.5.2 確認ADS1115 已接上Raspberry Pi
    • 1-168
      5.5.3 用ADS1115 讀取類比輸入
    • 1-169
      理解程式碼
    • 1-170
      匯入
    • 1-171
      ADS1115 設定
    • 1-172
      全域變數
    • 1-173
      程式進入點
    • 1-174
      5.5.4 使用PWM 訊號來控制LED
    • 1-175
      理解程式碼
    • 1-176
      5.5.5 用PiScope 視覺化呈現PWM 訊號
    • 1-177
      5.5.6 視覺化呈現軟體與硬體定時PWM
    • 1-178
      5.6 總結
    • 1-179
      5.7 問題
    • 1-180
      5.8 延伸閱讀
    • 1-181
      Ch06 給軟體工程師的電子學入門課
    • 1-182
      6.1 技術要求
    • 1-183
      6.2 預備工作區
    • 1-184
      6.2.1 購買所需的電子模組與元件
    • 1-185
      購買個別元件
    • 1-186
      購買開放原始碼硬體模組
    • 1-187
      6.3 確保你的Raspberry Pi 安全
    • 1-188
      6.4 電子元件失效的三種方式
    • 1-189
      6.5 用於GPIO 控制的電子元件介接原理
    • 1-190
      6.5.1 歐姆定律和功率
    • 1-191
      6.5.2 克希何夫電路定律
    • 1-192
      6.5.3 LED 電路為何使用200Ω 電阻?
    • 1-193
      計算電阻數值
    • 1-194
      考量到 Raspberry Pi 的電流限制
    • 1-195
      計算電阻的功耗
    • 1-196
      6.6 數位電子元件
    • 1-197
      6.6.1 數位輸出
    • 1-198
      6.6.2 數位輸入
    • 1-199
      6.6.3 使用上拉與下拉電阻
    • 1-200
      使用電阻來解決腳位浮動
    • 1-201
      使用程式來解決腳位浮動
    • 1-202
      6.7 類比電子元件
    • 1-203
      6.7.1 類比輸出
    • 1-204
      6.7.2 類比輸入
    • 1-205
      分壓器
    • 1-206
      6.8 認識邏輯準位轉換
    • 1-207
      6.8.1 作為邏輯準位轉換器的分壓器
    • 1-208
      6.8.2 邏輯準位轉換IC 與模組
    • 1-209
      6.8.3 比較分壓器與邏輯準位轉換器
    • 1-210
      6.9 總結
    • 1-211
      6.10 問題
    • 1-212
      6.11 延伸閱讀
    • 1-213
      PartIII 物聯網遊樂場-與真實世界互動的實例
    • 1-214
      Ch07 開關各種裝置
    • 1-215
      7.1 技術要求
    • 1-216
      7.2 認識繼電器驅動電路
    • 1-217
      7.3 計算負載電壓與電流
    • 1-218
      7.3.1 測量直流馬達所需的電流
    • 1-219
      7.3.2 測量繼電器與LED 所需的電流
    • 1-220
      7.4 使用光耦合器做為開關
    • 1-221
      7.4.1 建立光耦合器的電路
    • 1-222
      7.4.2 使用Python 來控制光耦合器
    • 1-223
      7.5 使用電晶體作為開關
    • 1-224
      7.5.1 製作MOSFET 電路
    • 1-225
      7.5.2 使用Python 來控制MOSFET
    • 1-226
      7.6 使用繼電器作為開關
    • 1-227
      7.6.1 製作繼電器驅動電路
    • 1-228
      7.6.2 使用Python 控制繼電器驅動電路
    • 1-229
      7.7 總結
    • 1-230
      7.8 問題
    • 1-231
      7.9 延伸閱讀
    • 1-232
      Ch08 燈光、指示與顯示資訊
    • 1-233
      8.1 技術要求
    • 1-234
      8.2 使用RGB LED 搭配PWM 技術來產生顏色
    • 1-235
      8.2.1 製作RGB LED 電路
    • 1-236
      8.2.2 執行並探討RGB LED 程式碼
    • 1-237
      8.3 透過SPI 介面來控制彩色APA102 LED 燈條
    • 1-238
      8.3.1 製作APA102 電路
    • 1-239
      APA102 電路供電
    • 1-240
      設定並執行 APA102 LED 燈條程式碼
    • 1-241
      介紹 APA102 LED 燈條程式碼
    • 1-242
      介紹 APA102 與 SPI 介面
    • 1-243
      APA102 LED 燈條故障排除
    • 1-244
      8.4 使用OLED 顯示模組
    • 1-245
      8.4.1 OLED 顯示模組接線
    • 1-246
      8.4.2 檢查OLED 顯示模組是否正確連接
    • 1-247
      8.4.3 設定並執行OLED 範例
    • 1-248
      介紹 OLED 程式碼
    • 1-249
      8.5 透過PWM 技術讓蜂鳴器發出聲音
    • 1-250
      8.5.1 製作RTTTL 電路
    • 1-251
      8.5.2 執行RTTTL 音樂範例
    • 1-252
      8.6 總結
    • 1-253
      8.7 問題
    • 1-254
      8.8 延伸閱讀
    • 1-255
      Ch09 測量溫度、濕度與亮度
    • 1-256
      9.1 技術要求
    • 1-257
      9.2 測量溫度與濕度
    • 1-258
      9.2.1 建立DHT11/DHT22 電路
    • 1-259
      9.2.2 執行並探討DHT11/DHT22 程式碼
    • 1-260
      9.3 偵測亮度
    • 1-261
      9.3.1 使用LDR 元件製作光偵測電路
    • 1-262
      9.3.2 執行LDR 範例程式碼
    • 1-263
      9.3.3 LDR 程式碼說明
    • 1-264
      9.3.4 LDR 設定總結
    • 1-265
      9.4 偵測水分
    • 1-266
      9.4.1 比較各種偵測方式
    • 1-267
      9.5 總結
    • 1-268
      9.6 問題
    • 1-269
      Ch10 伺服機、馬達與步進馬達之運動
    • 1-270
      10.1 技術要求
    • 1-271
      10.2 用PWM 驅動伺服機
    • 1-272
      10.2.1 連接伺服機與Raspberry Pi
    • 1-273
      10.2.2 如何透過PWM 控制伺服機?
    • 1-274
      10.2.3 執行並探索伺服機程式碼
    • 1-275
      10.2.4 各種類型的伺服機
    • 1-276
      10.3 如何用H 橋IC 控制馬達
    • 1-277
      10.3.1 建立馬達驅動電路
    • 1-278
      10.3.2 執行控制馬達的H 橋程式碼
    • 1-279
      motor.py
    • 1-280
      motor_class.py
    • 1-281
      10.4 簡介步進馬達之控制
    • 1-282
      10.4.1 連接步進馬達與L293D 電路
    • 1-283
      10.4.2 執行與探索步進馬達的程式碼
    • 1-284
      10.5 總結
    • 1-285
      10.6 問題
    • 1-286
      Ch11 測量距離與動作偵測
    • 1-287
      11.1 技術要求
    • 1-288
      11.2 使用PIR 感測器偵測動作
    • 1-289
      11.2.1 製作PIR 感測器之電路
    • 1-290
      11.2.2 執行並探索PIR 感測器程式碼
    • 1-291
      11.3 使用超音波感測器測量距離
    • 1-292
      11.3.1 超音波距離感測器的運作原理
    • 1-293
      11.3.2 HC-SR04 之測距流程
    • 1-294
      11.3.3 製作HC-SR04 電路
    • 1-295
      11.3.4 執行與探索HC-SR04 範例程式碼
    • 1-296
      11.4 使用霍爾效應感測器偵測動作與距離
    • 1-297
      11.4.1 製作霍爾效應感測器之電路
    • 1-298
      11.4.2 執行與探索霍爾效應感測器程式碼
    • 1-299
      11.5 總結
    • 1-300
      11.6 問題
    • 1-301
      Ch12 進階IoT 程式設計概念-執行緒、AsyncIO和事件迴圈
    • 1-302
      12.1 技術要求
    • 1-303
      12.2 製作並測試電路
    • 1-304
      12.2.1 製作參考電路
    • 1-305
      12.2.2 執行範例程式碼
    • 1-306
      12.3 認識事件迴圈方法
    • 1-307
      12.4 認識執行緒方法
    • 1-308
      12.5 認識發佈/ 訂閱方法
    • 1-309
      12.6 認識AsyncIO 方法
    • 1-310
      12.6.1 非同步之實驗
    • 1-311
      12.7 總結
    • 1-312
      12.8 問題
    • 1-313
      12.9 延伸閱讀
    • 1-314
      Ch13 物聯網資料視覺與自動化平台
    • 1-315
      13.1 技術要求
    • 1-316
      13.2 從Raspberry Pi 觸發IFTTT 的小程式
    • 1-317
      13.2.1 建立溫度監控的電路
    • 1-318
      13.2.2 建立與配置IFTTT 小程式
    • 1-319
      13.2.3 觸發IFTTT Webhook
    • 1-320
      13.2.4 於Python 觸發IFTTT 小程式
    • 1-321
      13.3 從IFTTT 小程式作動Raspberry Pi
    • 1-322
      13.3.1 方法1 -使用dweet.io 服務作為媒介
    • 1-323
      13.3.2 方法2 -建立Flask-RESTful 服務
    • 1-324
      13.3.3 建立LED 電路
    • 1-325
      13.3.4 執行IFTTT 和LED 的Python 程式碼
    • 1-326
      13.3.5 建立IFTTT 小程式
    • 1-327
      13.3.6 用電子郵件控制LED
    • 1-328
      13.3.7 IFTTT 故障排除
    • 1-329
      13.4 用ThingSpeak 平台視覺化資料
    • 1-330
      13.4.1 配置ThingSpeak 平台
    • 1-331
      13.4.2 配置與執行ThingSpeak 的Python 程式碼
    • 1-332
      13.5 其他物聯網與自動化平台
    • 1-333
      13.5.1 Zapier
    • 1-334
      13.5.2 IFTTT 平台
    • 1-335
      13.5.3 ThingsBoard 物聯網平台
    • 1-336
      13.5.4 Home Assistant
    • 1-337
      13.5.5 Amazon Web Services(AWS)
    • 1-338
      13.5.6 Microsoft Azure、IBM Watson 和Google Cloud
    • 1-339
      13.6 總結
    • 1-340
      13.7 問題
    • 1-341
      Ch14 融會貫通-物聯網聖誕樹
    • 1-342
      14.1 技術要求
    • 1-343
      14.2 物聯網聖誕樹簡介
    • 1-344
      14.3 建立IoTree 電路
    • 1-345
      14.3.1 三種IoTree 服務的程式碼
    • 1-346
      14.4 設定、執行與使用Tree API 服務
    • 1-347
      14.4.1 設定Tree API 服務
    • 1-348
      14.4.2 執行Tree API 服務
    • 1-349
      14.5 設定、執行與使用Tree MQTT 服務
    • 1-350
      14.5.1 設定Tree MQTT 服務
    • 1-351
      14.5.2 執行Tree MQTT 服務程式碼
    • 1-352
      14.6 整合IoTree 與dweet.io
    • 1-353
      14.6.1 設定Tree MQTT 服務
    • 1-354
      14.6.2 執行dweet 整合服務程式碼
    • 1-355
      14.7 藉由IFTTT 整合電子郵件與Google Assistant
    • 1-356
      14.7.1 整合電子郵件
    • 1-357
      14.7.2 與Google Assistant 整合
    • 1-358
      14.8 IoTree 專案延伸建議
    • 1-359
      14.9 總結
    • 1-360
      14.10 問題
    • 1-361
      附錄A 評量解答
    • 1-362
      版權頁
    • 1-363
      封底頁

    FAQ

    您可以透過手機、平板或是電腦登入 HiSKIO 平台,在【我的學習】>【我的書籍】頁面,選擇想看的電子書。

    Recommendations

    Reviews

    | Collecting

    Sales Plans