本书展示如何在你新买的树莓派上通过编程实现一个网络机器人、气象站,或是媒体服务器等功能。通过一些简单的实例和有趣的项目,你能学到如何在树莓派上通过Python进行编程。你将会学到如何创建一系列好玩且实用的项目,从可以搜索并下载文件的网络机器人,到一个可以将你的宠物逼疯的小玩具。甚至,你还会学到将树莓派与Arduino或是Gertboard相结合的方法。新版本已经完全更新了新板的特性。你将学习如何在树莓派上使用Python编程,并提供实际的示例和有趣的项目。
很难相信从我写这本书的第1版到现在已经过去了四年。2014年,市面上有了树莓派的一个版本,当时的主板动力相对不足,只有单核ARM处理器和20个GPIO引脚。我很高兴能订购我的个树莓派,但实际上我必须先进入等待名单才能赶上第二批发货。
每当你想要改变时,就会有人推出一款单板电脑(SBC),它试图吸引树莓派的主要业余爱好者和创客的关注,那些人正准备从Arduino升级为更强大的工具。
树莓派在竞争中胜出,并得以蓬勃发展。现在有七种树莓派模型:1型、2型、2B型、3型、3B型、Zero型和Zero W型。与原始模型相比,3型树莓派更强大,它的四核架构使其可以执行像计算机视觉和机器学习这样的任务。与原始模型的频率700MHz相比,3型的频率高达1.5GHz。同时,Zero型和Zero W型的价位很低(分别为5美元和10美元),读者经常会问我:为什么要用Arduino呢?树莓派Zero更便宜!
现在树莓派已经不是选择了。根据你的预算,有相当多的SBC可以用于你想到的项目,从30美元的BeagleBoard到550美元的NVidia Jetson TX2。不过我还是喜欢树莓派,它是我次开始玩嵌入式计算机时所使用的主板。它还很便宜,所以当它被弄坏时(我已经弄坏过很多个了),至少我可以在不破产的情况下替换它,并且它仍然足以应付很多事情。
感谢你和我一起读这本新版书。如果你是我上一版书的粉丝,谢谢你长期以来的支持。如果你是一个新读者和一个新的树莓派使用者,非常欢迎你的加入!
我希望用剩余的篇幅向你介绍一个令人兴奋的项目和一个计算的新世界。
前言
引言
致谢
关于作者
关于技术审校
第1章 树莓派介绍1
1.1 树莓派的历史2
1.2 探索树莓派6
1.2.1 GPIO引脚7
1.2.2 USB和以太网端口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 片上系统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 片上系统11
1.3.8 不可见的部分12
1.4 树莓派与相似设备之间的对比12
1.5 树莓派入门12
1.6 树莓派的硬件需求13
1.6.1 通电13
1.6.2 添加显示器13
1.6.3 添加USB集线器13
1.7 树莓派操作系统14
1.7.1 格式化SD卡15
1.7.2 安装操作系统15
1.8 连接外围设备16
1.9 配置树莓派17
1.10 关闭树莓派19
1.11 总结20
第2章 轻松掌握Linux21
2.1 开始使用树莓派上的Linux23
2.1.1 Linux文件和文件系统23
2.1.2 Root用户与sudo24
2.1.3 命令25
2.1.4 练习:在Linux文件系统内进行导航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 默认文本编辑器38
2.3 总结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的数据类型50
3.4.1 数值50
3.4.2 字符串51
3.4.3 列表52
3.4.4 字典54
3.4.5 元组和文件55
3.5 利用Python进行编程57
3.5.1 IF测试58
3.5.2 循环60
3.5.3 函数62
3.5.4 对象和面向对象编程63
3.6 总结64
第4章 电子知识大科普66
4.1 基本电路常识67
4.2 开发所需要的工具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 一般的安全规则78
4.3.1 认真对待温度78
4.3.2 认真对待锋利的物体79
4.3.3 戴安全镜79
4.3.4 准备好灭火器79
4.3.5 在手边放置一个急救包80
4.3.6 在通风的环境下工作80
4.3.7 整理好你的工作环境81
4.4 福利:焊接技术82
4.5 总结84
第5章 网络机器人85
5.1 机器人礼仪86
5.2 网络的连接87
5.2.1 网络通信协议88
5.2.2 网页格式88
5.2.3 请求举例89
5.3 网络机器人的概念90
5.4 解析网页91
5.5 利用Python模块编码92
5.5.1 使用Mechanize模块93
5.5.2 用Beautiful Soup解析94
5.5.3 利用urllib库下载94
5.6 决定下载的内容95
5.6.1 选择起点96
5.6.2 存储文件96
5.7 编写Python网络机器人97
5.7.1 读取一个字符串并提取所有链接97
5.7.2 寻找并下载文件98
5.7.3 测试网络机器人99
5.7.4 创建目录并实例化一个列表101
5.8 终代码103
5.9 总结105
第6章 气象站106
6.1 零件购买清单107
6.2 使用I2C协议108
6.3 使用风速计109
6.3.1 构造风速计110
6.3.2 将风速计与树莓派连接113
6.3.3 根据风速纠正每秒转数114
6.4 连接数字指南针116
6.5 连接温度/湿度传感器118
6.6 连接气压计120
6.7 连接所有部件122
6.8 终代码124
6.9 总结126
第7章 媒体服务器127
7.1 零件购买清单128
7.2 使用NTFS格式的硬盘128
7.3 安装Samba131
7.4 配置Samba132
7.5 Linux权限设置134
7.6 重新启动Samba服务135
7.7 与Linux / OS X连接136
7.8 Kodi和Plex138
7.9 Python在哪里140
7.10 总结141
第8章 家庭安防系统142
8.1 用于安防的狗143
8.2 用于安防的树莓派143
8.3 使用传感器网络144
8.4 了解下拉电阻 145
8.5 零件购买清单146
8.6 以无线方式连接你的家庭网络146
8.7 访问GPIO引脚149
8.8 设置运动传感器150
8.9 设置磁簧开关152
8.10 设置压力开关 154
8.11 连接磁传感器155
8.12 设置树莓派的摄像机156
8.13 利用树莓派发送短信157
8.14 实现回调158
8.15 连接所有的部件159
8.16 终代码159
8.17 总结161
第9章 猫玩具162
9.1 零件购买清单162
9.2 玩具背后的设计理念163
9.3 创建和使用随机数164
9.4 使用GPIO库 166
9.5 控制舵机168
9.6 构建舵机结构171
9.7 构建激光结构172
9.8 将激光指示器连接到舵机上173
9.9 连接运动传感器175
9.10 连接所有的部件177
9.11 终代码180
9.12 总结181
第10章 无线电遥控飞机182
10.1 零件购买清单183
10.2 将GPS接收器连接至树莓派184
10.3 设置日志文件187
10.4 格式化KML文件189
10.5 使用线程和对象190
10.6 设置自启动192
10.7 连接所有部件194
10.8 终代码197
10.8.1 飞机飞行程序197
10.8.2 KML转换程序198
10.9 总结199
第11章 气象气球200
11.1 零件购买清单201
11.2 设置GPS接收器202
11.3 存储GPS数据204
11.4 安装PiFM205
11.5 安装festival206
11.6 安装ffmpeg207
11.7 准备树莓派208
11.8 使用线程和对象209
11.9 连接所有部件210
11.10 观察照片结果213
11.11 终代码215
11.12 总结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读取数据227
12.8 nunchuk和LED测试项目228
12.9 通过nunchuk控制潜水器电机和摄像头231
12.10 远程启动程序233
12.11 终代码235
12.12 构造潜水器237
12.13 构建框架237
12.14 构建树莓派的外壳238
12.15 电机的防水外壳239
12.16 连接至nunchuk241
12.17 装配终的产品241
12.18 总结246
第13章 树莓派和Arduino247
13.1 探索Arduino248
13.2 在树莓派中安装Arduino IDE250
13.3 运行舵机255
13.4 总结256