图书目录

第1篇 基础知识

第1章 树莓派基础 2

1.1 树莓派简介 2

1.1.1 起源 2

1.1.2 介绍 3

1.1.3 系统 4

1.1.4 应用 4

1.2 烧录系统 4

1.2.1 电源 5

1.2.2 显示器 5

1.2.3 TF内存卡 6

1.2.4 键盘和鼠标 7

1.2.5 可选设备 7

1.2.6 安装系统 8

1.2.7 无显示器安装系统 9

1.3 小结 11

第2章 树莓派使用Python 12

2.1 树莓派使用 12

2.1.1 Raspberry Pi OS简介 12

2.1.2 使用LXDE 12

2.1.3 使用终端 14

2.1.4 使用SSH 14

2.1.5 使用VNC 15

2.1.6 中文输入法 17

2.2 安装Python 17

2.2.1 安装Python 18

2.2.2 Python解释器 19

2.2.3 使用Thonny 19

2.3 小结 20

第3章 Linux命令 21

3.1 系统管理 21

3.1.1 用户管理 21

3.1.2 进程和服务管理 22

3.1.3 系统重启和关机 26

3.2 文件管理 27

3.2.1 创建和删除 27

3.2.2 目录切换 28

3.2.3 权限设置 29

3.2.4 查找 30

3.3 软件管理 30

3.3.1 软件安装 31

3.3.2 软件升级 31

3.3.3 软件搜索 31

3.3.4 软件卸载 32

3.4 性能监控 32

3.4.1 使用命令查看 32

3.4.2 使用脚本查看 33

3.5 小结 35

第4章 常用操作 36

4.1 树莓派换源 36

4.1.1 查看系统版本 36

4.1.2 更换系统源 37

4.1.3 更换pip源 38

4.2 文件存储 38

4.2.1 FTP服务 39

4.2.2 文件共享 40

4.3 系统备份 43

4.3.1 全卡备份 43

4.3.2 压缩备份 44

4.4 小结 45

第5章 常用服务 46

5.1 远程监控 46

5.2 Web技术 48

5.2.1 nginx 48

5.2.2 内网穿透 49

5.2.3 Aria2 51

5.2.4 NTP 55

5.3 MariaDB 57

5.4 小结 60

第2篇 核心技术

第6章 GPIO基础 62

6.1 GPIO简介 62

6.1.1 GPIO定义 62

6.1.2 GPIO引脚布局 63

6.2 连接GPIO 66

6.2.1 直接连接 66

6.2.2 使用T形扩展板 67

6.2.3 使用面包板 67

6.3 使用RPi.GPIO模块 68

6.3.1 基本用法 68

6.3.2 模块的输入 70

6.3.3 脉冲宽度调制 72

6.4 控制GPIO输出 74

6.4.1 硬件连接 74

6.4.2 测试GPIO输出 75

6.5 检测GPIO输入 77

6.5.1 硬件连接 77

6.5.2 下拉电阻 78

6.5.3 上拉电阻 79

6.5.4 反应测试 81

6.6 拓展GPIO 83

6.6.1 SPI通信协议 83

6.6.2 I2C通信协议 88

6.6.3 串口通信协议 90

6.7 小结 90

第7章 简单硬件 91

7.1 LED 91

7.1.1 控制亮度 91

7.1.2 改变颜色 92

7.1.3 RGB-LED灯条 95

7.1.4 LED矩阵 98

7.1.5 使用OLED 102

7.2 蜂鸣器 103

7.2.1 有源蜂鸣器 104

7.2.2 无源蜂鸣器 105

7.3 实时时钟 108

7.4 小结 111

第8章 高级硬件 112

8.1 GPS 112

8.1.1 连接GPS模块 112

8.1.2 使用Python读取数据 113

8.2 供电设备 116

8.2.1 锂电池 116

8.2.2 不间断电源 117

8.2.3 太阳能电池板 118

8.3 数字键盘 119

8.4 指纹识别 123

8.5 麦克风阵列 124

8.6 小结 128

第9章 控制电机 129

9.1 直流电机 129

9.1.1 直流电机简介 129

9.1.2 驱动直流电机 130

9.1.3 控制方向 132

9.1.4 控制转速 133

9.2 伺服电机 135

9.2.1 伺服电机简介 135

9.2.2 控制伺服电机 136

9.2.3 控制多台伺服电机 137

9.3 步进电机 139

9.3.1 步进电机简介 139

9.3.2 单极步进电机 140

9.3.3 双极步进电机 142

9.4 小结 147

第10章 OpenCV应用 148

10.1 OpenCV基础 148

10.1.1 OpenCV简介 148

10.1.2 树莓派安装OpenCV 149

10.1.3 图像处理过程 156

10.2 使用各类摄像头 157

10.2.1 CSI摄像头 157

10.2.2 USB摄像头 160

10.3 图像基础操作 161

10.3.1 载入和显示图像 162

10.3.2 输出灰度图像 163

10.3.3 绘图 164

10.4 简单的图像识别 166

10.4.1 数字识别 166

10.4.2 英文识别 168

10.4.3 人脸识别 169

10.5 小 结 171

第3篇 高级应用

第11章 传感器 174

11.1 气体传感器 174

11.1.1 二氧化碳传感器 174

11.1.2 MQ系列传感器 176

11.2 温度、湿度和气压传感器 179

11.2.1 温度传感器 179

11.2.2 湿度传感器 181

11.2.3 气压传感器 183

11.3 电阻式传感器 185

11.3.1 热敏电阻 185

11.3.2 光敏电阻 187

11.4 声波传感器 189

11.4.1 声音传感器—DO模块 189

11.4.2 声音传感器—AO模块 191

11.4.3 超声波传感器 193

11.5 光传感器 196

11.5.1 光照传感器 196

11.5.2 红外传感器 198

11.5.3 紫外传感器 199

11.5.4 激光传感器 201

11.5.5 颜色传感器 203

11.5.6 火焰传感器 204

11.6 力传感器 208

11.6.1 压力传感器 208

11.6.2 震动传感器 211

11.6.3 电子罗盘传感器 213

11.6.4 角速度和加速度传感器 215

11.6.5 霍尔传感器 219

11.7 小结 221

第12章 扩展板 222

12.1 温控风扇 222

12.1.1 温控风扇简介 222

12.1.2 温控风扇使用方法 223

12.1.3 开机自启 223

12.2 电源管理 224

12.2.1 X735扩展板简介 224

12.2.2 X735使用方法 225

12.2.3 脚本安装 226

12.3 存储扩展 227

12.3.1 X872存储扩展板简介 227

12.3.2 X872和X735安装方法 228

12.4 Sense Hat 228

12.4.1 Sense Hat简介 228

12.4.2 控制LED 229

12.4.3 使用传感器 232

12.4.4 控制操纵杆 233

12.4.5 乒乓游戏 235

12.5 无线通信 236

12.5.1 无线通信简介 237

12.5.2 网络连接 238

12.5.3 拨打电话 240

12.5.4 收发短信 242

12.5.5 GPS定位 244

12.6 模数转换 246

12.6.1 模数转换扩展板简介 246

12.6.2 模拟信号转数字信号 248

12.6.3 数字信号转模拟信号 250

12.7 接口扩展 251

12.7.1 GPIO扩展 252

12.7.2 面包板扩展 252

12.7.3 USB扩展 253

12.7.4 串口扩展 254

12.8 以太网供电 257

12.8.1 POE扩展板简介 257

12.8.2 POE扩展板使用方法 257

12.9 继电器 258

12.9.1 继电器扩展板简介 258

12.9.2 继电器扩展板使用方法 259

12.10 小结 261

第13章 Arduino使用 262

13.1 Arduino基本情况 262

13.1.1 Arduino简介 262

13.1.2 Arduino的特点 262

13.1.3 Arduino版本 263

13.1.4 Arduino引脚 265

13.2 Arduino应用 266

13.2.1 IDE工具 266

13.2.2 点亮LED 268

13.2.3 Arduino语言 269

13.3 基础函数库 270

13.3.1 I/O函数 270

13.3.2 字符函数 273

13.3.3 数学库 278

13.4 进阶函数库 282

13.4.1 脉冲宽度调制 283

13.4.2 随机数 283

13.4.3 中断 284

13.4.4 串口通信 285

13.4.5 I2C通信 287

13.4.6 串行外设接口 290

13.5 与树莓派通信 292

13.5.1 树莓派安装Arduino IDE 292

13.5.2 通过USB进行通信 293

13.5.3 通过I2C进行通信 295

13.6 使用Python控制Arduino 297

13.6.1 使用PyFirmata简单控制Arduino 298

13.6.2 控制Arduino的数字输出 299

13.6.3 控制Arduino的PWM输出 300

13.6.4 读取Arduino的数字输入 301

13.6.5 读取Arduino的模拟输入 303

13.7 小结 304

第4篇 项目实战

第14章 项目实践 306

14.1 家居控制 306

14.1.1 Home Assistant安装 306

14.1.2 命令行基础操作 309

14.1.3 基础配置 312

14.1.4 接入设备 314

14.1.5 绑定微信小程序 316

14.1.6 安装Hass.io组件 317

14.2 智能音箱 319

14.2.1 wukong-robot安装 319

14.2.2 更新唤醒词 321

14.3 Android TV 325

14.3.1 Android TV简介 325

14.3.2 安装方法 326

14.4 个人博客网站 328

14.4.1 安装依赖 328

14.4.2 数据库配置 329

14.4.3 Gunicorn配置 331

14.4.4 Nginx配置 332

14.4.5 Supervisor配置 333

14.4.6 内网穿透 334

14.5 小结 334

第15章 智能小车 335

15.1 开发准备 335

15.1.1 需求分析 335

15.1.2 开发环境 335

15.1.3 硬件清单 336

15.1.4 项目预览 337

15.2 硬件安装 338

15.2.1 底盘 338

15.2.2 循迹模块 339

15.2.3 电池 341

15.2.4 主板 342

15.2.5 转接板 343

15.2.6 电压表 344

15.2.7 红外模块 345

15.2.8 超声波模块 345

15.2.9 面包板 347

15.2.10 云台 347

15.2.11 连接底层板和顶层板 348

15.2.12 接线 349

15.3 烧录镜像 350

15.4 控制实验 351

15.4.1 控制蜂鸣器 351

15.4.2 按键检测 353

15.4.3 实现基本运动 354

15.4.4 自动循迹 358

15.4.5 自动避障 361

15.4.6 超声单方向避障 365

15.4.7 超声多方向避障 368

15.4.8 红外控制 373

15.4.9 WIFI控制 377

15.5 小结 378