《Arduino魔法书:实现梦想的工具和技术》是一本关于使用Arduino实现梦想的作品。作者Jeremy Blum有一句名言:“我们生活在未来。”利用可用的工具和在本书中将学到的知识,任何人都有机会、也有能力选择一款Arduino微控制器并在几分钟内利用它控制周围的世界——这一梦想直到最近才成为可能。微控制器是一个可编程的平台,它使我们能够使用相对简单的命令,来定义复杂的机械、电气和软件系统的操作。通过对本书的学习,我们将使用Arduino制作各种作品,从运动检测到无线控制系统再到互联网通信。
本书适用于任何经验层级的Arduino爱好者。读者不需要具备或者只需具备少量编程和电气工程方面的经验。为了照顾到各个层次的读者,本书设计了各种可选章节、小栏目或短节选,并在其中详细解释了具体的概念。
献给我的祖母——那个终生保持着好奇心并
善于激励他人的人,她启发我每天不断向前。
关于作者
Jeremy Blum在康奈尔大学取得了电气和计算机工程专业的硕士学位,他还在同一领域取得了学士学位。在康奈尔大学,他通过由他发起并领导的康奈尔大学可持续设计组织(Cornell University Sustainable Design)监督了国内外几座生态建筑的设计和施工,该组织是一个美国承认的可持续设计组织,曾受到美国和世界绿色建筑委员会(U.S. and World Green Building Councils)CEO的特别称赞。同样,Jeremy也将他的激情付诸电气工程领域,设计了太阳能家庭能源监控系统、革命性的光导纤维LED照明系统及追踪太阳的智能太阳能面板。他还负责协助启动了一个首创的创业者协同工作空间,每年致力于许多学生创业项目(也包括一些他自己的创意)的合作开发。
Jeremy还设计了广受称赞的义肢控制方法、手势识别系统及楼宇自动化系统等许多项目。他设计了MakerBot Replicator 3D打印机(被世界各国的人们使用,包括像NASA这样知名组织)的电子系统,以及MakerBot Digitizer 3D扫描仪的原型电子系统和固件。作为知名组织Creative Machines Lab的研究员,他致力于制作能够自我组装的机器人、自学习四足机器人及重新定义个人制造的3D打印机。他将这项研究呈送给了同行审阅的期刊和远在印度的学术会议。
Jeremy制作的YouTube视频已经将数百万人带入了工程学的大门,是互联网上最流行的Arduino入门教程。他曾开发了入选探索频道(Discovery Channel)的开源硬件项目和入门教程,并因此被国际上的开源社区和“创客”社区所熟知,赢得了一些奖项和黑客马拉松(hack-a-thons)大赛。Jeremy入选了美国电气和电子工程师学会(American Institute of Electrical and Electronics Engineers)的2012工程学新面孔(2012 New Face of Engineering)榜单。
他通过自己的公司Blum Idea Labs LLC提供工程学咨询服务,并向纽约的年轻学生教授工程学和可持续发展课程。Jeremy的激情正在通过创新的工程学解决方案,改变着人们的生活和我们的家园。你可以在Jeremy的网站上进一步了解他和他的工作,网址是:www.jeremyblum.com。
关于技术编辑
¬¬Scott Fitzgerald是一名艺术家和教育工作者。自2006年起,他就在教学中将Arduino平台当作教具,并且自2005年起,就在纽约大学的交互性电信项目(Interactive Telecommunications Program,ITP)中教授物理计算,向艺术家和设计师介绍微控制器。Scott为Arduino团队工作,为新产品撰写文档,并创作入门教程来向人们介绍Arduino平台。他在2011年曾经是Making Things Talk第2版的技术编辑,并在2012年为Arduino官方入门套件(Arduino Starter Kit)撰写了附赠的图书。
致 谢
首先,必须感谢在Wiley出版社的朋友帮助我完成了这本书:感谢Mary James当初鼓励我撰写这本书;感谢Jennifer Lynn全程监督了我的写作。我还欠Scott Fitzgerald一个大大的感谢,感谢他在本书的技术编辑过程中的批判性眼光。
如果没有element14的鼎力支持,我可能永远无法制作出我的Arduino入门系列视频教程,它们是本书的序曲。尤其是Sabrina Deitch和Sagar Jethani,他们是绝佳的合作伙伴,我很荣幸能与他们一起工作。
在撰写本书主要部分的同时,我还要完成硕士学位并经营两家公司,所以我要特别感谢我的教授和同事,感谢他们在我尝试平衡所有责任时理解我。
最后,我想感谢我的家庭,特别是我的父母,还有我的兄弟David,是他们持续的激励,让我明白了做这些事情的意义。
前 言
你拥有绝佳的时机。正如我经常喜欢说的,“我们生活在未来”。利用如今可用的工具和书中的知识,你就有机会、也有能力让梦想变成现实。让任何人选择一款微控制器并在几分钟内利用它控制周围的世界——这一梦想直到最近才成为可能。你可能已经猜到了,微控制器是一个可编程的平台,它使你能够使用相对简单的命令,来定义复杂的机械、电气和软件系统的操作。Arduino微控制器平台将成为你的新宠,带你探索电子、编程、人机交互、艺术、控制系统及更加广阔的世界,有了它就有了无限的可能。通过对本书的学习,你将掌握使用Arduino制作各种作品的方法,从运动检测到无线控制系统再到互联网通信。
无论你是工程领域彻头彻尾的新手,还是打算入门嵌入式系统设计的经验丰富的老兵,Arduino都是一个绝佳的起点。你在寻找一本Arduino开发的通用参考手册吗?本书也非常适合你,它会引导你完成一系列具体项目,而你以后也可以再次翻阅本书来查找代码片段、最佳范例和系统原理图等资料。电气工程、系统设计、编程实践……这些你在阅读时学到的知识在Arduino平台之外也有广泛的应用。通过对本书的阅读,你将具备承担各种工程项目的能力,不论它们使用的是Arduino还是其他平台。
本书对象
本书适合任何经验层级的Arduino爱好者。章节是彼此相关的,要利用前面章节中的概念和项目组件来实现更加复杂的想法。但不要担心,当你面临全新的、复杂的想法时,会有一个交叉引用来提示你相关概念第一次出现在书中的何处,以便很快回想起来。
本书假设你不具备或者只具备很少的编程和电气工程方面的工作经验。为了照顾到各个层次的读者,本书设计了各种可选章节、小栏目或短节选,在其中详细解释了具体的概念。尽管这些小栏目对你更深入地理解Arduino的工作原理来说并不是必需的,但它们为更具好奇心的读者提供了进一步关注技术性话题的机会。
你将通过本书学到什么
本书不是食谱书。如果你想遵循手把手地指导自己如何搭建一个具体项目的书,而不需要解释为什么要这么做,那本书便不适合你。你可以把本书作为一本导论,其中介绍了电气工程、计算机科学、产品设计和高级思维;你也可以把Arduino作为媒介,通过动手实践的方式来体验这些概念。
当我们在本书中演示如何搭建Arduino项目的硬件组件时,你学到的将不仅是如何将它们连接在一起,还有如何阅读原理图,为什么将某个器件用于某项功能,如何通过数据手册为自己的项目选择合适的器件等。在编写软件时,我提供了完整的程序代码,但你会逐步走过几个迭代性的过程来创建最终的程序。这会帮助你巩固具体的程序函数、良好的代码格式化实践和对算法的理解。
本书会讲授物理概念、算法、数字化设计原理及具体的Arduino编程概念。我希望,通过对本书中案例的学习,你不仅能成为一名熟练的Arduino开发者,还能学会一些技巧,去开发更加复杂的电气系统,并在其他领域或其他平台上继续从事工程学方面的工作。
本书使用的标注
在本书中使用了下列标注和图标,以在一些最重要或最有用的信息上吸引你的注意。
警告 请你一定要留意这样的条目。如果一旦错误地执行某些步骤就可能导致电子器件损坏,你就会看到这种警告。
提示 这些条目包含了关于如何执行简单任务的快速提示,这可能对你手头的任务有所帮助。
注意 这些条目包含了对你来说可能很重要的额外信息,包括视频和在线资料的相关链接,它们会让具体项目的开发变得更加轻松。
样例标题
这样的条目对当前话题或相关话题做了更加深入的讲解。
获取器件
幸运的是,你可以方便地获得实施本书中项目所需的器件。本书译者已经根据本书内容提供了这些器件的获得地址:http://kuangqi.me/。
建议你先买基本套件。随着阅读的深入,你还可以购买扩展套件。不想购买套件吗?别担心。在每章的开头,有一个该章所需的详细器件列表。本书原著的专题网站www.exploringarduino.com,也提供了一些链接,通过它们可以找到每章所需的器件。
注意 你是否已经从Newark获得了本书的捆绑套装?如果是,那么你就可以继续了。
你需要什么
除了用来搭建Arduino项目的具体器件以外,你的Arduino探险之旅还需要一些其他工具和材料。最重要的是,你需要一台兼容Arduino集成开发环境(IDE)的计算机(Mac OS X 10.4以上版本,Windows XP以上版本,或者一个Linux发行版)。在必要时我会为这些操作系统中的操作做出说明。
你可能还想要一些额外的工具,用来调试、组装硬件等。它们对完成本书中的项目来说不是必需的,但在你拓展电气工程技能时,这些工具在其他项目中迟早有用。我推荐如下工具。
一把烙铁和一些焊料(完成本书中的项目并不需要焊接,但你可能希望在洞洞板上组装自己的电路,或者你可能想购买需要焊接组装的扩展板。)
一台万用表(在调试过程中有用,但不是必需的。)
一组小型螺丝刀
一支热熔胶枪
源代码和数字化内容
本书的主要专题网站是www.exploringarduino.com,它是由本书作者维护的。你可以在这个网站上找到每章的代码并下载(还有视频、链接及其他有用的材料)。Wiley也维护了一个关于本书数字化内容的仓库,网址是www.wiley.com。本书代码可在www.wiley.com/go/exploringarduino网页的“Download Code”标签下下载。
你也可以在www.wiley.com上根据ISBN(本书原著的ISBN为978-1-118- 54936-0)搜索本书原著,从而找到代码。
在每章的开始处,你可以找到本章主要代码的下载地址。在每章中,你还能在代码清单的标题和文本中找到你需要的代码文件的文件名。
在网站www.exploringarduino.com和www.wiley.com上提供的代码是ZIP压缩包。下载代码之后,使用适当的工具解压缩即可。
注意 由于许多图书的书名大同小异,所以通过ISBN搜索可能会更方便一些。本书原著的ISBN是978-1-118-54936-0。
勘误
我们尽力保证文本和代码的正确性。然而人无完人,错误在所难免。如果你在本书中发现了错误,比如拼写错误或者代码错误,我们会感谢你的反馈。通过提交勘误,你可能会消除其他读者几个小时的困惑,与此同时,你可以帮助我们提供更有用的信息。
要查找本书原著的勘误,请访问www.wiley.com/go/exploringarduino并单击“Errata”链接。
补充材料和技术支持
在你的Arduino探险之旅当中,不可避免地会遇到问题和麻烦。使用Arduino最大的一个好处就在于可以在网上找到绝佳的技术支持社区。这个极为活跃的Arduino用户大本营会十分乐意帮助你。下面列出了一些可能会帮到你的资源。
官方Arduino参考手册
www.arduino.cc/en/Reference/HomePage
我的Arduino入门教程系列视频
www.jeremyblum.com/category/arduino-tutorials
adafruit 公司的Arduino入门教程系列视频
learn.adafruit.com/category/learn-arduino
SparkFun的电子学入门教程
learn.sparkfun.com/tutorials
Arduino官方论坛
www.arduino.cc/forum
element14 Arduino社区
www.element14.com/community/groups/arduino
如果你用尽了这些资源,却还是无法解决你的问题,则请在Twitter(@sciguy14)上联系我,我也许能帮上忙。你也可以直接通过我的网站上的联系页面(www.jeremyblum.com/contact)来与我取得联系,但我通常没法保证快速回复。
Arduino是什么
Arduino原型平台的最大特点在于你想让它是什么,它就是什么。Arduino可以是一个植物灌溉自动控制系统,也可以是一个Web服务器,甚至可以是四轴飞行器的自动驾驶仪。
Arduino是一个微控制器开发平台,它配备了直观的编程语言,你可以使用Arduino集成开发环境(IDE)来开发它。你可以为Arduino安装传感器、效应器、灯、扬声器、扩展模块(shield,本书译作“扩展板”)及其他集成电路,来将Arduino变成一个可编程的“大脑”,应用于几乎任何控制系统。
本书不可能涵盖Arduino能做的所有事情,只要你的想象力是无穷的,可能性就是无穷的。因此,本书的目标是通过实施项目来让你熟悉Arduino的功能,学习开发自己的项目时所需的技巧。
你会在第1章中学到更多关于Arduino及这块板卡的变体。如果你渴望了解Arduino的所有内部工作原理,那么你很幸运:它是完全开源的,所有的电路图和文档都可以在Arduino网站上免费获得。附录提供了一些Arduino的技术指标。
一个开源平台
如果你是一个开源世界的新人,则你一定会满意的。本书不会详细介绍开源硬件运动,但你应该了解一点这种思想,是它让Arduino变得如此美妙。如果你想全面了解什么是开源硬件,则请查阅开源硬件协会网站(www.oshwa.org/definition)上的定义。
注意 你可以从我的TEDx演讲中学到所有关于开源运动的知识:http://kuangqi.me/arduino/,进入该网站即可找到。你也可以在本章开头处的Wiley网站上找到这个视频。
由于Arduino是开源硬件,所以任何人都可以免费获取所有的设计文件、原理图及源代码被。这不仅意味着你可以更方便地改造Arduino,以用于非常特定的功能,还意味着你可以将Arduino平台整合到你的设计中,制作并销售Arduino的复制品,并在其他项目中使用Arduino软件库。尽管本书使用的几乎全部是官方Arduino硬件,但你也可以使用数以百计的Arduino衍生板卡(它们通常添加了特别的功能)来制作本书中的项目。
Arduino的开源许可证还允许商业化地重用他人的设计(只要你不在自己的设计上使用Arduino商标)。所以,如果你在一个令人兴奋的项目原型中使用了Arduino,而你还想将其转化为一个商业产品,那么你是可以这样做的。举例来说,你可能听说过像MakerBot Replicator 3D打印机这样的产品,它的电子系统是基于Arduino Mega平台的(www.thingiverse.com/thing:16058)。(大爆料:我设计了那块主板!)
在使用本书时,请确保遵守了本书中源代码和硬件的许可证。一些许可证要求你在发布基于他人已有的设计时提供原始作者的信息;有的则要求你必须在相同的许可下分享你的改进工作。这样的分享帮助社区成长,所有了不起的在线文档和技术支持也正是源自于此,在你的Arduino探险之旅中,你一定会经常参考它们。我为本书编写的所有的代码示例(除非特别声明)都是基于GNU通用公开许可(GPL)的,你可以随心所欲地使用它们。
本书之外
有人可能对我在YouTube上流行的系列视频“Arduino和电子学入门教程”(www.youtube.com/sciguy14)很熟悉了。本书中我也多次提到它们,你可以通过这些视频更为深入地了解书中所涵盖的技术主题。对电子器件和微控制器利用计算机科学知识,将它们创造性地组合,来创造卓越的作品,如果你对此感到好奇,可以在我的作品集(www.jeremyblum.com/portfolio)中查看样例项目。同Arduino一样,我的绝大部分作品都通过开源许可发布,允许你针对自己的需求方便地复制它们。
我渴望知道你利用在本书中学到的技巧做了什么,并期待你将这些与我和其他朋友分享。祝你在Arduino探险之旅中好运!