《Arduino魔法书:实现梦想的工具和技术》是在2014年10月电子工业出版社出来自版的图书,作者是Jeremy Blum 杰里米·布鲁姆。
《Arduin来自o魔法书:实现梦想的工具和技术》是一本关于使用Arduino实现梦想的作品。作者Jeremy Blum有一句名言:"我们生活在未来。"利用可用的工具和在本书中将学到的360百科知识,任何人都有机会、也有能力选择一款Arduino微控制器并在几分钟内利用它控制周围的世界--这一梦想直到最近才成为可见早能。微控制器是一个可编程的平台,它使我们能够使用相对简单的命令,来定义复杂的机械盐凯、电气和软件系统的操作。通过对本书的学习,我们将使用Arduino制作各种作品,从运动检测到无线控制系统再到互联网通信。
委永死煤史他煤 《Arduino魔法书:实现梦想的工具和技术》适用于任何经验层级的Arduino爱好者。读者不需要具备或者只需具备少量编程和电气工程方面的经验。为了照顾到各个层次的读者,《Arduino魔法书:实现梦想的工具和技术》设计了各种可选章节、小栏目或短费宗密苏身节选,并在其中详细植核为劳布侵怕吸李汉应解释了具体的概念。
Arduino害民科魔法书:实现梦想的工具和技术
【美】Jeremy B亚善香但步想教lum 杰里米·布鲁姆 著
况琪 王俊升 译
ISBN 978-7-121-24067-6
2014年10月出版
定价:59.00元
328页
16开
探索Arduino的大千世界
本书来自就是你的翅膀
JeremyBlum因其在Youtube上发布的系360百科列教学视频而广为人知,这些视频向世界范围内的人们讲授了工程学的概念。他制作了大量的基于微控制器的系统,包括太阳跟踪器、手臂义肢、桁架遍历机器人、泰勒明电子琴、基于计算机视觉、手套的手势控制器等。
松圆若吧酒倍 《Arduino魔法书:实现梦想的工具和技术》是著名创客JeremyBlum汇聚多年开发经验并结合当下热门技术撰写的一本实用性极强的工具书,也是继电子工业出版社推出《Arduin喜常物划说包奏海科o从基础到实践》、《Ard属队北煤曾留uino机器人权威指南》图书后的又一旷世之作。全书内容丰富,采用"理论入、实践出"的案任信耐定毫城似教学方式,促使学者加快对基础知识的认知和理解。实验案例图讨零念聚构防农丝些器文并茂、注释清晰,由浅入深,通俗易懂。
目旧鲁架密于欣龙,奥松机器人创始人、资深创客
Jeremy在电气工程领域使用Arduino制作电子产品,台生师维又于犹如能工巧匠用锤子建造房子。
BrePettis,MakerBotInd请ustries创始人
Je主牛段根统风攻remy以其简明、易懂认注审团关建示抓的风格对Arduino进行了深度解析,这不仅让数码新手找到他们的立足点,也能让硬件老兵发现电子世界对业余爱好者友好的一面,并开始连接他们的器件。
ChrisGammell,AmpHour博客(Podc怕ast)联合主办人
《Arduino魔法书:实现梦想的工具和技术》是一本关于使用Arduino实现梦想的作品。作者Jeremy Blum有一句名言:"我们生活在未来。"利用可用的工具和在本书中将学到的知识,任何人都有机会、也有能力选择一款Arduino微控制器并在几分钟内利用它控制周氧凯似包则管张黑围的世界--这一梦想直到最近才成为可能。微控制器是云跟社确怀山一个可编程的平台,群它使我们能够使用相对简单的命令,来定义复杂的机械、电气和软件系统的操作。通过对本书的学习,我们将使用Arduino制作各种作苗投治鲜品,从运动检测到无线控制系统再到互联网通信。
《Arduino魔画都限营看点史测导法书:实现梦想的工具和技术》适用于任何经验层级的Arduin委刘左微京o爱好者。读者不需要范先化修候具备或者只需具备少量编程和电气工程方面的经验。为了照顾到各个层次的读者,《Arduino魔法书:实现梦想的工具和技术》设计了各种可选章节、小栏目或短节选,并在其中详细解释了具体的概念。
第 1 部分 Arduino 工程基础 / 1
第1 章让你的Arduino 闪烁 / 2
探索Arduino 生态系统 /3
Arduino 功能 / 3
Arduino 板卡 / 7
创建你的第一个程序 /12
下载并安装Arduino IDE / 12
运行IDE 并连接Arduino / 13
分析你的第一个程序 / 15
本章小结 /17
第2章数字输入、输出和脉冲宽度调制 / 18
数字输出 /19
连接一个LED 并使用面包板 / 19
数字输出端口编程 / 23
使用for 循环 / 24
analogWrite()与脉冲宽度调制 /25
读取数字输入 /28
读取带有下拉电阻的数字输入 / 28
使用"有弹性的"按键 / 30
制作一个可控的RGB LED 夜灯 /33
本章小结 /37
第3 章读取模拟传感器 / 38
理解模拟和数字信号 /39
比较模拟和数字信号 / 39
将模拟信号转换为数字信号 / 40
利用Arduino 读取模拟传感器:analogRead() /41
读取电位器 / 42
使用模拟传感器 / 45
利用可变电阻制作自己的模拟传感器 /50
使用阻性分压器 / 50
利用模拟输入控制模拟输出 / 52
本章小结 /54
第2 部分 控制环境 / 55
第4 章三极管与电机驱动 / 56
驱动直流电机 /57
操作大电流感性负载 / 58
利用PWM 控制电动机转速 / 62
使用H-桥控制直流电机的方向 / 64
驱动伺服电机 /70
理解连续旋转伺服电机和标准伺服电机的区别 / 71
理解伺服电机控制 / 71
控制伺服电机 / 75
制作扫描式距离传感器 /76
本章小结 /80
第5 章发出声音 / 81
理解扬声器的工作原理 /82
声音的性质 / 82
扬声器是如何发声的 / 83
使用tone()发出声音 /84
包含定义文件 / 85
给扬声器接线 / 86
产生声音序列 / 88
理解tone()函数的限制 / 91
制作一架微型钢琴 /91
本章小结 /94
第6 章USB 和串口通信 / 95
理解Arduino 的串口通信功能 /96
使用内置或外置USB-串口转换器的Arduino 板卡 / 97
使用次级含USB 功能ATMega MCU 来模拟串口转换器的Arduino 板卡 / 99
使用单个带USB 功能MCU 的Arduino 板卡 / 101
带有USB-Host 功能的Arduino 板卡 / 101
监听Arduino /102
使用print 语句 / 102
使用特殊字符 / 103
改变数据类型表示 / 105
与Arduino 通信 /105
从计算机或其他串口设备上读取信息 / 106
与桌面应用程序通信 /112
与Processing 通信 / 113
学习Arduino Leonardo(及其他基于32U4 的Arduino)的特殊技巧 /119
模拟键盘 / 119
模拟鼠标 / 124
本章小结 /127
第7 章移位寄存器 / 129
理解移位寄存器 /130
发送并行和串行数据 / 131
使用74HC595 移位寄存器 / 131
使用Arduino 进行串行移位输出 / 134
在二进制和十进制间转换 / 136
用移位寄存器控制灯光动画 /137
搭建"光骑士" / 137
用LED 条形图响应输入 / 139
本章小结 /142
第3 部分 Arduino 通信接口 / 143
第8 章I2C 总线 / 144
I2C 总线的历史 /145
I2C 硬件设计 /145
通信方案与ID 值 / 146
硬件要求和上拉电阻 / 147
与I2C 测温探头通信 /148
设置硬件 / 148
参考数据手册 / 149
编写软件 / 151
将移位寄存器、串口通信和I2C 通信结合 /153
为温度监控系统搭建硬件 / 153
修改嵌入式程序 / 154
编写Processing 程序 / 156
本章小结 /159
第9 章SPI 总线 / 160
SPI 总线概述 /161
SPI 硬件和通信设计 /162
硬件配置 / 162
通信方案 / 163
比较SPI 与I2C /164
与SPI 数字电位器通信 /164
从数据手册中获取信息 / 164
设置硬件 / 167
编写软件 / 169
用SPI 数字电位器制作视听显示系统 /171
设置硬件 / 172
修改软件 / 173
本章小结 /175
第10 章连接液晶显示器 / 176
设置LCD /177
使用LiquidCrystal 库写入LCD /180
向显示器输出文本 / 180
创建特殊符号和动画 / 182
制作一个私人自动恒温器 /185
设置硬件 / 185
用按键调节设定值 / 188
添加声音报警和电扇 / 189
整合:完整的程序 / 190
升级项目 / 194
本章小结 /194
第11 章使用 XBee 收发器进行无线通信 / 195
理解XBee 无线通信 /196
XBee 无线收发器 / 197
XBee 无线收发器扩展板和串口连接 / 198
配置XBee /201
用扩展板或USB 适配器配置 / 202
选择Xbee 设置并将XBee 连到主机上 / 203
用X-CTU 配置XBee / 204
用串口终端配置XBee / 207
与计算机无线通信 /209
为远程Arduino 供电 / 209
回顾串口示例:用电位器控制Processing / 211
回顾串口示例:控制一个RGB LED / 214
与另一个Arduino 通信:制作无线门铃 /216
系统设计 / 217
发射器硬件 / 218
接收器硬件 / 218
发射器软件 / 219
接收器软件 / 220
本章小结 /223
第4 部分 高级的话题和项目 / 225
第12 章硬件和定时器中断 / 226
使用硬件中断 /227
理解轮询和中断间的折中 / 228
理解Arduino 的硬件中断能力 / 229
搭建并测试硬件消抖动的按键中断电路 / 230
使用定时器中断 /237
理解定时器中断 / 237
获取软件库 / 238
近乎于同时地执行两个任务 / 238
搭建一个中断驱动的音响 /239
音响硬件 / 239
音响软件 / 240
本章小结 /242
第13 章用 SD 卡记录数据 / 243
数据记录的准备工作 /244
用CSV 文件格式化数据 / 244
为数据记录准备SD 卡 / 245
将SD 卡接入Arduino /249
SD 卡扩展板 / 249
SD 卡SPI 接口 / 253
写入SD 卡 / 253
读取SD 卡 / 258
使用一个实时时钟 /261
理解实时时钟 / 261
使用实时时钟 / 263
做一个入口记录仪 /268
记录仪硬件 / 268
记录仪软件 / 270
数据分析 / 273
本章小结 /274
第14 章将你的Arduino 联网 / 275
互联网、Arduino 和你 /276
网络术语 / 276
客户端与服务器 / 279
将Arduino 联网 / 279
在网上控制Arduino /279
准备I/O 控制硬件 / 280
设计一个简易网页 / 280
编写Arduino 服务器程序 / 282
通过网络控制Arduino / 286
把实时数据发送给绘图服务 /290
在Xively 上创建实时数据源 / 290
添加数据源组件 / 295
本章小结 /299
附录ATMega 数据手册和Arduino 原理图揭秘 / 300
阅读数据手册 /300
分解数据手册 / 300
理解器件引脚定义 / 302
理解Arduino 原理图 /304
封底:推荐语
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 的网站上进一步了解他和他的工作。
你拥有绝佳的时机。正如我经常喜欢说的,"我们生活在未来"。利用如今可用的工具和书中的知识,你就有机会、也有能力让梦想变成现实。让任何人选择一款微控制器并在几分钟内利用它控制周围的世界--这一梦想直到最近才成为可能。你可能已经猜到了,微控制器是一个可编程的平台,它使你能够使用相对简单的命令,来定义复杂的机械、电气和软件系统的操作。Arduino 微控制器平台将成为你的新宠,带你探索电子、编程、人机交互、艺术、控制系统及更加广阔的世界,有了它就有了无限的可能。通过对本书的学习,你将掌握使用Arduino 制作各种作品的方法,从运动检测到无线控制系统再到互联网通信。无论你是工程领域彻头彻尾的新手,还是打算入门嵌入式系统设计的经验丰富的老兵,Arduino 都是一个绝佳的起点。你在寻找一本Arduino 开发的通用参考手册吗?本书也非常适合你,它会引导你完成一系列具体项目,而你以后也可以再次翻阅本书来查找代码片段、最佳范例和系统原理图等资料。电气工程、系统设计、编程实践……这些你在阅读时学到的知识在Arduino 平台之外也有广泛的应用。通过对本书的阅读,你将具备承担各种工程项目的能力,不论它们使用的是Arduino 还是其他平台。
本书对象
本书适合任何经验层级的 Arduino 爱好者。章节是彼此相关的,要利用前面章节中的概念和项目组件来实现更加复杂的想法。但不要担心,当你面临全新的、复杂的想法时,会有一个交叉引用来提示你相关概念第一次出现在书中的何处,以便很快回想起来。
本书假设你不具备或者只具备很少的编程和电气工程方面的工作经验。为了照顾到各个层次的读者,本书设计了各种可选章节、小栏目或短节选,在其中详细解释了具体的概念。尽管这些小栏目对你更深入地理解Arduino 的工作原理来说并不是必需的,但它们为更具好奇心的读者提供了进一步关注技术性话题的机会。
你将通过本书学到什么
本书不是食谱书。如果你想遵循手把手地指导自己如何搭建一个具体项目的书,而不需要解释为什么要这么做,那本书便不适合你。你可以把本书作为一本导论,其中介绍了电气工程、计算机科学、产品设计和高级思维;你也可以把Arduino 作为媒介,通过动手实践的方式来体验这些概念。
当我们在本书中演示如何搭建 Arduino 项目的硬件组件时,你学到的将不仅是如何将它们连接在一起,还有如何阅读原理图,为什么将某个器件用于某项功能,如何通过数据手册为自己的项目选择合适的器件等。在编写软件时,我提供了完整的程序代码,但你会逐步走过几个迭代性的过程来创建最终的程序。这会帮助你巩固具体的程序函数、良好的代码格式化实践和对算法的理解。
本书会讲授物理概念、算法、数字化设计原理及具体的 Arduino 编程概念。我希望,通过对本书中案例的学习,你不仅能成为一名熟练的Arduino 开发者,还能学会一些技巧,去开发更加复杂的电气系统,并在其他领域或其他平台上继续从事工程学方面的工作。
本书使用的标注
在本书中使用了下列标注和图标,以在一些最重要或最有用的信息上吸引你的注意。
警告 请你一定要留意这样的条目。如果一旦错误地执行某些步骤就可能导致电子器件损坏,你就会看到这种警告。
提示 这些条目包含了关于如何执行简单任务的快速提示,这可能对你手头的任务有所帮助。
注意 这些条目包含了对你来说可能很重要的额外信息,包括视频和在线资料的相关链接,它们会让具体项目的开发变得更加轻松。
样例标题
这样的条目对当前话题或相关话题做了更加深入的讲解。
获取器件
幸运的是,你可以方便地获得实施本书中项目所需的器件。本书译者已经根据本书内容提供了这些器件的获得地址。
建议你先买基本套件。随着阅读的深入,你还可以购买扩展套件。不想购买套件吗?别担心。在每章的开头,有一个该章所需的详细器件列表。本书原著的专题网站也提供了一些链接,通过它们可以找到每章所需的器件。
注意 你是否已经从Newark 获得了本书的捆绑套装?如果是,那么你就可以继续了。
你需要什么
除了用来搭建 Arduino 项目的具体器件以外,你的Arduino 探险之旅还需要一些其他工具和材料。最重要的是,你需要一台兼容Arduino 集成开发环境(IDE)的计算机(Mac OS X 10.4 以上版本,Windows XP 以上版本,或者一个Linux发行版)。在必要时我会为这些操作系统中的操作做出说明。
你可能还想要一些额外的工具,用来调试、组装硬件等。它们对完成本书中的项目来说不是必需的,但在你拓展电气工程技能时,这些工具在其他项目中迟早有用。我推荐如下工具。
一把烙铁和一些焊料(完成本书中的项目并不需要焊接,但你可能希望在洞洞板上组装自己的电路,或者你可能想购买需要焊接组装的扩展板。)
一台万用表(在调试过程中有用,但不是必需的。)
一组小型螺丝刀
一支热熔胶枪
源代码和数字化内容
本书的主要专题网站是由本书作者维护的。你可以在这个网站上找到每章的代码并下载(还有视频、链接及其他有用的材料)。Wiley 也维护了一个关于本书数字化内容的仓库。
本书代码可在 网页的"Download Code"标签下下载。
你也可以在网上根据ISBN(本书原著的ISBN 为978-1-118-54936-0)搜索本书原著,从而找到代码。
在每章的开始处,你可以找到本章主要代码的下载地址。在每章中,你还能在代码清单的标题和文本中找到你需要的代码文件的文件名。
在网站上提供的代码是ZIP 压缩包。下载代码之后,使用适当的工具解压缩即可。
注意 由于许多图书的书名大同小异,所以通过ISBN 搜索可能会更方便一些。本书原著的ISBN 是978-1-118-54936-0。
勘误
我们尽力保证文本和代码的正确性。然而人无完人,错误在所难免。如果你在本书中发现了错误,比如拼写错误或者代码错误,我们会感谢你的反馈。通过提交勘误,你可能会消除其他读者几个小时的困惑,与此同时,你可以帮助我们提供更有用的信息。
要查找本书原著的勘误,请访问 并单击"Errata"链接。
补充材料和技术支持
在你的 Arduino 探险之旅当中,不可避免地会遇到问题和麻烦。使用Arduino最大的一个好处就在于可以在网上找到绝佳的技术支持社区。这个极为活跃的Arduino 用户大本营会十分乐意帮助你。下面列出了一些可能会帮到你的资源。
官方 Arduino 参考手册
我的 Arduino 入门教程系列视频
adafruit 公司的Arduino 入门教程系列视频
SparkFun 的电子学入门教程
Arduino 官方论坛
element14 Arduino 社区
如果你用尽了这些资源,却还是无法解决你的问题,则请联系我,我也许能帮上忙。你也可以直接通过我的网站上的联系页面来与我取得联系,但我通常没法保证快速回复。
Arduino 是什么
Arduino 原型平台的最大特点在于你想让它是什么,它就是什么。Arduino可以是一个植物灌溉自动控制系统,也可以是一个Web 服务器,甚至可以是四轴飞行器的自动驾驶仪。
Arduino 是一个微控制器开发平台,它配备了直观的编程语言,你可以使用Arduino 集成开发环境(IDE)来开发它。你可以为Arduino 安装传感器、效应器、灯、扬声器、扩展模块(shield,本书译作"扩展板")及其他集成电路,来将Arduino 变成一个可编程的"大脑",应用于几乎任何控制系统。
本书不可能涵盖 Arduino 能做的所有事情,只要你的想象力是无穷的,可能性就是无穷的。因此,本书的目标是通过实施项目来让你熟悉Arduino 的功能,学习开发自己的项目时所需的技巧。
你会在第 1 章中学到更多关于Arduino 及这块板卡的变体。如果你渴望了解Arduino 的所有内部工作原理,那么你很幸运:它是完全开源的,所有的电路图和文档都可以在Arduino 网站上免费获得。附录提供了一些Arduino 的技术指标。
一个开源平台
如果你是一个开源世界的新人,则你一定会满意的。本书不会详细介绍开源硬件运动,但你应该了解一点这种思想,是它让Arduino 变得如此美妙。如果你想全面了解什么是开源硬件,则请查阅开源硬件协会网站上的定义。
注意 你可以从我的TEDx 演讲中学到所有关于开源运动的知识:
进入该网站即可找到。你也可以在本章开头处的Wiley 网站上找到这个视频。
由于 Arduino 是开源硬件,所以任何人都可以免费获取所有的设计文件、原理图及源代码被。这不仅意味着你可以更方便地改造Arduino,以用于非常特定的功能,还意味着你可以将Arduino 平台整合到你的设计中,制作并销售Arduino的复制品,并在其他项目中使用Arduino 软件库。尽管本书使用的几乎全部是官方Arduino 硬件,但你也可以使用数以百计的Arduino 衍生板卡(它们通常添加了特别的功能)来制作本书中的项目。
Arduino 的开源许可证还允许商业化地重用他人的设计(只要你不在自己的设计上使用Arduino 商标)。所以,如果你在一个令人兴奋的项目原型中使用了Arduino,而你还想将其转化为一个商业产品,那么你是可以这样做的。举例来说,你可能听说过像MakerBot Replicator 3D 打印机这样的产品,它的电子系统是基于Arduino Mega 平台的。(大爆料:我设计了那块主板!)
在使用本书时,请确保遵守了本书中源代码和硬件的许可证。一些许可证要求你在发布基于他人已有的设计时提供原始作者的信息;有的则要求你必须在相同的许可下分享你的改进工作。这样的分享帮助社区成长,所有了不起的在线文档和技术支持也正是源自于此,在你的Arduino 探险之旅中,你一定会经常参考它们。我为本书编写的所有的代码示例(除非特别声明)都是基于GNU 通用公开许可(GPL)的,你可以随心所欲地使用它们。
本书之外
有人可能对我在网上流行的系列视频"Arduino 和电子学入门教程"很熟悉了。本书中我也多次提到它们,你可以通过这些视频更为深入地了解书中所涵盖的技术主题。对电子器件和微控制器利用计算机科学知识,将它们创造性地组合,来创造卓越的作品,如果你对此感到好奇,可以在我的作品集中查看样例项目。同Arduino一样,我的绝大部分作品都通过开源许可发布,允许你针对自己的需求方便地复制它们。
我渴望知道你利用在本书中学到的技巧做了什么,并期待你将这些与我和其他朋友分享。祝你在Arduino 探险之旅中好运!