Preface 前 言
在2006年,当Eben Upton和其他树莓派基金会的创办人看到大学计算机专业学生的编程状况时,他们感到无比沮丧。在美国,计算机专业的编程课程被缩减为“CS 101:如何使用Word程序”和“CS 203:优化你的Facebook主页”。他们意识到,不是所有人在上大学之前都学过编程。因此,他们酝酿了一个计划——打造一种小型廉价的计算机,使孩子们可以更加方便地学习编程,就如同昔日的Amiga、Spectrum和Commodore 64。随后,他们便开发了一块以ARM处理器为核心的开发板,配有512MB内存并具有视频处理功能的GPU,集成了如USB键盘、鼠标、HDMI输出端口等接口。为了使其更易于编程,他们将Python设定为其主要的编程语言——一种强大且易学的脚本语言。这样,树莓派就诞生了。
多年以前,我在Commodore VIC 20上用BASIC语言编写了我的第一个程序。当时的计算机内存只有5KB,比现如今很多的微处理器的计算能力都要弱,但我仍编写出了一个很有趣的游戏,并利用盒式磁带保存程序的进度。在之后的几年里,我先后使用过不同的计算平台,从Windows 3.1到Macintosh OS 8,再到几个Linux系统。然而,树莓派的出现为陈旧的计算环境注入了一股新的气息,我为之激动不已。一方面是因为它具有小巧而便宜的特点,另一方面则是因为它易与外界进行交互——这对于那些感兴趣设计物质世界的人而言,是一种莫大的福音。所以当我听到它的发售消息之后,就同亿万的爱好者、黑客和工程师一样,立即对树莓派进行了预订并迫切期盼着它的到来。之后,我便开始用它构建一些东西并一发不可收拾了。
如果你买了树莓派但不知道如何开始,那这本书适合你。
如果你买了树莓派但不确定用它做什么,那这本书适合你。
如果你正犹豫是否要买树莓派,并思索着:“为什么我要买呢?我又做不出什么很酷的东西”,那毫无疑问,这本书更适合你。
这不是一本关于Python语言的教材,也不是一本详细探索树莓派的书。它以一种轻松的方式将你引向这台微型计算机。我希望你读完本书后,在进行创新的同时也能清楚地意识到树莓派所能做的一切。
你可以按照本书的进度完成各种项目,也可以*选择一些自己感兴趣的项目。在实践的过程中,我希望你能熟悉Python语言和树莓派(它们能让你走得更远),创建自己的项目,或许还能帮助其他同样对此感兴趣的人。总之,我希望你会喜欢本书及书中的项目。因为写作本书真的是一种非凡的体验!
好好享受这本书吧!
致谢
写一本书可能是一个人的工作,但绝对少不了别人的帮助。很多人都为这个项目做出了大量贡献,在此,我向他们致以最诚挚的谢意。感谢Kevin保证整件事情顺利进行,感谢Anne Marie理清我想说明的事情,感谢Roger LeBlanc使得这本书看起来像是我知道我在做什么。感谢作为技术指导的Chaim。确保了我写下的东西和实际的执行效果一致。并且感谢Michelle,最初能够注意到我。
最后,特别感谢Becky和Reed。这是献给你们的。
Contents 目 录
[第1章 树莓派简介
1.1 树莓派的历史](https://yq.aliyun.com/articles/89154/)
1.2 探索树莓派
1.2.1 SD卡
1.2.2 电源
1.2.3 HDMI接口
1.2.4 以太网口和USB接口
1.2.5 音频和RCA视频插孔
1.2.6 GPIO引脚
1.2.7 片上系统
1.2.8 树莓派同相似设备之间的对比
1.3 树莓派的硬件需求
1.3.1 通电
1.3.2 添加显示器
1.3.3 添加USB集线器
1.3.4 使用USB无线网络适配器
1.4 树莓派操作系统
1.4.1 格式化SD卡
1.4.2 使用NOOBS
1.5 连接外围设备
1.6 配置树莓派
1.7 关闭树莓派
1.8 总结
[第2章 轻松掌握Linux
2.1 开始使用树莓派的Linux](https://yq.aliyun.com/articles/89210/)
2.1.1 Linux文件和文件系统
2.1.2 root用户与sudo
2.2 命令
2.3 练习:在Linux文件系统内进行导航
2.4 Linux中的shell
2.5 包管理器
2.6 文本编辑器
2.6.1 vim、emacs与nano
2.6.2 Leafpad
2.7 总结
[第3章 Python介绍
3.1 脚本语言与程序设计语言 ](https://yq.aliyun.com/articles/89268/)
3.2 Python语言的理念
3.3 Python入门
3.3.1 通过IDLE运行Python
3.3.2 通过终端运行Python
3.3.3 通过脚本运行Python
3.3.4 探究Python的数据类型
3.4 利用Python进行编程
3.4.1 if测试
3.4.2 循环
3.4.3 函数
3.4.4 对象和面向对象编程
3.5 总结
第4章 电子知识大科普
4.1 基本电路常识
4.2 开发所需要的工具
4.2.1 螺丝刀
4.2.2 钳子和剥线钳
4.2.3 钢丝钳
4.2.4 锉刀
4.2.5 放大镜灯
4.2.6 热胶枪
4.2.7 各类胶水
4.2.8 万用表
4.2.9 电源
4.2.10 实验板
4.2.11 插线板
4.2.12 电烙铁
4.3 一般的安全规则
4.3.1 认真对待温度
4.3.2 认真对待锋利的物体
4.3.3 带安全镜
4.3.4 准备好灭火器
4.3.5 在手边放置一个急救包
4.3.6 在通风的环境下工作
4.4 整理好你的工作环境
4.5 福利:焊接技术
4.6 总结
第5章 网络机器人
5.1 机器人礼仪
5.2 网络的连接
5.2.1 网络通信协议
5.2.2 网页格式
5.2.3 请求举例
5.3 网络机器人的概念
5.4 解析网页
5.5 利用Python模块编码
5.5.1 使用Mechanize模块
5.5.2 用Beautiful Soup解析
5.5.3 利用urllib库下载
5.6 决定下载的内容
5.6.1 选择起点
5.6.2 存储文件
5.7 编写Python网络机器人
5.7.1 读取一个字符串并提取所有链接
5.7.2 寻找并下载文件
5.7.3 测试网络机器人
5.7.4 创建目录并实例化一个列表
5.8 最终代码
5.9 总结
第6章 气象站
6.1 零件购物清单
6.2 使用I2C协议
6.3 使用风速计
6.3.1 构造风速计
6.3.2 将风速计与树莓派连接
6.3.3 根据风速纠正的每秒转数
6.4 连接数字指南针
6.5 连接温度/湿度传感器
6.6 连接气压计
6.7 连接所有部件
6.8 最终代码
6.9 总结
第7章 媒体服务器
7.1 零件购物清单
7.2 使用NTFS格式的硬盘
7.3 安装Samba
7.3.1 配置Samba
7.3.2 Linux权限设置
7.3.3 修复单引号错误
7.3.4 重新启动Samba服务
7.4 与Linux / OS X连接
7.5 Python在哪
7.6 总结
第8章 家庭安防系统
8.1 用于安防的狗
8.2 用于安防的树莓派
8.3 使用传感器网络
8.3.1 了解下拉电阻
8.3.2 零件购物清单
8.3.3 以无线方式连接你的家庭网络
8.3.4 访问GPIO引脚
8.3.5 设置运动传感器
8.3.6 设置磁簧开关
8.3.7 设置压力开关
8.3.8 连接磁传感器
8.3.9 设置树莓派的摄像机
8.3.10 利用树莓派发送短信
8.3.11 实现回调
8.4 连接所有的部件
8.5 最终代码
8.6 总结
第9章 猫玩具
9.1 零件购物清单
9.2 玩具背后的设计理念
9.3 创建和使用随机数
9.4 使用GPIO库
9.5 控制舵机 132
9.6 构建舵机结构
9.7 构建激光结构
9.8 将激光连接到舵机上
9.9 连接运动传感器
9.10 连接所有的部件
9.11 最终代码
9.12 总结
第10章 无线电遥控飞机
10.1 零件购物清单
10.2 将GPS接收器连接至树莓派
10.3 设置日志文件
10.4 格式化KML文件
10.5 使用线程和对象
10.6 设置自启动
10.7 连接所有部件
10.8 最终代码
10.8.1 飞机飞行程序
10.8.2 KML转换程序
10.9 总结
第11章 气象气球
11.1 零件购物清单
11.2 设置GPS接收器
11.3 存储GPS数据
11.4 安装PiFM
11.5 安装festival
11.6 安装FFMPEG
11.7 准备树莓派
11.8 使用线程和对象
11.9 连接所有部件
11.10 观察照片结果
11.11 最终代码
11.12 总结
第12章 潜水器
12.1 零件购物清单
12.2 访问树莓派的GPIO引脚
12.3 安装树莓派摄像头模块
12.4 控制潜水器
12.4.1 连接Wiichuck适配器
12.4.2 激活树莓派的I2C
12.4.3 测试nunchuk
12.4.4 从nunchuk读取数据
12.4.5 通过nunchuk控制潜水器电机和摄像头
12.5 远程启动程序
12.6 最终的控制程序
12.7 最终代码
12.8 构造潜水器
12.8.1 构建框架
12.8.2 构建树莓派的外壳
12.8.3 电机的防水外壳
12.8.4 连接至nunchuk
12.8.5 装配最终的产品
12.9 总结
第13章 Gertboard开发板
13.1 检查扩展板
13.1.1 GPIO引脚
13.1.2 Atmega芯片
13.1.3 AD、DA转换器
13.1.4 I/O部分
13.1.5 电机控制器
13.1.6 集电极开路驱动器
13.1.7 跳帽
13.2 示例项目
13.2.1 配置初步跳帽的设置
13.2.2 点亮LED灯
13.2.3 用电机控制器进行实验
13.2.4 使用集电极开路驱动器
13.2.5 使用数字/模拟转换器
13.3 总结
第14章 树莓派和Arduino
14.1 探索Arduino
14.2 在树莓派中安装Arduino IDE
14.3 控制舵机
14.4 Arduino和Gertboard
14.5 总结