Python物聯網程序設計
內容描述
《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 3
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 使用U盤存儲 173
6.7.1 連接U盤 174
6.7.2 在U盤上創建日誌文件夾 176
6.7.3 修改代碼中的日誌路徑 176
6.7.4 啟動示例將日誌保存到U盤 177
6.7.5 拔出U盤前的操作 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