第1章 准备创新开发的控制器
本书的控制核心将采用目前比较流行的 Arduino开源硬件。随着开源共享理念的流行,越来越多的技术开发者愿意分享各自的创新作品。共享不仅产生了技术的交流和累积,也使得创新精神得以传承和发展。
1.1 Arduino概述
Arduino是开源硬件电子平台和快速原型设计工具,图1.1为 Arduino典型开发板和开发软件界面。Arduino可以不受过多限制,帮助创新开发者快速呈现作品模型。自2005年 Arduino的第一款 UNO版本问世以来,其凭借价格便宜、开发便捷、方便上手的优势逐渐风靡全球,成为*流行的开源硬件之一。
图1.1 Arduino硬件和 IDE启动界面
Arduino硬件部分可以完成基于 Arduino的电路板设计, Arduino软件平台基于开放源码的 simple I/O 界面,具有使用类似 Java、C 语言的 Processing/Wiring开发环境。图1.2展示了它们的图标。
图1.2 Arduino、Processing和 Wiring的图标
Arduino的编程是通过 Arduino编程语言(基于 Wiring)和 Arduino开发环境(基于 Processing)来实现的。 Arduino编程采用 C/C++语言风格,将一些常用语句组合函数化,即使没有电子和编程背景的学生也可以快速入门学习使用,对初学者友好且更为人性化。
Arduino快速而简单的开发方式使得开发者更关注创意本身,能帮助他们更快完成自己的作品设计,包括简单的8位控制器、物联网应用、可穿戴、3D打印和嵌入式产品等。越来越多的专业硬件开发者着手使用 Arduino来开发他们的项目、产品;越来越多的软件开发者使用 Arduino进入智能硬件、物联网等热门领域。 Arduino的主要优势体现在:
(1)便宜而小巧。 Arduino开发板价格不高,且更加小巧便携。
(2)跨平台性。
Arduino IDE可以在 Windows、Macintosh OS X(简称 Mac OS X)、Linux三大主流操作系统上运行。
(3)开发环境简单清晰。 Arduino IDE基于 Wiring开发,通过二次封装,使得开发环境对于初学者更为友好易用,且具有足够的灵活性,即使没有丰富的软硬件编程基础,也可以快速开发。
(4)软件开源和可扩展性。 Arduino软件作为开源工具发布,可供经验丰富的程序员通过 C++库进行扩展。 Arduino编程基于 AVR-C语言,技术细节可以从底层库进行了解。同样,可以直接将 AVR-C 代码添加到 Arduino程序中进行开发。
(5)硬件开源和可扩展性。 Arduino开发板的设计基于创意共享许可证(Creative Common License)发布,因此经验丰富的电子设计师可以基于 Arduino发布的版本设计改进的扩展模块。一般用户也可以构建面包板版本,了解硬件工作原理,当然还能省钱。
1.2 Arduino来历
Arduino于2005年诞生于意大利伊夫雷亚交互设计院,其目的是为搭建互动系统的学生提供低成本、简单易用的开发平台。开源软件 Wiring也是该设计学院的学生开发的,成为 Arduino成功推广的因素之一。
Arduino核心库是基于 Wiring的。Wiring允许在多种微控制器板上编写跨平台软件来控制与此相连接的各种设备,以创建各种创意编程、交互作品,获得空间或物理的体验。 Wiring框架融合设计师和艺术家的思想,鼓励社区学习,从初学者到世界各地的专家都可以通过社区进行思想、知识和集体经验的分享。
Arduino的开发环境基于 Processing。Processing在2001年诞生于麻省理工学院( MIT)的媒体实验室,项目发起的初衷,本是为了满足自身的教学和学习需要。后来在伊夫雷亚交互设计院衍生出了 Wiring和 Arduino项目。 Processing项目是由 Java开发的,所以 Processing天生就具有跨平台的特点,支持 Linux、Windows以及 Mac OS X三大平台,并且支持将图像导出成各种格式。
Arduino的核心开发团队成员包括马西莫 班兹(Massimo Banzi)、大卫 奎提耶斯(David Cuartielles)、汤姆 伊果( Tom Igor)、赞布罗塔 马提诺(Gianluca Martino)、大卫 梅利斯(David Mellis)和尼可拉斯 兰比提( Nicholas Zambetti)。可贵的是, Arduino团队把 Arduino的设计图放到了网上,保持了设计的开放源码理念,如图1.3所示为一款 Arduino设计图。
图1.3一款 Arduino控制板设计图
1.3硬件开源许可
开源即开放软件源码或开放硬件设计等知识共享的方式,本质上是一种创客的共享精神,通过知识共享不断汇聚爱好者及专业开发者在特定项目上的贡献,达到知识和技术不断积累和更新的目的,让开源项目保持旺盛的生命活力。
Arduino设计遵循 CC(Creative Commons)知识共享许可(图1.4)。CC也称共享创意许可,同时是知识共享组织(非营利性)的名称缩写。
图1.4 CC图标
知识共享是为保护开放版权行为而出现的一种类似于通用公共协议( General Public License,GPL)的许可(License)。在知识共享许可下,任何人都被允许生产该项目的印刷电路板的复制品,还能重新设计,甚至不用取得 Arduino团队的许可,销售原设计的复制品,且不需要付版税。然而,如果需要重新发布引用设计,则必须说明原始 Arduino团队的贡献。如果调整或改动了电路板则*新设计必须使用相同或类似的共享创意许可,以保证新版本的 Arduino电路板也会一样自由和开放。需要注意的是, Arduino这个名字被保留注册为商标,使用 Arduino名字作为商品时需要付费。
1.4 Arduino开发板
选择一款合适的 Arduino产品是学习 Arduino的必备条件, Arduino入门级产品和模块是开始学习 Arduino的*佳选择。 Arduino UNO和 Nano是 Arduino开发的经典版本,特别适合初学者,本书的案例将主要以 UNO版本进行介绍。
Arduino入门级产品如图1.5所示。入门级产品除了 UNO和 Nano,还有 Micro等版本,配合丰富的 Arduino模块可以很快实现 Arduino的创意。显然,Nano和 Micro的尺寸更加小巧。
图1.5 Arduino 入门级产品图
除了入门级产品,针对不同的领域需求, Arduino还分为增强型(Enhanced)、物联网(IoT)型和教育( Education)型等产品,它们均提供 Arduino开发板、 Arduino模组(经典小尺寸开发板)、功能扩展板( Shields)和 Arduino开发套件( Kits)等多种形式。
Arduino增强型版本(图1.6)有比入门级开发版更丰富的软硬件资源和功能,能够帮助开发者获得更好的创意体验。
图1.6 Arduino 增强型版本
Arduino物联网( IoT)产品如图1.7所示,将搭载 Wi-Fi、蓝牙等无线模块,帮助开发者轻松实现设备的无线连接和互联网远程操控开发,典型应用如接入 Arduino云、Blynk物联网平台、IFTTT智能插头、Amazon Web Services等案例。
图1.7 Arduino物联网版本
Arduino具有多种教育套装(图1.8),为创客教育提供了必要的软硬件工具包,通过软硬件一体化的开发,提高综合实践和工程应用能力。
图1.8 Arduino教育套装
Arduino同时提供各种扩展功能板,称为 Shield(图1.9)。Shield扩展板对 Arduino主板进行功能扩展,因而不同的主板需使用对应的扩展板。 Shield扩展板进一步提供了 Arduino开发板与外部资源的连接,更灵活地实现所需要的不同硬件功能,大大增强了 Arduino的性能。
图1.9 Arduino Shield扩展板
扩展板所设计的引脚与相应型号的 Arduino主板匹配,可以直接叠加安插在 Arduino主板之上(有时可能是多层堆叠),如图1.10所示,构成功能拓展的 Arduino硬件系统。开发者可以自己定制 Shield扩展板,形成个性功能,这也是开发者后期创新设计与制作的重要环节。
图1.10 Arduino Shield扩展板的叠加应用
将 Arduino控制器相连接的各类部件制作成模组的形式与 Arduino开发板配套使用。如图1.11所示,这些模组将不同的传感器、执行器、显示部件等制作成规范的易于连接的独立模块,每个模块至少包含电源、地、信号端三个引脚,通过连接线可以方便地接入 Arduino开发板或者扩展板。
图1.11 Arduino各种接口模组
推荐初学者使用 Sensor Shield扩展板。如图1.12所示,该扩展板引出了 Arduino Uno的全部引脚,每个引脚所在列的排针专门配备了电源和地,可以通过排线方便地与 Arduino标准模组连接。该扩展板的详细信息可参见附录 A。
展开