本書主要介紹樹莓派不同類型的特性,以及樹莓派入門所需要的基礎(chǔ)知識;涵蓋了樹莓派GPIO 的不同操作方法,以及樹莓派的I2C總線、SPI總線、UART串口、PWM脈寬調(diào)制等偏硬件操作的內(nèi)容; 同時也為讀者準備了一些樹莓派上常見的服務(wù)類型的搭建和配置,包括樹莓派推流服務(wù)器搭建的方法, 常見數(shù)據(jù)庫MariaDB、PostgreSQL的安裝配置操作,MQTT服務(wù)器的搭建配置,DHCP服務(wù)器的搭建 配置等。此外,還加入了一些比較有趣的實驗,例如利用TensorFlow實現(xiàn)對象檢測,使用OpenCV制 作一個樹莓派掃描儀,或利用OpenCV實現(xiàn)換鼻子的實驗,帶領(lǐng)讀者了解樹莓派通過攝像頭能夠?qū)崿F(xiàn) 的一些應(yīng)用。 本書為初學(xué)者全面入門了解樹莓派提供了很好的切入點,使讀者可以了解更多樹莓派的使用方法 以及操作小技巧。同時,在整體的編程過程中使用了C語言、Python語言及Shell腳本語言等常見語言, 對于擁有此類語言編程經(jīng)驗的用戶更友好。 希望讀者能夠在這里找到自己喜歡的實驗,并順利入門樹莓派!
本書主要介紹樹莓派不同類型的特性,以及樹莓派入門所需要的基礎(chǔ)知識;涵蓋了
樹莓派GPIO的不同操作方法,以及樹莓派的I2C總線、SPI總線、UART串口、PWM
脈寬調(diào)制等偏硬件操作的內(nèi)容;同時也為讀者準備了一些樹莓派上常見的服務(wù)類型的搭
建和配置,包括樹莓派推流服務(wù)器搭建的方法,常見數(shù)據(jù)庫MariaDB、PostgreSQL的安
裝配置操作,MQTT服務(wù)器的搭建配置,DHCP服務(wù)器的搭建配置等。此外,還加入了
一些比較有趣的實驗,例如利用TensorFlow實現(xiàn)對象檢測,使用OpenCV制作一個樹莓
派掃描儀,或利用OpenCV實現(xiàn)換鼻子的實驗,帶領(lǐng)讀者了解樹莓派通過攝像頭能夠?qū)?br />現(xiàn)的一些應(yīng)用。
自從2012年開始接觸樹莓派以來,我的工作和生活中一直有樹莓派的影子,公司的公眾號、我個人的公眾號上都在不斷地進行著和樹莓派有關(guān)的各種嘗試,也因此結(jié)識了很多喜歡樹莓派的小伙伴,大家在一次次的交流和相互學(xué)習(xí)中不斷進步,不僅鞏固了Linux系統(tǒng)的基本功,也學(xué)習(xí)到了很多嵌入式開發(fā)的經(jīng)驗,以及樹莓派上通過Python開發(fā)的經(jīng)驗。也是機緣巧合,遇到了清華大學(xué)出版社的楊迪娜老師,萌生了編寫一本樹莓派入門圖書的想法,也是本書誕生的契機。
本書主要介紹樹莓派不同類型的特性,以及樹莓派入門所需要的基礎(chǔ)知識;涵蓋了樹莓派GPIO的不同操作方法,以及樹莓派的I2C總線、SPI總線、UART串口、PWM脈寬調(diào)制等偏硬件操作的內(nèi)容;同時也為讀者準備了一些樹莓派上常見的服務(wù)類型的搭建和配置,包括樹莓派推流服務(wù)器搭建的方法,常見數(shù)據(jù)庫MariaDB、PostgreSQL的安裝配置操作,MQTT服務(wù)器的搭建配置,DHCP服務(wù)器的搭建配置等。此外,還加入了一些比較有趣的實驗,例如利用TensorFlow實現(xiàn)對象檢測,使用OpenCV制作一個樹莓派掃描儀,或利用OpenCV實現(xiàn)換鼻子的實驗,帶領(lǐng)讀者了解樹莓派通過攝像頭能夠?qū)崿F(xiàn)的一些應(yīng)用。
經(jīng)過和身邊朋友的不斷交流總結(jié),我編寫了本書,旨在引導(dǎo)讀者入門并對樹莓派應(yīng)用產(chǎn)生興趣。由于時間倉促,很多想法和創(chuàng)意尚未來得及編排,若有緣再續(xù)。
書中疏漏之處,希望各位讀者不吝賜教,多多批評指正,讓本書能夠造福更多愛好者。
作 者
2022年6月
前 言
李偉斌 (漂移菌 )
目前就職伍艾信息科技(上海)有限公司,首席Linux技術(shù)架構(gòu)師。 主要研究方向為嵌入式 Linux 操作系統(tǒng)的應(yīng)用及研發(fā)。 業(yè)余時間曾獲取中美創(chuàng)客馬拉松(上海站)一等獎, Intel IoT 物聯(lián)網(wǎng)大賽二等獎, 上海國際創(chuàng)客大賽蘑菇云分賽首屆腦洞大賽 腦洞大王獎, 上海谷歌Design Sprint Hackathon 優(yōu)勝獎, Junction 2021 全球黑客大賽 Out of box獎。被朋友譽為樹莓派超級愛好者及布道者, 并且兼漂移驢車項目聯(lián)合創(chuàng)始人角色。
第1章 樹莓派簡介 1
引言1
1.1 樹莓派是什么? 1
1.2 樹莓派周邊配件 11
1.3 樹莓派能做什么? 12
第2章 樹莓派入門基礎(chǔ)知識 21
2.1 系統(tǒng)選型 21
2.2 新系統(tǒng)下載及燒錄 23
2.3 恢復(fù)卡制作的操作步驟 24
2.3.1 方法124
2.3.2 方法224
2.4 燒錄系統(tǒng) 24
2.5 初始化系統(tǒng) 29
第3章 樹莓派GPIO的使用 46
3.1 GPIO的概念及相關(guān)庫的使用方法 46
3.2 樹莓派上使用wiringPi庫 47
3.3 如何利用wiringPi優(yōu)雅地點亮一個
LED燈 51
3.3.1 硬件材料準備51
3.3.2 接線方式51
3.3.3 編寫代碼測試52
3.4 玩轉(zhuǎn)流水燈和游俠燈 58
3.4.1 流水燈58
3.4.2 游俠燈59
第4章 樹莓派中I2C功能的使用 61
4.1 I2C的概念 61
4.2 I2C實戰(zhàn)小項目 62
4.2.1 接線方式62
4.2.2 啟用I2C配置 63
目 錄
IV 樹莓派4 與人工智能實戰(zhàn)項目
4.2.3 檢測Slave設(shè)備狀態(tài) 65
4.2.4 查詢寄存器表并簡單測試65
4.2.5 編寫C語言測試代碼 66
4.2.6 編寫Python代碼進行測試 68
4.2.7 關(guān)于Python中的I2C函數(shù) 69
4.3 使用I2C協(xié)議的其他應(yīng)用 70
4.3.1 點亮LCD1602液晶屏顯示樹莓派
的IP地址 70
4.3.2 利用OLED展示樹莓派磁盤狀態(tài)
信息83
第5章 樹莓派SPI介紹及應(yīng)用實例 88
5.1 SPI協(xié)議簡介 88
5.1.1 SPI協(xié)議概述 88
5.1.2 SPI的優(yōu)缺點 88
5.1.3 采用主-從模式(Master-Slave)的
控制方式89
5.2 樹莓派SPI概述 89
5.2.1 引腳和GPIO映射 89
5.2.2 關(guān)于SPI的速度 90
5.3 樹莓派上啟用SPI功能 90
5.3.1 通過raspi-config工具 91
5.3.2 通過編輯/boot/config.txt文件 93
5.3.3 通過圖形界面93
5.4 樹莓派SPI應(yīng)用實例 95
5.4.1 檢查SPI設(shè)備狀態(tài) 95
5.4.2 準備SPI外設(shè)并接入樹莓派 95
5.4.3 安裝Python庫文件 96
5.4.4 編寫定制的測試代碼并進行測試 97
5.5 讓樹莓派變身為一個環(huán)境檢測站 101
5.5.1 BME280模塊介紹 102
5.5.2 接線方式103
5.5.3 編寫代碼獲取數(shù)據(jù)103
5.5.4 總結(jié)112
第6章 樹莓派UART串口介紹及應(yīng)用實例 113
6.1 UART簡介 113
6.2 樹莓派串口說明 114
6.3 在樹莓派上配置啟用UART 115
6.4 在樹莓派上進行串口通信 120
6.4.1 使用Python 語言實現(xiàn)串口
通信 120
6.4.2 通過C語言實現(xiàn)串口通信 123
6.4.3 拓展實例124
6.5 關(guān)于樹莓派串口別名及切換
硬件串口 126
6.5.1 串口別名126
6.5.2 更換串口端口127
6.6 總結(jié) 128
第7章 樹莓派PWM介紹及應(yīng)用實例 129
引言 129 7.1 PWM控制原理 129
目錄 V
7.2 樹莓派PWM通道信息 130
7.3 wiringPi庫的PWM接口介紹 131
7.3.1 硬件PWM 131
7.3.2 軟件PWM 132
7.3.3 軟件PWM注意事項 133
7.4 PWM應(yīng)用項目實戰(zhàn) 134
7.4.1 呼吸燈效果134
7.4.2 舵機控制138
第8章 樹莓派開源網(wǎng)絡(luò)應(yīng)用實例 144
引言 144
8.1 樹莓派搭建RTMP流媒體服務(wù)器 145
8.1.1 安裝Nginx及模塊145
8.1.2 啟用RTMP 148
8.1.3 客戶端連接測試151
8.2 樹莓派搭建Samba文件服務(wù)器 156
8.2.1 什么是Samba文件服務(wù)器 156
8.2.2 需要準備的設(shè)備156
8.2.3 安裝配置Samba服務(wù)器 157
8.3 樹莓派搭建NFS文件服務(wù)器 163
8.3.1 什么是NFS文件服務(wù)器 163
8.3.2 需要的設(shè)備163
8.3.3 安裝配置NFS文件系統(tǒng) 163
8.4 樹莓派搭建日志服務(wù)器 169
8.4.1 什么是日志服務(wù)器169
8.4.2 需要的硬件170
8.4.3 安裝rsyslog服務(wù) 170
8.4.4 配置rsyslog作為服務(wù)器 170
8.4.5 創(chuàng)建新模板171
8.4.6 重啟服務(wù)并測試172
8.5 樹莓派搭建MariaDB數(shù)據(jù)庫
服務(wù)器 175
8.5.1 什么是MariaDB 175
8.5.2 MariaDB 和 MySQL 的區(qū)別 175
8.5.3 安裝MariaDB 176
8.5.4 配置MariaDB 176
8.5.5 創(chuàng)建一個數(shù)據(jù)庫178
8.5.6 添加一張表179
8.5.7 插入幾條記錄180
8.6 樹莓派搭建PostgreSQL數(shù)據(jù)
庫服務(wù)器 182
8.6.1 什么是PostgreSQL數(shù)據(jù)庫 182
8.6.2 安裝PostgreSQL 182
8.6.3 配置PostgreSQL 182
8.6.4 創(chuàng)建數(shù)據(jù)庫183
8.6.5 常見控制臺命令184
8.6.6 基本SQL語句 185
8.7 樹莓派搭建Mosquitto MQTT
服務(wù)器 186
8.7.1 什么是MQTT服務(wù)器 186
8.7.2 安裝Mosquitto 服務(wù)器 187
8.7.3 檢測服務(wù)器狀態(tài)187
8.7.4 在樹莓派上測試Mosquitto代理 187
8.7.5 多主機測試189
8.7.6 嘗試使用Python的paho-mqtt庫 190
8.8 樹莓派搭建DHCP服務(wù)器 193
8.8.1 什么是DHCP服務(wù)器 193
8.8.2 測試環(huán)境193
8.8.3 配置1號主機DHCP服務(wù) 194
8.8.4 修改DHCP服務(wù)的配置 194
VI 樹莓派4 與人工智能實戰(zhàn)項目
8.8.5 重啟服務(wù)以生效配置195
8.8.6 開啟路由轉(zhuǎn)發(fā)195
8.8.7 配置IPtables實現(xiàn)流量路由 196
8.8.8 注意事項196
8.9 總結(jié) 197
第9章 樹莓派上利用TensorFlow實現(xiàn)對象檢測 198
引言 198
9.1 軟硬件環(huán)境介紹 198
9.1.1 硬件準備198
9.1.2 軟件準備199
9.2 操作步驟 199
9.2.1 更新系統(tǒng)及軟件倉庫 199
9.2.2 創(chuàng)建TensorFlow的工作目錄 199
9.2.3 安裝TensorFlow的Python庫和部分
依賴200
9.2.4 安裝OpenCV視覺框架 200
9.2.5 編譯安裝Protobuf組件201
9.2.6 重啟系統(tǒng)203
9.2.7 重新登錄系統(tǒng)并設(shè)置TensorFlow
目錄結(jié)構(gòu) 203
9.2.8 下載TensorFlow模型 204
9.2.9 修改用戶初始化配置文件204
9.2.10 利用protoc編譯Protocol Buffer
文件 204
9.2.11 下載ssdlite_mobilenet_v2_coco
模型205
9.3 對象檢測測試 205
9.3.1 在樹莓派上啟用攝像頭205
9.3.2 下載檢測腳本205
9.3.3 接入攝像頭206
9.3.4 執(zhí)行腳本并進行檢測206
9.4 總結(jié) 208
第10章 樹莓派掃描儀樹莓派 OpenCV 209
引言 209
10.1 原理 209
10.2 硬件準備 210
10.3 軟件準備 211
10.3.1 軟件包版本信息211
10.3.2 查看軟件版本的方法211
10.4 配置環(huán)境 212
10.4.1 檢查網(wǎng)絡(luò)狀態(tài)212
10.4.2 更新軟件倉庫并安裝軟件212
10.4.3 創(chuàng)建并激活虛擬環(huán)境 213
10.4.4 啟用攝像頭213
10.5 代碼調(diào)試 215
10.6 應(yīng)用拓展 219
10.7 總結(jié) 221
第11章 AI換鼻子樹莓派 OpenCV 222
引言 222 11.1 AI換鼻子的原理 223
目錄 VII
11.2 硬件需求 223
11.3 軟件需求 223
11.3.1 Raspbian操作系統(tǒng) 223
11.3.2 Python3 環(huán)境 224
11.3.3 virtualenv環(huán)境 225
11.3.4 dlib庫 226
11.3.5 shape_predictor工具和get_frontal_
face_detector函數(shù) 226
11.3.6 預(yù)測模型庫下載 228
11.4 操作步驟 228
11.4.1 燒錄鏡像,啟動并完成初始化
配置228
11.4.2 啟動樹莓派232
11.4.3 接入攝像頭236
11.4.4 系統(tǒng)初始化環(huán)境調(diào)試237
11.4.5 樹莓派攝像頭測試239
11.4.6 編寫代碼239
11.5 開挖腦洞,發(fā)散思維 262
11.6 總結(jié) 262
第12章 樹莓派通過U盤啟動系統(tǒng) 263
引言 263
12.1 硬件需求 263
12.2 前期準備 264
12.3 更新升級系統(tǒng) 264
12.4 更新bootloader 264
12.5 檢查啟動選項 265
12.6 無卡啟動測試 268
12.7 制作USB啟動盤 268