本書是對樹莓派開發(fā)的內(nèi)容進行全面升級之后的第 3 版,囊括豐富的實踐示例,詳細講解樹莓派的配置與管理、網(wǎng)絡(luò)連接、操作系統(tǒng)及軟件,以及使用Python進行樹莓派開發(fā)的各項技巧,包括有關(guān)Python編程的基礎(chǔ)知識、列表與字典、Python高級特性。同時,本書還涉及機器視覺、硬件基礎(chǔ)、控制硬件、電機、數(shù)字輸入、傳感器、顯示設(shè)備、音頻設(shè)備、物聯(lián)網(wǎng)、家庭自動化、Arduino等內(nèi)容。
本書適合程序員、計算機軟硬件愛好者,以及對樹莓派感興趣的讀者閱讀,也適合作為樹莓派相關(guān)實踐課程的指導(dǎo)書。
這是一本全面升級的實戰(zhàn)圖書,通過200多個動手實驗為讀者演示了如何在樹莓派上運行Linux系統(tǒng),如何利用Python對樹莓派進行編程,如何將樹莓派與傳感器、電機和Arduino進行連接,以及如何將樹莓派用于物聯(lián)網(wǎng)。
本書涉及以下主題:
(1)配置樹莓派并連接網(wǎng)絡(luò)
(2)使用基于Linux的操作系統(tǒng)
(3)使用Python進行樹莓派編程
(4)通過機器視覺讓樹莓派“睜眼看世界”
(5)通過GPIO接口控制硬件
(6)通過樹莓派控制不同類型的電機
(7)使用開關(guān)、鍵盤及其他數(shù)字輸入
(8)通過傳感器測量溫度、亮度和距離
(9)利用各種方式連接物聯(lián)網(wǎng)并實現(xiàn)家庭自動化
西蒙·蒙克博士(Dr. Simon Monk)已經(jīng)撰寫了很多關(guān)于電子學和開源硬件的圖書,他還為MonkMakes公司設(shè)計產(chǎn)品,這是他與妻子Linda共同經(jīng)營的一家公司。同時,他還是移動軟件公司Momote Ltd.的聯(lián)合創(chuàng)始人,并擁有軟件工程博士學位以及控制論和計算機科學的學士學位。
第3版前言 1
第1章 配置與管理 5
1.0 引言 5
1.1 選擇樹莓派型號 5
1.2 裝配系統(tǒng) 8
1.3 封裝樹莓派 10
1.4 選擇電源 11
1.5 選擇操作系統(tǒng) 13
1.6 通過NOOBS刷寫microSD卡 14
1.7 在不借助NOOBS的情況下安裝操作系統(tǒng) 17
1.8 使用PiBakery配置和刷寫SD卡 18
1.9 使用PiBakery配置headless模式的樹莓派 20
1.10 從真正的硬盤或U盤啟動 22
1.11 連接DVI或VGA顯示器 24
1.12 使用復(fù)合視頻顯示器/電視 24
1.13 調(diào)整顯示器中的圖像尺寸 26
1.14 優(yōu)化性能 27
1.15 修改密碼 29
1.16 關(guān)閉樹莓派 30
1.17 為樹莓派安裝攝像頭模塊 32
1.18 使用藍牙設(shè)備 34
第2章 網(wǎng)絡(luò)連接 36
2.0 引言 36
2.1 連接有線網(wǎng)絡(luò) 36
2.2 查看自己的IP地址 37
2.3 配置靜態(tài)IP地址 39
2.4 為樹莓派配置網(wǎng)絡(luò)名稱 42
2.5 配置無線網(wǎng)絡(luò)連接 44
2.6 使用控制臺線聯(lián)網(wǎng) 46
2.7 利用SSH遠程控制樹莓派 48
2.8 利用VNC遠程控制樹莓派 50
2.9 利用RDP遠程控制樹莓派 52
2.10 在Mac網(wǎng)絡(luò)中實現(xiàn)文件共享 53
2.11 將樹莓派用作網(wǎng)絡(luò)附接存儲系統(tǒng) 55
2.12 網(wǎng)絡(luò)打印 58
第3章 操作系統(tǒng) 60
3.0 引言 60
3.1 通過圖形界面處理文件 60
3.2 將文件復(fù)制到U盤中 61
3.3 啟動一個終端會話 63
3.4 利用終端瀏覽文件系統(tǒng) 64
3.5 復(fù)制文件或文件夾 66
3.6 重命名文件和文件夾 67
3.7 編輯文件 68
3.8 查看文件內(nèi)容 70
3.9 在不借助編輯器的情況下創(chuàng)建文件 70
3.10 創(chuàng)建目錄 71
3.11 刪除文件或目錄 71
3.12 以超級用戶權(quán)限執(zhí)行任務(wù) 72
3.13 理解文件權(quán)限 73
3.14 修改文件的權(quán)限 75
3.15 修改文件的屬主 76
3.16 屏幕截圖 76
3.17 利用apt-get安裝軟件 77
3.18 刪除利用apt-get安裝的軟件 78
3.19 利用Pip安裝Python庫 79
3.20 通過命令行獲取文件 79
3.21 利用Git獲取源代碼 80
3.22 獲取本書的隨附代碼 82
3.23 在系統(tǒng)啟動時自動運行程序或腳本 85
3.24 讓程序或腳本作為服務(wù)自動運行 85
3.25 定期自動運行程序或腳本 87
3.26 搜索功能 88
3.27 使用命令行歷史記錄功能 89
3.28 監(jiān)視處理器活動 90
3.29 文件壓縮 92
3.30 列出已連接的USB設(shè)備 93
3.31 將輸出從命令行重定向到文件 93
3.32 連接文件 94
3.33 使用管道 94
3.34 不將輸出結(jié)果顯示到終端 95
3.35 在后臺運行程序 96
3.36 創(chuàng)建命令別名 96
3.37 設(shè)置日期和時間 97
3.38 查看SD卡剩余存儲空間 98
3.39 檢查操作系統(tǒng)版本 98
3.40 更新Raspbian操作系統(tǒng) 99
第4章 軟件 101
4.0 引言 101
4.1 搭建媒體中心 101
4.2 安裝辦公軟件 102
4.3 打造網(wǎng)絡(luò)攝像頭服務(wù)器 103
4.4 運行老式游戲控制臺模擬器 105
4.5 運行樹莓派版Minecraft 107
4.6 樹莓派無線電發(fā)射器 107
4.7 編輯位圖 109
4.8 編輯矢量圖 110
4.9 互聯(lián)網(wǎng)廣播 111
第5章 Python入門 113
5.0 引言 113
5.1 在Python 2和Python 3之間做出選擇 113
5.2 使用Mu編輯Python程序 114
5.3 使用Python控制臺 117
5.4 利用終端運行Python程序 118
5.5 為值(變量)命名 119
5.6 顯示輸出結(jié)果 120
5.7 讀取用戶的輸入 120
5.8 算術(shù)運算 121
5.9 創(chuàng)建字符串 122
5.10 連接(合并)字符串 122
5.11 將數(shù)字轉(zhuǎn)換為字符串 123
5.12 將字符串轉(zhuǎn)換為數(shù)字 124
5.13 確定字符串的長度 125
5.14 確定某字符串在另一個字符串中的位置 125
5.15 截取部分字符串 126
5.16 使用字符串替換另一個字符串中的內(nèi)容 127
5.17 字符串的大小寫轉(zhuǎn)換 127
5.18 根據(jù)條件運行命令 128
5.19 值的比較 129
5.20 邏輯運算符 130
5.21 將指令重復(fù)執(zhí)行特定次數(shù) 131
5.22 重復(fù)執(zhí)行指令直到特定條件改變?yōu)橹? 132
5.23 跳出循環(huán)語句 132
5.24 定義Python函數(shù) 133
第6章 Python中的列表與字典 135
6.0 引言 135
6.1 創(chuàng)建列表 135
6.2 訪問列表元素 136
6.3 確定列表長度 136
6.4 為列表添加元素 137
6.5 刪除列表元素 138
6.6 通過解析字符串創(chuàng)建列表 139
6.7 遍歷列表 139
6.8 枚舉列表 140
6.9 列表排序 141
6.10 分割列表 142
6.11 將函數(shù)應(yīng)用于列表 142
6.12 創(chuàng)建字典 143
6.13 訪問字典 144
6.14 刪除字典元素 145
6.15 遍歷字典 146
第7章 Python高級特性 147
7.0 引言 147
7.1 格式化數(shù)字 147
7.2 格式化時間和日期 148
7.3 返回多個值 149
7.4 定義類 150
7.5 定義方法 151
7.6 繼承 152
7.7 向文件中寫入內(nèi)容 153
7.8 讀文件 154
7.9 序列化 155
7.10 異常處理 156
7.11 使用模塊 157
7.12 隨機數(shù) 158
7.13 利用Python發(fā)送Web請求 160
7.14 Python的命令行參數(shù) 160
7.15 從Python運行Linux命令 161
7.16 從Python發(fā)送電子郵件 162
7.17 利用Python編寫簡單Web服務(wù)器 163
7.18 讓Python無所事事 164
7.19 同時進行多件事情 165
7.20 將Python應(yīng)用于樹莓派版Minecraft 166
7.21 解析JSON 168
7.22 創(chuàng)建用戶界面 169
7.23 使用正則表達式在文本中搜索 171
7.24 使用正則表達式來驗證數(shù)據(jù)輸入 173
7.25 使用正則表達式抓取網(wǎng)頁 174
第8章 機器視覺 176
8.0 引言 176
8.1 安裝SimpleCV 176
8.2 為機器視覺配置USB攝像頭 177
8.3 將樹莓派的攝像頭模塊用于機器視覺 179
8.4 數(shù)硬幣 179
8.5 人臉檢測 182
8.6 運動檢測 184
8.7 光學字符識別 186
第9章 硬件基礎(chǔ) 187
9.0 引言 187
9.1 GPIO連接器使用說明 187
9.2 使用GPIO接口時樹莓派的安全保護 189
9.3 配置I2C 190
9.4 使用I2C工具 191
9.5 配置SPI 193
9.6 安裝PySerial以便通過Python訪問串口 194
9.7 安裝Minicom以檢測串口 194
9.8 使用帶有跳線的面包板 195
9.9 使用樹莓派的排線連接面包板 196
9.10 使用樹莓派Squid 198
9.11 使用Raspberry Squid按鈕 199
9.12 利用兩個電阻器將5V信號轉(zhuǎn)換為3.3V 200
9.13 利用電平轉(zhuǎn)換模塊將5V信號轉(zhuǎn)換為3.3V 201
9.14 利用電池為樹莓派供電 202
9.15 利用鋰電池為樹莓派供電 203
9.16 Sense HAT入門指南 204
9.17 Explorer HAT Pro入門指南 205
9.18 RasPiRobot Board入門指南 207
9.19 使用Pi Plate原型板 208
9.20 制作樹莓派擴展板 211
9.21 樹莓派Zero與W型樹莓派Zero 213
第10章 控制硬件 215
10.0 引言 215
10.1 連接LED 215
10.2 讓GPIO引腳進入安全狀態(tài) 218
10.3 控制LED的亮度 218
10.4 利用晶體管開關(guān)大功率直流設(shè)備 220
10.5 使用繼電器控制大功率設(shè)備的開關(guān) 222
10.6 控制高壓交流設(shè)備 224
10.7 用Android手機和藍牙控制硬件 225
10.8 編寫用于控制開關(guān)的用戶界面 228
10.9 編寫控制LED和電機的PWM功率的用戶界面 229
10.10 改變RGB LED的顏色 230
10.11 將模擬儀表用作顯示器 232
第11章 電機 235
11.0 引言 235
11.1 控制伺服電機 235
11.2 精確控制伺服電機 239
11.3 精確控制多臺伺服電機 241
11.4 控制直流電機的速度 243
11.5 控制直流電機的方向 244
11.6 使用單極步進電機 247
11.7 使用雙極步進電機 251
11.8 利用步進電機HAT驅(qū)動雙極步進電機 252
11.9 使用RasPiRobot Board驅(qū)動雙極步進電機 253
11.10 打造一款簡單的機器人小車 255
第12章 數(shù)字輸入 258
12.0 引言 258
12.1 連接按鈕開關(guān) 258
12.2 通過按鈕開關(guān)切換開關(guān)狀態(tài) 261
12.3 使用雙位撥動開關(guān)或滑動開關(guān) 262
12.4 使用三位撥動開關(guān) 263
12.5 按鈕去抖 265
12.6 使用外部上拉電阻器 267
12.7 使用旋轉(zhuǎn)(正交)編碼器 268
12.8 使用數(shù)字鍵盤 271
12.9 檢測移動 273
12.10 為樹莓派添加GPS模塊 275
12.11 攔截按鍵 278
12.12 攔截鼠標移動 279
12.13 使用實時時鐘模塊 280
12.14 為樹莓派提供重啟按鈕 283
第13章 傳感器 286
13.0 引言 286
13.1 使用電阻式傳感器 286
13.2 測量亮度 289
13.3 利用熱敏電阻器測量溫度 290
13.4 檢測甲烷 292
13.5 測量二氧化碳濃度 294
13.6 測量電壓 296
13.7 為測量而降低電壓 298
13.8 使用電阻式傳感器與ADC 300
13.9 使用ADC測量溫度 301
13.10 測量樹莓派的CPU溫度 303
13.11 利用Sense HAT測量溫度、濕度和氣壓 304
13.12 利用數(shù)字傳感器測量溫度 306
13.13 利用MMA8452Q模塊測量加速度 308
13.14 使用Sense HAT檢測磁北 312
13.15 使用Sense HAT的慣性管理單元 313
13.16 利用簧片開關(guān)檢測磁場 314
13.17 利用Sense HAT感應(yīng)磁場 315
13.18 測量距離 316
13.19 使用飛行時間傳感器測量距離 318
13.20 電容式觸摸傳感技術(shù) 320
13.21 用RFID讀寫器讀取智能卡 322
13.22 顯示傳感器的值 325
13.23 利用USB閃存驅(qū)動器記錄日志 326
第14章 顯示設(shè)備 328
14.0 引言 328
14.1 使用四位LED顯示設(shè)備 328
14.2 在I2C LED矩陣上面顯示消息 330
14.3 使用Sense HAT LED矩陣顯示器 332
14.4 在Alphanumeric LCD HAT上顯示消息 333
14.5 使用OLED圖形顯示器 335
14.6 使用可尋址的RGB LED燈條 337
14.7 使用Pimoroni Unicorn HAT 340
14.8 使用ePaper顯示屏 341
第15章 音頻設(shè)備 343
15.0 引言 343
15.1 連接一個揚聲器 343
15.2 控制聲音的輸出位置 345
15.3 通過命令行播放聲音 346
15.4 通過Python程序播放聲音 346
15.5 使用USB麥克風 347
15.6 播放蜂鳴聲 349
第16章 物聯(lián)網(wǎng) 352
16.0 引言 352
16.1 使用Web接口控制GPIO輸出 352
16.2 在網(wǎng)頁上顯示傳感器讀數(shù) 356
16.3 Node-RED入門 358
16.4 使用IFTTT發(fā)送電子郵件及其他通知 361
16.5 利用ThingSpeak發(fā)送推文 364
16.6 CheerLights 366
16.7 向ThingSpeak發(fā)送傳感器數(shù)據(jù) 368
16.8 使用Dweet和IFTTT響應(yīng)推文 370
第17章 家庭自動化 373
17.0 引言 373
17.1 通過Mosquitto將樹莓派打造成MQTT代理 373
17.2 組合使用Node-RED與MQTT服務(wù)器 376
17.3 刷寫Sonoff Wi-Fi智能開關(guān),使其適用于MQTT 380
17.4 配置Sonoff Wi-Fi智能開關(guān) 385
17.5 通過MQTT使用Sonoff網(wǎng)絡(luò)開關(guān) 387
17.6 利用Node-RED制作Sonoff閃爍開關(guān) 389
17.7 Node-RED Dashboard擴展 391
17.8 基于Node-RED的預(yù)定事件 394
17.9 通過Wemos D1發(fā)布MQTT消息 395
17.10 在Node-RED中使用Wemos D1 398
第18章 Arduino與樹莓派 400
18.0 引言 400
18.1 通過樹莓派對Arduino進行編程 401
18.2 利用Serial Monitor與Arduino進行通信 402
18.3 配置PyFirmata以便通過樹莓派來控制Arduino 404
18.4 通過樹莓派對Arduino的數(shù)字輸出進行寫操作 406
18.5 使用PyFirmata與TTL串口 407
18.6 使用PyFirmata讀取Arduino的數(shù)字輸入 409
18.7 利用PyFirmata讀取Arduino的模擬輸入 411
18.8 模擬輸出(PWM)與PyFirmata 412
18.9 利用PyFirmata控制伺服電機 414
18.10 在樹莓派上使用小型Arduino 415
18.11 使用支持Wi-Fi的小型Arduino兼容系統(tǒng)(ESP8266) 416
附錄A 配件與供應(yīng)商 419
附錄B 樹莓派引腳 426