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。这是献给你们的。
The Translator抯 Words 译 者 序
近年来,随着物联网、可穿戴设备、智能硬件、工业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月于北京工业大学