樹莓派4與人工智能實戰項目

李偉斌

  • 出版商: 清華大學
  • 出版日期: 2022-06-01
  • 定價: $474
  • 售價: 8.5$403
  • 語言: 簡體中文
  • ISBN: 7302603251
  • ISBN-13: 9787302603252
  • 相關分類: Raspberry Pi
  • 下單後立即進貨 (約4週~6週)

  • 樹莓派4與人工智能實戰項目-preview-1
  • 樹莓派4與人工智能實戰項目-preview-2
  • 樹莓派4與人工智能實戰項目-preview-3
樹莓派4與人工智能實戰項目-preview-1

買這商品的人也買了...

商品描述

本書主要介紹樹莓派不同類型的特性,以及樹莓派入門所需要的基礎知識;涵蓋了樹莓派GPIO 的不同操作方法,以及樹莓派的I2C總線、SPI總線、UART串口、PWM脈寬調制等偏硬件操作的內容; 同時也為讀者準備了一些樹莓派上常見的服務類型的搭建和配置,包括樹莓派推流服務器搭建的方法, 常見數據庫MariaDB、PostgreSQL的安裝配置操作,MQTT服務器的搭建配置,DHCP服務器的搭建 配置等。此外,還加入了一些比較有趣的實驗,例如利用TensorFlow實現對象檢測,使用OpenCV制 作一個樹莓派掃描儀,或利用OpenCV實現換鼻子的實驗,帶領讀者瞭解樹莓派通過攝像頭能夠實現 的一些應用。 本書為初學者全面入門瞭解樹莓派提供了很好的切入點,使讀者可以瞭解更多樹莓派的使用方法 以及操作小技巧。同時,在整體的編程過程中使用了C語言、Python語言及Shell腳本語言等常見語言, 對於擁有此類語言編程經驗的用戶更友好。 希望讀者能夠在這里找到自己喜歡的實驗,並順利入門樹莓派!

目錄大綱

第1章 樹莓派簡介 ······················································································1

引言·················································1

1.1 樹莓派是什麽? ···························1

1.2 樹莓派周邊配件 ··························11

1.3 樹莓派能做什麽? ·······················12

第2章 樹莓派入門基礎知識 ·····································································21

2.1 系統選型 ···································21

2.2 新系統下載及燒錄 ·······················23

2.3 恢復卡製作的操作步驟 ·················24

2.3.1 方法1················································24

2.3.2 方法2················································24

2.4 燒錄系統 ···································24

2.5 初始化系統 ································29

第3章 樹莓派GPIO的使用 ·······································································46

3.1 GPIO的概念及相關庫的使用方法 ···46

3.2 樹莓派上使用wiringPi庫 ···············47

3.3 如何利用wiringPi優雅地點亮一個

LED燈 ······································51

3.3.1 硬件材料準備··································51

3.3.2 接線方式··········································51

3.3.3 編寫代碼測試··································52

3.4 玩轉流水燈和游俠燈 ····················58

3.4.1 流水燈·············································58

3.4.2 游俠燈··············································59

第4章 樹莓派中I2C功能的使用 ································································61

4.1 I2C的概念 ··································61

4.2 I2C實戰小項目 ····························62

4.2.1 接線方式··········································62

4.2.2 啟用I2C配置 ····································63

目 錄

IV 樹莓派4 與人工智能實戰項目

4.2.3 檢測Slave設備狀態 ·························65

4.2.4 查詢寄存器表並簡單測試··············65

4.2.5 編寫C語言測試代碼 ·······················66

4.2.6 編寫Python代碼進行測試 ··············68

4.2.7 關於Python中的I2C函數 ·················69

4.3 使用I2C協議的其他應用 ················70

4.3.1 點亮LCD1602液晶屏顯示樹莓派

的IP地址 ··········································70

4.3.2 利用OLED展示樹莓派磁盤狀態

信息··················································83

第5章 樹莓派SPI介紹及應用實例 ···························································· 88

5.1 SPI協議簡介 ······························88

5.1.1 SPI協議概述 ····································88

5.1.2 SPI的優缺點 ····································88

5.1.3 採用主-從模式(Master-Slave)的

控制方式··········································89

5.2 樹莓派SPI概述 ···························89

5.2.1 引腳和GPIO映射 ····························89

5.2.2 關於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應用實例 ·····················95

5.4.1 檢查SPI設備狀態 ····························95

5.4.2 準備SPI外設並接入樹莓派 ············95

5.4.3 安裝Python庫文件 ··························96

5.4.4 編寫定製的測試代碼並進行測試 ····97

5.5 讓樹莓派變身為一個環境檢測站 ··· 101

5.5.1 BME280模塊介紹 ·························102

5.5.2 接線方式········································103

5.5.3 編寫代碼獲取數據························103

5.5.4 總結················································112

第6章 樹莓派UART串口介紹及應用實例 ··············································· 113

6.1 UART簡介 ······························· 113

6.2 樹莓派串口說明 ························ 114

6.3 在樹莓派上配置啟用UART ·········· 115

6.4 在樹莓派上進行串口通信 ············ 120

6.4.1 使用Python 語言實現串口

通信 ······························· 120

6.4.2 通過C語言實現串口通信 ·············123

6.4.3 拓展實例········································124

6.5 關於樹莓派串口別名及切換

硬件串口 ································· 126

6.5.1 串口別名········································126

6.5.2 更換串口埠································127

6.6 總結 ······································· 128

第7章 樹莓派PWM介紹及應用實例 ·······················································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應用項目實戰 ···················· 134

7.4.1 呼吸燈效果····································134

7.4.2 舵機控制········································138

第8章 樹莓派開源網絡應用實例 ·····························································144

引言·············································· 144

8.1 樹莓派搭建RTMP流媒體服務器 ···· 145

8.1.1 安裝Nginx及模塊··························145

8.1.2 啟用RTMP ·····································148

8.1.3 客戶端連接測試····························151

8.2 樹莓派搭建Samba文件服務器 ······· 156

8.2.1 什麽是Samba文件服務器 ·············156

8.2.2 需要準備的設備····························156

8.2.3 安裝配置Samba服務器 ·················157

8.3 樹莓派搭建NFS文件服務器 ········· 163

8.3.1 什麽是NFS文件服務器 ················163

8.3.2 需要的設備····································163

8.3.3 安裝配置NFS文件系統 ················163

8.4 樹莓派搭建日誌服務器 ··············· 169

8.4.1 什麽是日誌服務器························169

8.4.2 需要的硬件····································170

8.4.3 安裝rsyslog服務 ····························170

8.4.4 配置rsyslog作為服務器 ················170

8.4.5 創建新模板····································171

8.4.6 重啟服務並測試····························172

8.5 樹莓派搭建MariaDB數據庫

服務器 ···································· 175

8.5.1 什麽是MariaDB ····························175

8.5.2 MariaDB 和 MySQL 的區別 ········175

8.5.3 安裝MariaDB ································176

8.5.4 配置MariaDB ································176

8.5.5 創建一個數據庫····························178

8.5.6 添加一張表····································179

8.5.7 插入幾條記錄································180

8.6 樹莓派搭建PostgreSQL數據

庫服務器 ································· 182

8.6.1 什麽是PostgreSQL數據庫 ············182

8.6.2 安裝PostgreSQL ····························182

8.6.3 配置PostgreSQL ····························182

8.6.4 創建數據庫····································183

8.6.5 常見控制台命令····························184

8.6.6 基本SQL語句 ·······························185

8.7 樹莓派搭建Mosquitto MQTT

服務器 ··································· 186

8.7.1 什麽是MQTT服務器 ····················186

8.7.2 安裝Mosquitto 服務器 ··················187

8.7.3 檢測服務器狀態····························187

8.7.4 在樹莓派上測試Mosquitto代理 ···187

8.7.5 多主機測試····································189

8.7.6 嘗試使用Python的paho-mqtt庫 ····190

8.8 樹莓派搭建DHCP服務器 ············· 193

8.8.1 什麽是DHCP服務器 ·····················193

8.8.2 測試環境········································193

8.8.3 配置1號主機DHCP服務 ···············194

8.8.4 修改DHCP服務的配置 ·················194

VI 樹莓派4 與人工智能實戰項目

8.8.5 重啟服務以生效配置····················195

8.8.6 開啟路由轉發································195

8.8.7 配置IPtables實現流量路由 ···········196

8.8.8 註意事項········································196

8.9 總結 ······································· 197

第9章 樹莓派上利用TensorFlow實現對象檢測 ······································198

引言·············································· 198

9.1 軟硬件環境介紹 ························ 198

9.1.1 硬件準備········································198

9.1.2 軟件準備········································199

9.2 操作步驟 ································· 199

9.2.1 更新系統及軟件倉庫 ···················199

9.2.2 創建TensorFlow的工作目錄 ·······199

9.2.3 安裝TensorFlow的Python庫和部分

依賴················································200

9.2.4 安裝OpenCV視覺框架 ·················200

9.2.5 編譯安裝Protobuf組件··················201

9.2.6 重啟系統········································203

9.2.7 重新登錄系統並設置TensorFlow

目錄結構 ·······································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 執行腳本並進行檢測····················206

9.4 總結 ······································· 208

第10章 樹莓派掃描儀—樹莓派+OpenCV ···········································209

引言·············································· 209

10.1 原理 ····································· 209

10.2 硬件準備 ······························· 210

10.3 軟件準備 ······························· 211

10.3.1 軟件包版本信息··························211

10.3.2 查看軟件版本的方法··················211

10.4 配置環境 ······························· 212

10.4.1 檢查網絡狀態······························212

10.4.2 更新軟件倉庫並安裝軟件··········212

10.4.3 創建並激活虛擬環境 ··················213

10.4.4 啟用攝像頭··································213

10.5 代碼調試 ······························· 215

10.6 應用拓展 ······························· 219

10.7 總結 ····································· 221

第11章 AI換鼻子—樹莓派+OpenCV ··················································222

引言·············································· 222 11.1 AI換鼻子的原理 ······················ 223

目錄 VII

11.2 硬件需求 ······························· 223

11.3 軟件需求 ······························· 223

11.3.1 Raspbian操作系統 ·······················223

11.3.2 Python3 環境 ·······························224

11.3.3 virtualenv環境 ·····························225

11.3.4 dlib庫 ··········································226

11.3.5 shape_predictor工具和get_frontal_

face_detector函數 ························226

11.3.6 預測模型庫下載 ·························228

11.4 操作步驟 ······························· 228

11.4.1 燒錄鏡像,啟動並完成初始化

配置··············································228

11.4.2 啟動樹莓派··································232

11.4.3 接入攝像頭·································236

11.4.4 系統初始化環境調試··················237

11.4.5 樹莓派攝像頭測試······················239

11.4.6 編寫代碼······································239

11.5 開挖腦洞,發散思維 ················ 262

11.6 總結 ····································· 262

第12章 樹莓派通過U盤啟動系統 ····························································263

引言·············································· 263

12.1 硬件需求 ······························· 263

12.2 前期準備 ······························· 264

12.3 更新升級系統 ························· 264

12.4 更新bootloader ························ 264

12.5 檢查啟動選項 ························· 265

12.6 無卡啟動測試 ························· 268

12.7 製作USB啟動盤 ······················ 268