內容簡介
《Python物聯網程式設計》詳細闡述了與Python物聯網程式開發相關的基本解決方案,主要包括了解和設定基礎物聯網硬體、結合使用Intel Galileo Gen 2和Python、使用Python實現互動式數字輸出、使用RESTful API和脈寬調製、使用數字輸入、使用模擬輸入和本地存儲、使用感測器從現實世界中檢索數據、顯示信息和執行操作、使用雲、使用基於雲的IoT Analytics服務分析海量數據等內容。此外,本書還提供了相應的示例、代碼,以幫助讀者進一步理解相關方案的實現過程。本書適合作為高等院校計算機及相關專業的教材和教學參考書,也可作為相關開發人員的自學教材和參考手冊。
圖書目錄
第1章 了解和設定基礎物聯網硬體 1
1.1 了解Intel Galileo Gen 2主機板及其組件 1
1.2 識別輸入/輸出和Arduino 1.0引腳 7
1.3 認識額外的擴展和連線功能 11
1.4 了解按鈕和指示燈 14
1.5 檢查和升級主機板的固件 17
1.5.1 檢查固件版本 17
1.5.2 在Windows系統中更新固件 19
1.5.3 在Mac OS X系統中更新固件 20
1.6 牛刀小試 22
1.7 小結 22
第2章 結合使用Intel Galileo Gen 2和Python 23
2.1 設定主機板以使用Python作為程式語言 23
2.1.1 可能需要另購的硬體 23
2.1.2 下載Yocto Linux啟動鏡像 24
2.1.3 在Windows系統中提取並寫入鏡像 25
2.1.4 在Mac OS X系統中提取並寫入鏡像 27
2.1.5 啟動Intel Galileo Gen 2主機板 30
2.2 檢索主機板分配的IP位址 31
2.2.1 通過路由器回收主機板IP位址 31
2.2.2 使用Bonjour瀏覽器 32
2.3 連線到主機板的作業系統 35
2.3.1 在Windows系統中安裝和配置PuTTY終端 35
2.3.2 在OS X系統中通過ssh命令連線到Yocto Linux 37
2.4 安裝和升級必要的庫以與主機板互動 39
2.4.1 檢查現有庫的版本 39
2.4.2 安裝最新版本的庫 41
2.5 安裝pip和其他庫 45
2.5.1 安裝pip軟體包管理系統 45
2.5.2 安裝wiring-x86軟體包 46
2.6 調用Python解釋器 47
2.7 牛刀小試 48
2.8 小結 49
第3章 使用Python實現互動式數字輸出 51
3.1 打開和關閉板載組件 51
3.1.1 編寫點亮或熄滅LED的Python代碼 51
3.1.2 使用FileZilla將Python代碼檔案傳輸到主機板 52
3.1.3 在主機板上運行Python代碼 55
3.2 認識麵包板 58
3.3 製作數字輸出示例 60
3.3.1 使用電子示意圖 61
3.3.2 使用LED 63
3.3.3 認識電阻 65
3.3.4 連線元器件 66
3.3.5 編寫從1數到9的Python代碼 67
3.3.6 測試代碼 68
3.3.7 代碼解釋 70
3.4 編寫面向對象的代碼控制數字輸出結果 72
3.4.1 創建一個Led類來表示連線到主機板的LED 72
3.4.2 編寫控制數字輸出的代碼 73
3.5 改進面向對象代碼以提供新功能 75
3.5.1 創建NumberInLeds類 75
3.5.2 編寫從0數到9的代碼 76
3.6 隔離引腳編號以改善布線 76
3.6.1 最佳化布線方案 77
3.6.2 編寫代碼隔離引腳編號 78
3.7 使用wiring-x86庫控制數字輸出 81
3.7.1 編寫Board類和新Led類的代碼 82
3.7.2 修改__main__方法 83
3.8 牛刀小試 84
3.9 小結 85
第4章 使用RESTful API和脈寬調製 87
4.1 使用RESTful API以通過LED顯示數字 87
4.1.1 安裝Tornado 87
4.1.2 安裝HTTPie 88
4.1.3 使用Tornado構建RESTful API 90
4.1.4 啟動HTTP伺服器 94
4.1.5 編寫和傳送HTTP請求 94
4.2 控制LED的亮度 99
4.2.1 關於LED亮度控制原理 99
4.2.2 連線方案 100
4.2.3 使用PWM生成模擬值 102
4.2.4 創建新的AnalogLed類 104
4.2.5 編寫控制LED亮度的代碼 106
4.2.6 啟動HTTP伺服器和RESTful API 110
4.2.7 通過HTTP請求生成模擬值 110
4.3 為Web應用程式需求準備RESTful API 113
4.3.1 編寫新的PutRGBBrightnessHandler類 113
4.3.2 創建tornado.web.Application類的實例 114
4.3.3 啟動HTTP伺服器和新版本的RESTful API 114
4.3.4 通過HTTP請求控制LED分量的亮度 115
4.4 使用PWM和RESTful API設定RGB LED的顏色 115
4.4.1 使用RGB LED 116
4.4.2 連線方案 117
4.4.3 測試新版本的RESTful API 118
4.5 使用wiring-x86庫控制脈寬調製 120
4.6 牛刀小試 121
4.7 小結 122
第5章 使用數字輸入 123
5.1 了解按鈕和上拉電阻 123
5.1.1 按鈕 123
5.1.2 上拉電阻和下拉電阻 125
5.2 使用數字輸入引腳連線按鈕 127
5.2.1 連線方案 128
5.2.2 創建PushButton類表示按鈕 129
5.2.3 輪詢按鈕是否被按下 131
5.2.4 測試輪詢代碼 132
5.2.5 輪詢和中斷的區別 133
5.3 讀取按鈕狀態並運行RESTful API 133
5.3.1 在BoardInteraction類中添加類屬性和類方法 134
5.3.2 聲明tornado.web.RequestHandler的兩個子類 136
5.3.3 創建tornado.web.Application類的實例 136
5.3.4 修改__main__方法 137
5.3.5 一致性測試 138
5.4 使用wiring-x86庫讀取數字輸入 140
5.5 使用中斷來檢測按下的按鈕 142
5.5.1 連線方案 142
5.5.2 創建PushButtonWithInterrupt類 144
5.5.3 修改BoardInteraction類 146
5.5.4 聲明觸發中斷時要調用的函式 147
5.5.5 修改__main__方法 147
5.5.6 中斷處理測試 148
5.6 牛刀小試 149
5.7 小結 150
第6章 使用模擬輸入和本地存儲 151
6.1 理解模擬輸入 151
6.2 使用模擬輸入和mraa庫測量電壓 153
6.2.1 連線方案 153
6.2.2 創建VoltageInput類 155
6.2.3 編寫代碼檢索電壓值 156
6.3 將光敏電阻連線到模擬輸入引腳 157
6.3.1 連線方案 158
6.3.2 創建DarknessSensor類以表示光敏電阻 159
6.3.3 循環檢測照明條件變化 161
6.3.4 測試 162
6.4 環境光變化時觸發動作 163
6.4.1 連線方案 163
6.4.2 創建BoardInteraction類 165
6.4.3 基於環境光設定RGB LED的亮度 166
6.4.4 測試 167
6.5 使用wiring-x86庫控制模擬輸入 168
6.6 使用本地存儲記錄日誌 170
6.6.1 添加日誌記錄功能 171
6.6.2 測試日誌功能 172
6.7 使用隨身碟存儲 173
6.7.1 連線隨身碟 174
6.7.2 在隨身碟上創建日誌資料夾 176
6.7.3 修改代碼中的日誌路徑 176
6.7.4 啟動示例將日誌保存到隨身碟 177
6.7.5 拔出隨身碟前的操作 177
6.8 小試牛刀 178
6.9 小結 178
第7章 使用感測器從現實世界中檢索數據 181
7.1 了解感測器及其連線類型 181
7.1.1 感測器選擇考慮因素 182
7.1.2 模組連線類型 184
7.1.3 關於mraa庫 185
7.2 使用加速度計 186
7.3 將模擬加速度計連線到模擬輸入引腳 187
7.3.1 使用模擬加速度計的分線板 187
7.3.2 連線方案 187
7.3.3 創建Accelerometer類表示模擬加速度計 190
7.3.4 編寫主循環 191
7.3.5 測試模擬加速度計 192
7.4 將數字加速度計連線到I2C匯流排 193
7.4.1 使用數字加速度計的分線板 194
7.4.2 連線方案 195
7.4.3 創建Accelerometer類表示數字加速度計 197
7.4.4 編寫主循環 199
7.4.5 測試數字加速度計 199
7.5 使用mraa庫通過I2C匯流排控制數字加速度計 200
7.5.1 編寫新的Adxl1345類 200
7.5.2 創建新的Accelerometer類 206
7.6 使用模擬溫度感測器 207
7.6.1 連線方案 207
7.6.2 創建TemperatureSensor類表示溫度感測器 209
7.6.3 編寫主循環 210
7.6.4 測試溫度感測器 211
7.7 將數字溫度和濕度感測器連線到I2C匯流排 211
7.7.1 連線方案 212
7.7.2 創建TemperatureAndHumiditySensor類表示溫度和濕度感測器 214
7.7.3 編寫主循環 215
7.7.4 測試溫度和濕度感測器 216
7.8 牛刀小試 217
7.9 小結 217
第8章 顯示信息和執行操作 219
8.1 了解LCD顯示屏及其連線類型 219
8.1.1 關於LCD顯示屏 220
8.1.2 選擇LCD模組時的考慮因素 220
8.2 將LCD RGB背光分線板連線到I2C匯流排 221
8.2.1 連線方案 222
8.2.2 創建Lcd類 224
8.2.3 創建TemperatureAndHumidityLcd子類 226
8.2.4 編寫主循環 227
8.2.5 測試LCD顯示 228
8.3 將OLED點陣屏連線到I2C匯流排 228
8.3.1 關於OLED點陣屏 228
8.3.2 連線方案 230
8.3.3 創建Oled類 231
8.3.4 創建TemperatureAndHumidityOled子類 232
8.3.5 編寫主循環 233
8.3.6 測試OLED屏顯示 234
8.4 連線伺服電機 234
8.4.1 通過旋轉伺服電機的軸顯示溫度 234
8.4.2 連線方案 236
8.4.3 創建TemperatureServo類表示伺服電機 238
8.4.4 修改主循環 239
8.4.5 測試 240
8.5 牛刀小試 240
8.6 小結 241
第9章 使用雲 243
9.1 使用dweepy將數據發布到雲 243
9.1.1 關於dweet.io 243
9.1.2 安裝dweepy 244
9.1.3 修改__main__方法 245
9.1.4 測試 247
9.2 使用Freeboard構建基於Web的儀錶板 250
9.2.1 關於freeboard.io 251
9.2.2 創建Freeboard賬戶 251
9.2.3 創建儀錶板 251
9.3 使用PubNub通過Internet實時傳送和接收數據 256
9.3.1 關於MQTT和PubNub 256
9.3.2 創建PubNub賬戶並生成發布和訂閱密鑰 257
9.3.3 安裝PubNub Python SDK 258
9.3.4 創建MessageChannel類 259
9.3.5 修改__main__方法 262
9.3.6 通過PubNub雲發布帶有命令的訊息 263
9.3.7 修改MessageChannel類 268
9.3.8 測試 271
9.4 使用Python PubNub客戶端將訊息發布到雲 273
9.4.1 創建Client類 273
9.4.2 創建__main__方法 276
9.4.3 測試客戶端 277
9.5 使用Mosquitto和Eclipse Paho 279
9.5.1 安裝paho-mqtt模組 280
9.5.2 創建MessageTopic類 280
9.5.3 修改__main__方法 285
9.5.4 啟動代碼運行 287
9.6 使用Python客戶端將訊息發布到Mosquitto代理 287
9.6.1 創建MQTT客戶端中事件的回調函式 287
9.6.2 創建__main__方法 289
9.6.3 測試客戶端 290
9.7 牛刀小試 291
9.8 小結 292
第10章 使用基於雲的IoT Analytics服務分析海量數據 293
10.1 理解物聯網與大數據之間的關係 293
10.2 了解Intel IoT Analytics結構 295
10.3 在Intel IoT Analytics中設定設備 297
10.3.1 使用iotkit-admin命令行 297
10.3.2 刷新激活碼 298
10.3.3 查看激活的設備 300
10.4 在Intel IoT Analytics中設定組件 300
10.4.1 查看組件定義 301
10.4.2 創建新組件 302
10.4.3 註冊組件的設備 303
10.4.4 檢索設備令牌 306
10.5 使用Intel IoT Analytics收集感測器數據 308
10.5.1 安裝requests軟體包 308
10.5.2 創建IntelIotAnalytics類 309
10.5.3 修改__main__方法 313
10.5.4 運行並查看結果 314
10.6 使用Intel IoT Analytics分析感測器數據 315
10.7 使用Intel IoT Analytics中的規則觸發警報 319
10.7.1 定義規則 320
10.7.2 查看規則觸發的警報 320
10.8 牛刀小試 324
10.9 小結 324
各章牛刀小試答案 327
第1章 了解和設定基礎物聯網硬體 327
第2章 結合使用Intel Galileo Gen 2和Python 327
第3章 使用Python實現互動式數字輸出 327
第4章 使用RESTful API和脈寬調製 328
第5章 使用數字輸入 328
第6章 使用模擬輸入和本地存儲 328
第7章 使用感測器從現實世界中檢索數據 328
第8章 顯示信息和執行操作 329
第9章 使用雲 329
第10章 使用基於雲的IoT Analytics服務分析海量數據 329