首页>参考读物>计算机科学与技术>综合

Python树莓派编程
作者 : [美]沃尔弗拉姆·多纳特(Wolfram Donat) 著[美]哈伊姆·克劳斯(Chaim Krause) 审校
译者 : 韩德强 等译
丛书名 : 数字匠人
出版日期 : 2016-10-31
ISBN : 978-7-111-55030-3
定价 : 49.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 230
开本 : 16
原书名 : Learn Raspberry Pi Programming with Python
原出版社: Apress
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

图书特色

这不是一本介绍Python语言的书,也不是一本详细探索树莓派的书
如果你买了树莓派但不知道如何开始,那么本书适合你
如果你买了树莓派但不确定用它做什么,那么本书适合你

本书将向你展示如何在你新买的树莓派上通过编程实现一个网络机器人、气象站,或是媒体服务器等功能。通过一些简单的实例和有趣的项目,你能学到如何在树莓派上通过Python进行编程。你将会学到如何创建一系列好玩且实用的项目,从可以搜索并下载文件的网络机器人,到一个可以将你的宠物逼疯的小玩具。甚至,你还会学到将树莓派与Arduino或是Gertboard相结合的方法。
本书适合那些想要在诸如树莓派这样有趣的平台上学习Python,并且在学习过程中掌握一些电子技能的读者。虽然我们并不要求有编程基础或者Linux技能,但是如果接触过Linux的话将会有很大帮助。
通过阅读本书,你会学到:
树莓派和电子器件的常识
Linux快速入门
开展一系列项目所需的Python基础知识
实现一系列树莓派和Python的项目,包括服务器和带有摄像头的小器件
将树莓派与Arduino和Gertboard相结合的方法


沃尔弗拉姆·多纳特(Wolfram Donat) 是一位计算机工程师、作者、程序员,他对机器人、电子动画、自动化以及嵌入式系统都有着浓厚的兴趣。目前,他与妻子、儿子居住在阿拉斯加的安克雷奇。

哈伊姆·克劳斯(Chaim Krause) 目前居住在堪萨斯的莱文沃思。他被当地的美国陆军聘用为仿真专员。他在闲暇之时喜欢玩计算机游戏,偶尔也会开发一些游戏。尽管哈伊姆是芝加哥大学政治学的文学士,但当涉及计算机、编程及电子产品时,他便算得上是一名自学成才的高手。他的第一个计算机游戏是在Tandy Model I Level I上用BASIC语言开发的,并且该游戏程序是存储在一个盒式录音带内。 无线电业余爱好将他带进了电子世界。在这里,Arduino和树莓派为其提供了一个将计算机编程、电子产品与个人爱好相结合的平台。


韩德强 高级工程师,研究生导师。现担任北京工业大学计算机学院实验中心主任,长期从事嵌入式系统、物联网方面的教学、科研、产品开发等工作。从事教学工作前具有十二年x86工控机主板开发、控制工程研发经历。同时还担任中国计算机学会嵌入式系统专委会委员,北京嵌入式系统联谊会委员,中国软件行业协会嵌入式系统分会理事,教育部和工信部主办的“英特尔杯全国大学生电子竞赛——嵌入式专题邀请赛”专家组成员,教育部高等学校计算机类专业教学指导委员会主办的“全国大学生物联网设计竞赛(TI杯)”组委会副主任及华北赛区负责人,中文核心期刊《电子技术应用》编委,“教育部-微软精品课程建设项目”嵌入式系统课程负责人,“教育部-英特尔产学合作专业综合改革项目”嵌入式技术课程设计,“教育部-英特尔精品课程建设项目”嵌入式体系结构课程负责人,北京市精品教材建设项目负责人。2006年获“北京优秀青年工程师”荣誉称号,多次获微软全球最有价值专家(MVP)称号。

图书前言

在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。这是献给你们的。

上架指导

计算机\程序设计

封底文字

本书将向你展示如何在你新买的树莓派上通过编程实现一个网络机器人、气象站,或是媒体服务器等功能。通过一些简单的实例和有趣的项目,你能学到如何在树莓派上通过Python进行编程。你将会学到如何创建一系列好玩且实用的项目,从可以搜索并下载文件的网络机器人,到一个可以将你的宠物逼疯的小玩具。甚至,你还会学到将树莓派与Arduino或是Gertboard相结合地方法。
本书适合那些想要在诸如树莓派这样有趣的平台上学习Python,并且在学习过程中掌握一些电子技能的读者。虽然我们并不要求有编程基础或者Linux技能,但是如果接触过Linux的话将会有很大帮助。

通过阅读本书,你会学到:
• 树莓派和电子器件的常识
• Linux快速入门
• 开展一系列项目所需的Python基础知识
• 实现一系列树莓派和Python的项目,包括服务器和带有摄像头的小器件
• 将树莓派与Arduino和Gertboard相结合的方法

作者简介

[美]沃尔弗拉姆·多纳特(Wolfram Donat) 著[美]哈伊姆·克劳斯(Chaim Krause) 审校:暂无简介

译者简介

韩德强 等译:暂无简介

译者序

近年来,随着物联网、可穿戴设备、智能硬件、工业4.0、互联网+等新技术、新概念的出现,涌现出了大量的创客及创客空间。在2015年两会上,李克强总理在政府工作报告中指出要把“大众创业、万众创新”打造成推动中国经济继续前行的“双引擎”之一。
树莓派自问世以来,就以出色的性价比受到众多计算机发烧友和创客的追捧。2016年2月,推出了最新版的树莓派3B型,其搭载了1.2GHz的64位四核处理器(ARM Cortex-A53 1.2GHz 64-bit quad-core ARMv8 CPU)。在大大提高了处理能力的同时,还增加了802.11 b/g/n无线网卡和低功耗蓝牙4.1适配器等无线通信功能。另外,Linux不再独享树莓派。2015年,微软公司在推出Windows 10 IoT Core之初,树莓派作为ARM平台的代表,首先被支持。
Python语言是一种面向对象的、解释型计算机程序设计语言。自问世以来,Python以其简洁、易学、可扩展性以及丰富的库资源等优势,日益受到设计者的青睐。一些国际知名大学已经采用Python语言讲授程序设计课程,譬如卡耐基梅隆大学的编程基础、麻省理工学院的计算机科学及编程导论。另外,众多开源的科学计算软件包都提供了Python语言的调用接口,譬如著名的计算机视觉库OpenCV、三维可视化库VTK、医学图像处理库ITK等等。
本书的作者沃尔弗拉姆·多纳特(Wolfram Donat)是一名经验丰富的计算机工程师,他以工程的视角诠释了一个个工程项目的实现。本书有别于其他编程语言类图书,在介绍完基本的软硬件平台后,通过网络机器人、气象站、媒体服务器、家庭安防系统、猫玩具、无线电遥控飞机、气象气球、潜水艇等8个工程项目,介绍了网络通信协议、文件存储、传感器、执行部件等基础知识的编程方法。使读者真正理解了“通过做来学习”的先进理念。在突出实践能力培养的同时,又在每个项目中针对嵌入式系统的各个功能模块给出了相应的基础知识的介绍。另外,原书作者还非常重视工程习惯的培养,在实践过程中给出了一般的安全规则。以译者20多年嵌入式系统教学、工程经验来看,本书十分适合作为本科、高职高专各专业的创新课程教材。
本书由北京工业大学计算机学院的部分教师翻译,其中简介和第1~4章由韩德强翻译,第5~7章由王众翻译,第7、8章由杨淇善翻译,第9章由吴有仙翻译,第10、11章由张丽艳翻译,第12~14章由王宗侠翻译,全书的审校由韩德强完成。
在本书的翻译过程中得到了机械工业出版社华章分社的张国强、缪杰两位编辑的大力支持,在此对二位表示由衷的感谢!
限于译者的水平,翻译中难免有错误或不妥之处,真诚希望各位读者批评指正。

韩德强
2016年8月于北京工业大学

图书目录

译者序
前 言
第1章 树莓派简介 1
1.1 树莓派的历史 2
1.2 探索树莓派 5
1.2.1 SD卡 5
1.2.2 电源 6
1.2.3 HDMI接口 6
1.2.4 以太网口和USB接口 6
1.2.5 音频和RCA视频插孔 7
1.2.6 GPIO引脚 7
1.2.7 片上系统 7
1.2.8 树莓派同相似设备之间的对比 8
1.3 树莓派的硬件需求 8
1.3.1 通电 8
1.3.2 添加显示器 9
1.3.3 添加USB集线器 9
1.3.4 使用USB无线网络适配器 10
1.4 树莓派操作系统 11
1.4.1 格式化SD卡 11
1.4.2 使用NOOBS 11
1.5 连接外围设备 12
1.6 配置树莓派 12
1.7 关闭树莓派 14
1.8 总结 14
第2章 轻松掌握Linux 15
2.1 开始使用树莓派的Linux 16
2.1.1 Linux文件和文件系统 17
2.1.2 root用户与sudo 18
2.2 命令 18
2.3 练习:在Linux文件系统内进行导航 22
2.4 Linux中的shell 23
2.5 包管理器 24
2.6 文本编辑器 25
2.6.1 vim、emacs与nano 26
2.6.2 Leafpad 29
2.7 总结 30
第3章 Python介绍 31
3.1 脚本语言与程序设计语言 31
3.2 Python语言的理念 33
3.3 Python入门 34
3.3.1 通过IDLE运行Python 34
3.3.2 通过终端运行Python 37
3.3.3 通过脚本运行Python 37
3.3.4 探究Python的数据类型 38
3.4 利用Python进行编程 44
3.4.1 if测试 45
3.4.2 循环 47
3.4.3 函数 48
3.4.4 对象和面向对象编程 49
3.5 总结 50
第4章 电子知识大科普 51
4.1 基本电路常识 52
4.2 开发所需要的工具 53
4.2.1 螺丝刀 54
4.2.2 钳子和剥线钳 54
4.2.3 钢丝钳 55
4.2.4 锉刀 55
4.2.5 放大镜灯 55
4.2.6 热胶枪 56
4.2.7 各类胶水 56
4.2.8 万用表 56
4.2.9 电源 57
4.2.10 实验板 57
4.2.11 插线板 58
4.2.12 电烙铁 59
4.3 一般的安全规则 60
4.3.1 认真对待温度 60
4.3.2 认真对待锋利的物体 60
4.3.3 带安全镜 61
4.3.4 准备好灭火器 61
4.3.5 在手边放置一个急救包 61
4.3.6 在通风的环境下工作 62
4.4 整理好你的工作环境 62
4.5 福利:焊接技术 63
4.6 总结 64
第5章 网络机器人 65
5.1 机器人礼仪 66
5.2 网络的连接 67
5.2.1 网络通信协议 67
5.2.2 网页格式 68
5.2.3 请求举例 68
5.3 网络机器人的概念 69
5.4 解析网页 70
5.5 利用Python模块编码 71
5.5.1 使用Mechanize模块 71
5.5.2 用Beautiful Soup解析 72
5.5.3 利用urllib库下载 72
5.6 决定下载的内容 73
5.6.1 选择起点 73
5.6.2 存储文件 74
5.7 编写Python网络机器人 74
5.7.1 读取一个字符串并提取所有链接 75
5.7.2 寻找并下载文件 75
5.7.3 测试网络机器人 76
5.7.4 创建目录并实例化一个列表 77
5.8 最终代码 79
5.9 总结 80
第6章 气象站 81
6.1 零件购物清单 82
6.2 使用I2C协议 83
6.3 使用风速计 84
6.3.1 构造风速计 85
6.3.2 将风速计与树莓派连接 87
6.3.3 根据风速纠正的每秒转数 88
6.4 连接数字指南针 90
6.5 连接温度/湿度传感器 92
6.6 连接气压计 94
6.7 连接所有部件 95
6.8 最终代码 97
6.9 总结 98
第7章 媒体服务器 99
7.1 零件购物清单 99
7.2 使用NTFS格式的硬盘 100
7.3 安装Samba 102
7.3.1 配置Samba 103
7.3.2 Linux权限设置 105
7.3.3 修复单引号错误 106
7.3.4 重新启动Samba服务 106
7.4 与Linux / OS X连接 107
7.5 Python在哪 108
7.6 总结 109
第8章 家庭安防系统 110
8.1 用于安防的狗 111
8.2 用于安防的树莓派 111
8.3 使用传感器网络 112
8.3.1 了解下拉电阻 112
8.3.2 零件购物清单 113
8.3.3 以无线方式连接你的家庭网络 113
8.3.4 访问GPIO引脚 116
8.3.5 设置运动传感器 118
8.3.6 设置磁簧开关 119
8.3.7 设置压力开关 121
8.3.8 连接磁传感器 121
8.3.9 设置树莓派的摄像机 122
8.3.10 利用树莓派发送短信 123
8.3.11 实现回调 124
8.4 连接所有的部件 124
8.5 最终代码 125
8.6 总结 126
第9章 猫玩具 127
9.1 零件购物清单 127
9.2 玩具背后的设计理念 128
9.3 创建和使用随机数 129
9.4 使用GPIO库 130
9.5 控制舵机 132
9.6 构建舵机结构 134
9.7 构建激光结构 135
9.8 将激光连接到舵机上 137
9.9 连接运动传感器 138
9.10 连接所有的部件 140
9.11 最终代码 142
9.12 总结 143
第10章 无线电遥控飞机 144
10.1 零件购物清单 145
10.2 将GPS接收器连接至树莓派 146
10.3 设置日志文件 148
10.4 格式化KML文件 149
10.5 使用线程和对象 150
10.6 设置自启动 152
10.7 连接所有部件 153
10.8 最终代码 156
10.8.1 飞机飞行程序 157
10.8.2 KML转换程序 157
10.9 总结 158
第11章 气象气球 159
11.1 零件购物清单 160
11.2 设置GPS接收器 160
11.3 存储GPS数据 162
11.4 安装PiFM 163
11.5 安装festival 164
11.6 安装FFMPEG 164
11.7 准备树莓派 165
11.8 使用线程和对象 166
11.9 连接所有部件 167
11.10 观察照片结果 169
11.11 最终代码 170
11.12 总结 171
第12章 潜水器 172
12.1 零件购物清单 173
12.2 访问树莓派的GPIO引脚 174
12.3 安装树莓派摄像头模块 176
12.4 控制潜水器 177
12.4.1 连接Wiichuck适配器 178
12.4.2 激活树莓派的I2C 179
12.4.3 测试nunchuk 180
12.4.4 从nunchuk读取数据 181
12.4.5 通过nunchuk控制潜水器电机和摄像头 184
12.5 远程启动程序 186
12.6 最终的控制程序 188
12.7 最终代码 188
12.8 构造潜水器 190
12.8.1 构建框架 191
12.8.2 构建树莓派的外壳 191
12.8.3 电机的防水外壳 191
12.8.4 连接至nunchuk 193
12.8.5 装配最终的产品 194
12.9 总结 197
第13章 Gertboard开发板 198
13.1 检查扩展板 199
13.1.1 GPIO引脚 199
13.1.2 Atmega芯片 200
13.1.3 AD、DA转换器 201
13.1.4 I/O部分 201
13.1.5 电机控制器 202
13.1.6 集电极开路驱动器 203
13.1.7 跳帽 204
13.2 示例项目 205
13.2.1 配置初步跳帽的设置 205
13.2.2 点亮LED灯 206
13.2.3 用电机控制器进行实验 208
13.2.4 使用集电极开路驱动器 208
13.2.5 使用数字/模拟转换器 209
13.3 总结 210
第14章 树莓派和Arduino 211
14.1 探索Arduino 212
14.2 在树莓派中安装Arduino IDE 213
14.3 控制舵机 218
14.4 Arduino和Gertboard 219
14.5 总结 220

教学资源推荐
作者: Abraham Silberschatz,Henry F.Korth,S.Sudarshan
作者: [美]克利福德·斯坦(Clifford Stein) 罗伯特 L. 戴斯得尔(Robert L. Drysdale) 肯尼斯·博加特(Kenneth Bogart) 著
参考读物推荐
作者: [印]苏尼拉·格拉普蒂(Sunila Gollapudi)著
作者: (美)Scott Mueller
作者: 冉玉杰 编著