本書展示如何在你新買的樹莓派上通過編程實(shí)現(xiàn)一個(gè)網(wǎng)絡(luò)機(jī)器人、氣象站,或是媒體服務(wù)器等功能。通過一些簡(jiǎn)單的實(shí)例和有趣的項(xiàng)目,你能學(xué)到如何在樹莓派上通過Python進(jìn)行編程。你將會(huì)學(xué)到如何創(chuàng)建一系列好玩且實(shí)用的項(xiàng)目,從可以搜索并下載文件的網(wǎng)絡(luò)機(jī)器人,到一個(gè)可以將你的寵物逼瘋的小玩具。甚至,你還會(huì)學(xué)到將樹莓派與Arduino或是Gertboard相結(jié)合的方法。新版本已經(jīng)完全更新了新板的特性。你將學(xué)習(xí)如何在樹莓派上使用Python編程,并提供實(shí)際的示例和有趣的項(xiàng)目。
很難相信從我寫這本書的第1版到現(xiàn)在已經(jīng)過去了四年。2014年,市面上有了樹莓派的一個(gè)版本,當(dāng)時(shí)的主板動(dòng)力相對(duì)不足,只有單核ARM處理器和20個(gè)GPIO引腳。我很高興能訂購(gòu)我的個(gè)樹莓派,但實(shí)際上我必須先進(jìn)入等待名單才能趕上第二批發(fā)貨。
每當(dāng)你想要改變時(shí),就會(huì)有人推出一款單板電腦(SBC),它試圖吸引樹莓派的主要業(yè)余愛好者和創(chuàng)客的關(guān)注,那些人正準(zhǔn)備從Arduino升級(jí)為更強(qiáng)大的工具。
樹莓派在競(jìng)爭(zhēng)中勝出,并得以蓬勃發(fā)展,F(xiàn)在有七種樹莓派模型:1型、2型、2B型、3型、3B型、Zero型和Zero W型。與原始模型相比,3型樹莓派更強(qiáng)大,它的四核架構(gòu)使其可以執(zhí)行像計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)這樣的任務(wù)。與原始模型的頻率700MHz相比,3型的頻率高達(dá)1.5GHz。同時(shí),Zero型和Zero W型的價(jià)位很低(分別為5美元和10美元),讀者經(jīng)常會(huì)問我:為什么要用Arduino呢?樹莓派Zero更便宜!
現(xiàn)在樹莓派已經(jīng)不是選擇了。根據(jù)你的預(yù)算,有相當(dāng)多的SBC可以用于你想到的項(xiàng)目,從30美元的BeagleBoard到550美元的NVidia Jetson TX2。不過我還是喜歡樹莓派,它是我次開始玩嵌入式計(jì)算機(jī)時(shí)所使用的主板。它還很便宜,所以當(dāng)它被弄壞時(shí)(我已經(jīng)弄壞過很多個(gè)了),至少我可以在不破產(chǎn)的情況下替換它,并且它仍然足以應(yīng)付很多事情。
感謝你和我一起讀這本新版書。如果你是我上一版書的粉絲,謝謝你長(zhǎng)期以來(lái)的支持。如果你是一個(gè)新讀者和一個(gè)新的樹莓派使用者,非常歡迎你的加入!
我希望用剩余的篇幅向你介紹一個(gè)令人興奮的項(xiàng)目和一個(gè)計(jì)算的新世界。
前言
引言
致謝
關(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 攝像機(jī)插口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 攝像機(jī)插口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è)備之間的對(duì)比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 腳本語(yǔ)言與編程語(yǔ)言40
3.2 Python語(yǔ)言的理念43
3.3 Python入門44
3.3.1 通過IDLE運(yùn)行Python44
3.3.2 通過終端運(yùn)行Python48
3.3.3 通過腳本運(yùn)行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測(cè)試58
3.5.2 循環(huán)60
3.5.3 函數(shù)62
3.5.4 對(duì)象和面向?qū)ο缶幊?3
3.6 總結(jié)64
第4章 電子知識(shí)大科普66
4.1 基本電路常識(shí)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 萬(wàn)用表74
4.2.9 電源74
4.2.10 實(shí)驗(yàn)板75
4.2.11 插線板76
4.2.12 電烙鐵77
4.3 一般的安全規(guī)則78
4.3.1 認(rèn)真對(duì)待溫度78
4.3.2 認(rèn)真對(duì)待鋒利的物體79
4.3.3 戴安全鏡79
4.3.4 準(zhǔn)備好滅火器79
4.3.5 在手邊放置一個(gè)急救包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ò)機(jī)器人85
5.1 機(jī)器人禮儀86
5.2 網(wǎng)絡(luò)的連接87
5.2.1 網(wǎng)絡(luò)通信協(xié)議88
5.2.2 網(wǎng)頁(yè)格式88
5.2.3 請(qǐng)求舉例89
5.3 網(wǎng)絡(luò)機(jī)器人的概念90
5.4 解析網(wǎng)頁(yè)91
5.5 利用Python模塊編碼92
5.5.1 使用Mechanize模塊93
5.5.2 用Beautiful Soup解析94
5.5.3 利用urllib庫(kù)下載94
5.6 決定下載的內(nèi)容95
5.6.1 選擇起點(diǎn)96
5.6.2 存儲(chǔ)文件96
5.7 編寫Python網(wǎng)絡(luò)機(jī)器人97
5.7.1 讀取一個(gè)字符串并提取所有鏈接97
5.7.2 尋找并下載文件98
5.7.3 測(cè)試網(wǎng)絡(luò)機(jī)器人99
5.7.4 創(chuàng)建目錄并實(shí)例化一個(gè)列表101
5.8 終代碼103
5.9 總結(jié)105
第6章 氣象站106
6.1 零件購(gòu)買清單107
6.2 使用I2C協(xié)議108
6.3 使用風(fēng)速計(jì)109
6.3.1 構(gòu)造風(fēng)速計(jì)110
6.3.2 將風(fēng)速計(jì)與樹莓派連接113
6.3.3 根據(jù)風(fēng)速糾正每秒轉(zhuǎn)數(shù)114
6.4 連接數(shù)字指南針116
6.5 連接溫度/濕度傳感器118
6.6 連接氣壓計(jì)120
6.7 連接所有部件122
6.8 終代碼124
6.9 總結(jié)126
第7章 媒體服務(wù)器127
7.1 零件購(gòu)買清單128
7.2 使用NTFS格式的硬盤128
7.3 安裝Samba131
7.4 配置Samba132
7.5 Linux權(quán)限設(shè)置134
7.6 重新啟動(dòng)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 零件購(gòu)買清單146
8.6 以無(wú)線方式連接你的家庭網(wǎng)絡(luò)146
8.7 訪問GPIO引腳149
8.8 設(shè)置運(yùn)動(dòng)傳感器150
8.9 設(shè)置磁簧開關(guān)152
8.10 設(shè)置壓力開關(guān) 154
8.11 連接磁傳感器155
8.12 設(shè)置樹莓派的攝像機(jī)156
8.13 利用樹莓派發(fā)送短信157
8.14 實(shí)現(xiàn)回調(diào)158
8.15 連接所有的部件159
8.16 終代碼159
8.17 總結(jié)161
第9章 貓玩具162
9.1 零件購(gòu)買清單162
9.2 玩具背后的設(shè)計(jì)理念163
9.3 創(chuàng)建和使用隨機(jī)數(shù)164
9.4 使用GPIO庫(kù) 166
9.5 控制舵機(jī)168
9.6 構(gòu)建舵機(jī)結(jié)構(gòu)171
9.7 構(gòu)建激光結(jié)構(gòu)172
9.8 將激光指示器連接到舵機(jī)上173
9.9 連接運(yùn)動(dòng)傳感器175
9.10 連接所有的部件177
9.11 終代碼180
9.12 總結(jié)181
第10章 無(wú)線電遙控飛機(jī)182
10.1 零件購(gòu)買清單183
10.2 將GPS接收器連接至樹莓派184
10.3 設(shè)置日志文件187
10.4 格式化KML文件189
10.5 使用線程和對(duì)象190
10.6 設(shè)置自啟動(dòng)192
10.7 連接所有部件194
10.8 終代碼197
10.8.1 飛機(jī)飛行程序197
10.8.2 KML轉(zhuǎn)換程序198
10.9 總結(jié)199
第11章 氣象氣球200
11.1 零件購(gòu)買清單201
11.2 設(shè)置GPS接收器202
11.3 存儲(chǔ)GPS數(shù)據(jù)204
11.4 安裝PiFM205
11.5 安裝festival206
11.6 安裝ffmpeg207
11.7 準(zhǔn)備樹莓派208
11.8 使用線程和對(duì)象209
11.9 連接所有部件210
11.10 觀察照片結(jié)果213
11.11 終代碼215
11.12 總結(jié)216
第12章 潛水器217
12.1 零件購(gòu)買清單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測(cè)試項(xiàng)目228
12.9 通過nunchuk控制潛水器電機(jī)和攝像頭231
12.10 遠(yuǎn)程啟動(dòng)程序233
12.11 終代碼235
12.12 構(gòu)造潛水器237
12.13 構(gòu)建框架237
12.14 構(gòu)建樹莓派的外殼238
12.15 電機(jī)的防水外殼239
12.16 連接至nunchuk241
12.17 裝配終的產(chǎn)品241
12.18 總結(jié)246
第13章 樹莓派和Arduino247
13.1 探索Arduino248
13.2 在樹莓派中安裝Arduino IDE250
13.3 運(yùn)行舵機(jī)255
13.4 總結(jié)256