本書展示如何在你新買的樹莓派上通過編程實現(xiàn)一個網(wǎng)絡(luò)機器人、氣象站,或是媒體服務(wù)器等功能。通過一些簡單的實例和有趣的項目,你能學(xué)到如何在樹莓派上通過Python進(jìn)行編程。你將會學(xué)到如何創(chuàng)建一系列好玩且實用的項目,從可以搜索并下載文件的網(wǎng)絡(luò)機器人,到一個可以將你的寵物逼瘋的小玩具。甚至,你還會學(xué)到將樹莓派與Arduino或是Gertboard相結(jié)合的方法。新版本已經(jīng)完全更新了新板的特性。你將學(xué)習(xí)如何在樹莓派上使用Python編程,并提供實際的示例和有趣的項目。
很難相信從我寫這本書的第1版到現(xiàn)在已經(jīng)過去了四年。2014年,市面上有了樹莓派的一個版本,當(dāng)時的主板動力相對不足,只有單核ARM處理器和20個GPIO引腳。我很高興能訂購我的個樹莓派,但實際上我必須先進(jìn)入等待名單才能趕上第二批發(fā)貨。
每當(dāng)你想要改變時,就會有人推出一款單板電腦(SBC),它試圖吸引樹莓派的主要業(yè)余愛好者和創(chuàng)客的關(guān)注,那些人正準(zhǔn)備從Arduino升級為更強大的工具。
樹莓派在競爭中勝出,并得以蓬勃發(fā)展,F(xiàn)在有七種樹莓派模型:1型、2型、2B型、3型、3B型、Zero型和Zero W型。與原始模型相比,3型樹莓派更強大,它的四核架構(gòu)使其可以執(zhí)行像計算機視覺和機器學(xué)習(xí)這樣的任務(wù)。與原始模型的頻率700MHz相比,3型的頻率高達(dá)1.5GHz。同時,Zero型和Zero W型的價位很低(分別為5美元和10美元),讀者經(jīng)常會問我:為什么要用Arduino呢?樹莓派Zero更便宜!
現(xiàn)在樹莓派已經(jīng)不是選擇了。根據(jù)你的預(yù)算,有相當(dāng)多的SBC可以用于你想到的項目,從30美元的BeagleBoard到550美元的NVidia Jetson TX2。不過我還是喜歡樹莓派,它是我次開始玩嵌入式計算機時所使用的主板。它還很便宜,所以當(dāng)它被弄壞時(我已經(jīng)弄壞過很多個了),至少我可以在不破產(chǎn)的情況下替換它,并且它仍然足以應(yīng)付很多事情。
感謝你和我一起讀這本新版書。如果你是我上一版書的粉絲,謝謝你長期以來的支持。如果你是一個新讀者和一個新的樹莓派使用者,非常歡迎你的加入!
我希望用剩余的篇幅向你介紹一個令人興奮的項目和一個計算的新世界。
前言
引言
致謝
關(guān)于作者
關(guān)于技術(shù)審校
第1章 樹莓派介紹1
1.1 樹莓派的歷史2
1.2 探索樹莓派6
1.2.1 GPIO引腳7
1.2.2 USB和以太網(wǎng)端口7
1.2.3 音頻插孔7
1.2.4 攝像機插口7
1.2.5 HDMI接口8
1.2.6 電源8
1.2.7 顯示器9
1.2.8 片上系統(tǒng)9
1.2.9 SD卡9
1.2.10 不可見的部分9
1.3 樹莓派Zero/Zero W10
1.3.1 GPIO10
1.3.2 攝像機插口10
1.3.3 電源11
1.3.4 USB接口11
1.3.5 HDMI接口11
1.3.6 SD卡 11
1.3.7 片上系統(tǒng)11
1.3.8 不可見的部分12
1.4 樹莓派與相似設(shè)備之間的對比12
1.5 樹莓派入門12
1.6 樹莓派的硬件需求13
1.6.1 通電13
1.6.2 添加顯示器13
1.6.3 添加USB集線器13
1.7 樹莓派操作系統(tǒng)14
1.7.1 格式化SD卡15
1.7.2 安裝操作系統(tǒng)15
1.8 連接外圍設(shè)備16
1.9 配置樹莓派17
1.10 關(guān)閉樹莓派19
1.11 總結(jié)20
第2章 輕松掌握Linux21
2.1 開始使用樹莓派上的Linux23
2.1.1 Linux文件和文件系統(tǒng)23
2.1.2 Root用戶與sudo24
2.1.3 命令25
2.1.4 練習(xí):在Linux文件系統(tǒng)內(nèi)進(jìn)行導(dǎo)航29
2.1.5 Linux中的shell30
2.1.6 包管理器32
2.2 文本編輯器33
2.2.1 Vim、emacs和nano34
2.2.2 使用Vim35
2.2.3 使用emacs36
2.2.4 使用nano37
2.2.5 默認(rèn)文本編輯器38
2.3 總結(jié)39
第3章 Python介紹40
3.1 腳本語言與編程語言40
3.2 Python語言的理念43
3.3 Python入門44
3.3.1 通過IDLE運行Python44
3.3.2 通過終端運行Python48
3.3.3 通過腳本運行Python48
3.4 探究Python的數(shù)據(jù)類型50
3.4.1 數(shù)值50
3.4.2 字符串51
3.4.3 列表52
3.4.4 字典54
3.4.5 元組和文件55
3.5 利用Python進(jìn)行編程57
3.5.1 IF測試58
3.5.2 循環(huán)60
3.5.3 函數(shù)62
3.5.4 對象和面向?qū)ο缶幊?3
3.6 總結(jié)64
第4章 電子知識大科普66
4.1 基本電路常識67
4.2 開發(fā)所需要的工具69
4.2.1 螺絲刀69
4.2.2 鉗子和剝線鉗70
4.2.3 剪線鉗71
4.2.4 銼刀72
4.2.5 放大鏡燈73
4.2.6 熱膠槍73
4.2.7 各類膠水73
4.2.8 萬用表74
4.2.9 電源74
4.2.10 實驗板75
4.2.11 插線板76
4.2.12 電烙鐵77
4.3 一般的安全規(guī)則78
4.3.1 認(rèn)真對待溫度78
4.3.2 認(rèn)真對待鋒利的物體79
4.3.3 戴安全鏡79
4.3.4 準(zhǔn)備好滅火器79
4.3.5 在手邊放置一個急救包80
4.3.6 在通風(fēng)的環(huán)境下工作80
4.3.7 整理好你的工作環(huán)境81
4.4 福利:焊接技術(shù)82
4.5 總結(jié)84
第5章 網(wǎng)絡(luò)機器人85
5.1 機器人禮儀86
5.2 網(wǎng)絡(luò)的連接87
5.2.1 網(wǎng)絡(luò)通信協(xié)議88
5.2.2 網(wǎng)頁格式88
5.2.3 請求舉例89
5.3 網(wǎng)絡(luò)機器人的概念90
5.4 解析網(wǎng)頁91
5.5 利用Python模塊編碼92
5.5.1 使用Mechanize模塊93
5.5.2 用Beautiful Soup解析94
5.5.3 利用urllib庫下載94
5.6 決定下載的內(nèi)容95
5.6.1 選擇起點96
5.6.2 存儲文件96
5.7 編寫Python網(wǎng)絡(luò)機器人97
5.7.1 讀取一個字符串并提取所有鏈接97
5.7.2 尋找并下載文件98
5.7.3 測試網(wǎng)絡(luò)機器人99
5.7.4 創(chuàng)建目錄并實例化一個列表101
5.8 終代碼103
5.9 總結(jié)105
第6章 氣象站106
6.1 零件購買清單107
6.2 使用I2C協(xié)議108
6.3 使用風(fēng)速計109
6.3.1 構(gòu)造風(fēng)速計110
6.3.2 將風(fēng)速計與樹莓派連接113
6.3.3 根據(jù)風(fēng)速糾正每秒轉(zhuǎn)數(shù)114
6.4 連接數(shù)字指南針116
6.5 連接溫度/濕度傳感器118
6.6 連接氣壓計120
6.7 連接所有部件122
6.8 終代碼124
6.9 總結(jié)126
第7章 媒體服務(wù)器127
7.1 零件購買清單128
7.2 使用NTFS格式的硬盤128
7.3 安裝Samba131
7.4 配置Samba132
7.5 Linux權(quán)限設(shè)置134
7.6 重新啟動Samba服務(wù)135
7.7 與Linux / OS X連接136
7.8 Kodi和Plex138
7.9 Python在哪里140
7.10 總結(jié)141
第8章 家庭安防系統(tǒng)142
8.1 用于安防的狗143
8.2 用于安防的樹莓派143
8.3 使用傳感器網(wǎng)絡(luò)144
8.4 了解下拉電阻 145
8.5 零件購買清單146
8.6 以無線方式連接你的家庭網(wǎng)絡(luò)146
8.7 訪問GPIO引腳149
8.8 設(shè)置運動傳感器150
8.9 設(shè)置磁簧開關(guān)152
8.10 設(shè)置壓力開關(guān) 154
8.11 連接磁傳感器155
8.12 設(shè)置樹莓派的攝像機156
8.13 利用樹莓派發(fā)送短信157
8.14 實現(xiàn)回調(diào)158
8.15 連接所有的部件159
8.16 終代碼159
8.17 總結(jié)161
第9章 貓玩具162
9.1 零件購買清單162
9.2 玩具背后的設(shè)計理念163
9.3 創(chuàng)建和使用隨機數(shù)164
9.4 使用GPIO庫 166
9.5 控制舵機168
9.6 構(gòu)建舵機結(jié)構(gòu)171
9.7 構(gòu)建激光結(jié)構(gòu)172
9.8 將激光指示器連接到舵機上173
9.9 連接運動傳感器175
9.10 連接所有的部件177
9.11 終代碼180
9.12 總結(jié)181
第10章 無線電遙控飛機182
10.1 零件購買清單183
10.2 將GPS接收器連接至樹莓派184
10.3 設(shè)置日志文件187
10.4 格式化KML文件189
10.5 使用線程和對象190
10.6 設(shè)置自啟動192
10.7 連接所有部件194
10.8 終代碼197
10.8.1 飛機飛行程序197
10.8.2 KML轉(zhuǎn)換程序198
10.9 總結(jié)199
第11章 氣象氣球200
11.1 零件購買清單201
11.2 設(shè)置GPS接收器202
11.3 存儲GPS數(shù)據(jù)204
11.4 安裝PiFM205
11.5 安裝festival206
11.6 安裝ffmpeg207
11.7 準(zhǔn)備樹莓派208
11.8 使用線程和對象209
11.9 連接所有部件210
11.10 觀察照片結(jié)果213
11.11 終代碼215
11.12 總結(jié)216
第12章 潛水器217
12.1 零件購買清單218
12.2 訪問樹莓派的GPIO引腳219
12.3 安裝樹莓派攝像頭模塊222
12.4 控制潛水器223
12.5 連接Wiichuck適配器224
12.6 激活樹莓派的I2C226
12.7 從nunchuk讀取數(shù)據(jù)227
12.8 nunchuk和LED測試項目228
12.9 通過nunchuk控制潛水器電機和攝像頭231
12.10 遠(yuǎn)程啟動程序233
12.11 終代碼235
12.12 構(gòu)造潛水器237
12.13 構(gòu)建框架237
12.14 構(gòu)建樹莓派的外殼238
12.15 電機的防水外殼239
12.16 連接至nunchuk241
12.17 裝配終的產(chǎn)品241
12.18 總結(jié)246
第13章 樹莓派和Arduino247
13.1 探索Arduino248
13.2 在樹莓派中安裝Arduino IDE250
13.3 運行舵機255
13.4 總結(jié)256