1.5 Arduino硬件设计平台
电子设计自动化(Electronic Design Automation,EDA)是20世纪90年代初,从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念上发展而来的。EDA设计工具的出现使得电路设计的效率和可操作性都得到了大幅度的提升。本书针对Arduino的学习,主要介绍和使用Fritzing工具,配以详细的示例操作说明。当然,很多软件也支持Arduino的开发,在此不再一一罗列。
Fritzing是一款支持多国语言的电路设计软件,可以同时提供面包板、原理图、PCB图三种视图设计,设计者可以采用任意一种视图进行电路设计,软件都会自动同步生成其他两种视图。此外,Fritzing软件还能用来生成制版厂生产所需用的greber文件、PDF、图片和CAD格式文件,这些都极大地普及和推广了Fritzing的使用。下面将具体对软件的使用说明进行介绍,有关Fritzing的安装和启动请参考相关的书籍或者网络。
1.5.1 Fritzing软件简介
1.主界面
总体来说,Fritzing软件的主界面由两部分构成,如图1-27所示。一部分是图中左边框内项目视图部分,这一部分用于显示设计者开发的电路,包含面包板图、原理图和PCB图三种视图。另一部分是图中右边框内工具栏部分,包含软件的元件库、指示栏、导航栏、撤销历史栏和层次栏等子工具栏,是设计者主要操作和使用的地方。
图1-27 Fritzing主界面
2.项目视图
设计者可以在项目视图中自由选择面包板、原理图或PCB视图进行开发,且设计者可以利用项目视图框中的视图切换器快捷轻松地在这三种视图中进行切换,视图切换器如图1-27项目视图中右边中部框图部分所示。此外,设计者也可以利用工具栏中的导航栏进行快速切换,这将在工具部分进行详细说明。下面分别给出这三种视图的操作界面,按从上到下的顺序依次是面包板视图、原理图视图和PCB视图,分别如图1-28~图1-30所示。
图1-28 Fritzing面包板视图
细心的读者可能会发现,在这三种视图下的项目视图中操作可选项和工具栏中对应的分栏内容都只有细微的变化。而且,由于Fritzing的三个视图是默认同步生成的,在本书中,首先以面包板为模板对软件的共性部分进行介绍,然后再对原理图、PCB图与面包板视图之间的差异部分进行补充。之所以选择面包板视图作为模板,是为了方便Arduino硬件设计者从电路原理图过渡到实际电路,尽量减少可能出现的连线和端口连接错误。
3.工具栏
用户可以根据自己的兴趣爱好选择工具栏显示的各种窗口,左键单击窗口下拉菜单,然后对希望出现在右边工具栏的分栏进行勾选,用户也可以将这些分栏设成单独的浮窗。为了方便初学者迅速掌握Fritzing软件,本书将详细介绍各个工具栏的作用。
图1-29 Fritzing原理图视图
图1-30 Fritzing PCB视图
1)元件库
元件库中包含了许多电子元件,这些电子元件是按容器分类盛放的。Fritzing软件一共包含8个元件库,分别是Fritzing的核心库、设计者自定义的库和其他6个库。这8个库是设计者进行电路设计前所必须掌握的,下面将进行详细的介绍。
(1)MINE:MINE元件库是设计者自定义元件放置的容器。如图1-31所示,设计者可以在这部分添加一些常用元件或软件缺少的元件。具体有关的操作将在后面进行详细说明。
图1-31 MINE元件库
(2)Arduino:Arduino元件库主要放置与Arduino相关的开发板,这也是Arduino设计者需要特别关心的元件库。这个元件库中包含Arduino的9块开发板,分别是Arduino、Arduino UNO R3、Arduino MEGA、Arduino Mini、Arduino NANO、Arduino Pro Mini 3.3V、Arduino Fio、Arduino LilyPad、Arduino Ethernet Shield,如图1-32所示。
图1-32 Arduino元件库
(3)Parallax:Parallax元件库中主要包含Parallax的微控制器Propeller D40和8款Basic Stamp微控制器开发板,如图1-33所示。该系列微控制器是由美国Parallax公司开发的,这些微控制器与其他微控制器的区别主要在于它们在自己的ROM内存中内建了一套小型、特有的BASIC编程语言直译器PBASIC,这为BASIC语言的设计者降低了嵌入式设计的门槛。
(4)Picaxe:Picaxe元件库中主要包括PICAXE系列的低价位单片机、电可擦只读存储器、实时时钟控制器、串行接口、舵机驱动等器件,如图1-34所示。Picaxe系列芯片也是基于BASIC语言,设计者可以迅速掌握。
图1-33 Parallax元件库
图1-34 Picaxe元件库
(5)SparkFun:SparkFun元件库也是Arduino设计者重点关注的元件库,其中包含了许多Arduino的扩展板。此外,这个元件库中还包含了一些传感器和LilyPad系列的相关元件,如图1-35所示。
(6)Snootlab:Snootlab包含了4块开发板,分别是Arduino的LCD扩展板、SD卡扩展板、接线柱扩展板和舵机的扩展驱动板,如图1-36所示。
(7)Contributed Parts:Contributed Parts元件库包含带开关电位表盘、开关、LED、反相施密特触发器和放大器等器件,如图1-37所示。
(8)Core:Core元件库里包含许多平常会用到的基本元件,如LED灯、电阻、电容、电感、晶体管等,还有常见的输入、输出元件、集成电路元件、电源、连接、微控器等元件。此外,Core库中还包含面包板视图、原理图视图和印刷电路板视图的格式以及工具(主要包含笔记和尺子)的选择,如图1-38所示。
图1-35 SparkFun元件库
图1-36 Snootlab元件库
图1-37 Contributed Parts元件库
图1-38 Core元件库
2)指示栏
指示栏会给出元件库或项目视图中鼠标所选定元件的详细信息,包括该元件的名字、标签,以及在三种视图下的形态、类型、属性和连接数等。设计者可以根据这些信息加深对元件的理解,或者检验所选定的元件是否是自己所需要的,甚至能在项目视图中选定相关元件后直接在指示栏中修改元件的某些基本属性,如图1-39所示。
图1-39 指示栏
3)撤销历史栏
撤销历史栏中详细记录了设计者的设计步骤,并将这些步骤按照时间的先后顺序依次进行排列,先显示最近发生的步骤,如图1-40所示。设计者可以利用这些记录步骤回到之前的任一设计状态,这为开发工作带来了极大的便利。
图1-40 撤销历史栏
4)导航栏
导航栏里提供了对面包板视图、原理图视图和PCB视图的预览,设计者可以在导航栏中任意选定三种视图中的某一视图进行查看,如图1-41所示。
图1-41 导航栏
5)层
不同的视图有不同的层结构,详细了解层结构有助于读者进一步理解这三种视图和提升设计者对它们的操作能力。下面将依次给出面包板视图、原理图视图、PCB视图的层结构。
(1)面包板视图的层结构。从图1-42中可以看出,面包板视图一共包含6层,设计者可以通过勾选层结构前边的矩形框在项目视图中显示相应的层。
图1-42 面包板层结构
(2)原理图的层结构。从图1-43中可以看出,原理图一共包含7层,相对面包板而言,原理图多包含了Frame层。
图1-43 原理图层结构
PCB视图是层结构最多的视图。从图1-44中可以看出,PCB视图具有15层结构。由于篇幅有限,本书不再对这些层结构进行一一详解。
图1-44 PCB图层结构
1.5.2 Fritzing使用方法
1.查看元件库已有元件
设计者在查看元件库中的元件时,既可以选择按图标形式查看,也可以选择按列表形式查看,界面分别如图1-45和图1-46所示。
图1-45 元件图标形式
图1-46 元件列表形式
图1-47 查找元件
设计者可以直接在对应的元件库中寻找所需要的元件,但由于Fritzing所带的库和元件数目都相对比较多,所以在有些情况下,设计者可能很难明确确定元件所在的具体位置。这时设计者就可以利用元件库中自带的搜索功能,从库中找出所需要的元件,这个方法能极大地提升设计者的工作效率。在此,举一个简单的例子进行说明,例如,设计者要寻找Arduino UNO,那么,设计者可以在搜索栏输入Arduino UNO,按下Enter键,结果栏就会自动显示相应的搜索结果,如图1-47所示。
2.添加新元件到元件库
1)从头开始添加新元件
设计者可以通过选择“元件”→“新建”命令进入添加新元件的界面,如图1-48所示;也可以通过单击元件库中左侧的New Part选项进入该界面,如图1-49所示。无论采用哪一种方式,最终进入的新元件编辑界面都如图1-50所示。
设计者可在新元件的添加界面填写相关的信息,如新元件的名字、属性、连接等,并导入相应的视图图片。尤其要注意添加连接,然后单击“保存”按钮,便能创建新的元件。但是在开发过程中,建议设计者尽量在已有的库元件基础上进行修改来创建用户需要的新元件,这样可以减少工作量,提高开发效率。
2)从已有元件添加新元件
关于如何基于已有的元件添加新元件,下面举两个简单的例子进行说明。
(1)针对ICs、电阻、引脚等标准元件。例如,现在设计者需要一个2.2kΩ的电阻,可是在Core库中只有220Ω的标准电阻,这时,创建新电阻最简单的方法就是先将Core库中220Ω的通用电阻添加到面包板上,然后选定该电阻,直接在右边的指示栏中将电阻值修改为2.2kΩ,如图1-51所示。
图1-48 添加新元件(方式一)
图1-49 添加新元件(方式二)
除此之外,选定元件后,也可以选择“元件”→“编辑”命令完成元件参数的修改,如图1-52所示。
图1-50 新元件添加界面
图1-51 修改元件属性
然后进入元件编辑界面,如图1-53所示。
将resistance相应的数值改为2200Ω,单击“另存为新元件”按钮,即可成功创建一个电阻值为2200Ω的电阻,如图1-54所示。
此外,在选定元件后,直接按鼠标右键,在弹出的快捷菜单中选择“编辑”命令,也可进入元件编辑界面,如图1-55所示。
图1-52 新元件添加界面
图1-53 元件编辑界面1
其他基于标准元件添加新元件的操作都与此类似,如改变引脚数、修改接口数目等,在此不再赘述。
(2)相对复杂的元件。完成了基本元件的介绍后,下面介绍一个相对复杂的例子。在这个例子中,要添加一个自定义元件——SparkFun T5403气压仪,它的PCB图如图1-56所示。
图1-54 元件编辑界面2
图1-55 新元件添加界面
图1-56 SparkFun T5403的PCB图
在元件库里寻找该元件,在搜索框中输入T5403,如图1-57所示。
图1-57 SparkFun T5403搜寻图
若没有发现该元件,则可以在该元件所在的库中寻找是否有类似的元件(根据名字容易得知,SparkFun T5403是SparkFun系列的元件),如图1-58所示。
图1-58 SparkFun系列元件
若发现还是没有与自定义元件相类似的元件,则可以选择从标准的集成电路ICs开始,选择Core元件库,找到ICs栏,将IC元件添加到面包板中,如图1-59和图1-60所示。
图1-59 Core ICs
选定该IC元件,在指示栏中查看该元件的属性。将元件的名字命名为自定义元件的名字T5403 Barometer Breakout,并将引脚数修改成所需要的数量。在本例中,需要的引脚数为8,如图1-61所示。
图1-60 添加ICs到面包板
图1-61 自定义元件的参数修改
图1-62 T5403 Barometer Breakout
修改之后,面包板上的元件如图1-62所示。
右击面包板视图中的IC元件,在弹出的快捷菜单中选择“编辑”命令,会出现如图1-63所示的编辑窗口。设计者需要根据自定义元件的特性修改图中的6个部分,分别是元件图标、面包板视图、原理图视图、PCB视图、描述和接插件。这部分的修改大都是细节性的问题,在此不再加以赘述,读者可参考下面的链接进行深入学习:https://learn.sparkfun.com/tutorials/make-your-own-fritzing-parts。
图1-63 T5403 Barometer Breakout编辑窗口
3.添加新元件库
设计者不仅可以创建自定义的新元件,也可以根据自己的需求创建自定义的元件库,并对元件库进行管理。在设计电路结构前,可以将所需的电路元件列一张清单,并将所需要的元件都添加到自定义的库中,这可以为后续的电路设计提高效率。添加新元件库时,只需选择图1-46所示的元件栏中的New Bin命令,便会出现如图1-64所示的界面。
如图1-64所示,给这个自定义的元件库取名为Arduino Project,单击OK按钮,新的元件库便成功创建,如图1-65所示。
图1-64 添加新元件库
图1-65 成功创建新元件库
4.添加或删除元件
下面主要介绍如何将元件库中的元件添加到面包板视图中。当需要添加某个元件时,可以先在元件库相应的子库中寻找所需要的元件,然后在目标元件的图标上单击选定元件,拖动至面包板上的目的位置,松开鼠标左键即可将元件插入面包板。需要特别注意的是,在放置元件时,一定要确保元件的引脚已经成功插入面包板。如果插入成功,则元件引脚所在的连线会显示绿色;如果插入不成功,则元件的引脚则会显示红色,如图1-66所示(其中左边表示添加成功,右边则表示添加失败)。
图1-66 引脚状态图
如果在放置元件的过程中操作有误,则直接单击选定目标元件,然后再按Delete键即可将元件从视图上删除。
5.添加元件间连线
添加元件间的连线是用Fritzing绘制电路图必不可少的过程,接下来将对连线的方法给出详细的介绍。连线的时候将想要连接的引脚拖动到要连接的目的引脚后松开即可。这里需要注意的是,只有当连接线段的两端都显示绿色时(图中左边),才代表导线连接成功,若连线的两端显示红色(图中右边),则表示连接出现问题,如图1-67所示。
图1-67 连线状态图
此外,为了使电路更清晰明了,设计者还能根据自己的需求在导线上设置拐点,使导线可以根据设计者的喜好而改变连线角度和方向。具体方法如下:光标处即为拐点处,设计者能自由拖动光标来移动拐点的位置。此外设计者也可以先选定导线,然后将鼠标光标放在想设置的拐点处,右击,在弹出的快捷菜单中选择“添加拐点”命令即可,如图1-68所示。
除此之外,在连线的过程中,设计者还可以更改导线的颜色,不同的颜色将帮助设计者更好地掌握绘制的电路。具体的修改方法为选定要更改颜色的导线,然后右击,选择更改颜色,如图1-69所示。
图1-68 拐点添加图
图1-69 导线颜色修改图
1.5.3 Arduino电路设计
至此,已经完成了对软件主界面和基本功能的详细介绍。接下来,将通过一个具体的例子系统地介绍如何利用Fritzing软件绘制一个完整的Arduino电路图,即用Arduino主板控制LED灯的亮灭。整体效果如图1-70所示。
下面介绍Arduino Blink例程的电路图详细设计步骤。首先打开软件并新建一个项目,具体操作为单击软件的运行图标,在软件的主界面选择“文件”→“新建”选项命令,如图1-71所示。
完成项目新建后,先保存该项目。选择“文件”→“另存为”命令,出现如图1-72所示的界面,在该对话框中输入保存的名字和路径,然后单击“保存”按钮,即可完成对新建项目的保存。
一般来说,在绘制电路前,设计者应该先对开发环境进行设置。这里的开发环境主要指设计者选择使用的面包板型号、类型,以及原理图和PCB视图的各种类型。本教程以面包板视图为重点,所以将编辑视图切换到面包板视图,并在Core元件库中选好开发所用的面包板类型和尺寸。图1-73给出了各种尺寸的面包板图。
图1-70 Arduino Blink示例整体效果图
图1-71 新建项目
图1-72 保存项目
图1-73 面包板类型和尺寸
由于本示例中所需的元件数较少,此处省去建立自定义元件库的步骤,直接先将所有的元件都放置在面包板上,如图1-74所示。在本例中,需要1块Arduino的开发板、1个LED灯和1个220Ω的电阻。
图1-74 元件的放置
然后进行连线,即可得到最终的效果图,如图1-75所示。
在编辑视图中切换到原理图,会看到如图1-76所示的界面。
此时布线还没有完成,开发者可以单击编辑视图下方的自动布线,但要注意自动布线后,检查是否所有的元件都完成了布线。对没有完成的,开发者要进行手动布线,即手动连接端口间的连线。最终可得到如图1-77所示的效果图。
同理,可以在编辑视图中切换到PCB视图,观察PCB视图下的电路。此时也要注意编辑视图窗口下方是否提示布线未完成,如果是,开发者可以单击下面的“自动布线”按钮进行布线处理,也可以自己手动进行布线。这里,将直接给出最终的效果图,如图1-78所示。
完成所有操作后,就可以修改电路中各元件的属性。在本例中不需要修改任何值,在此略过这部分。完成所有步骤后,就能根据需求导出所需要的文档或文件。在本例中,将以导出一个PDF格式的面包板视图为例对该流程进行说明。首先确保将编辑视图切换到面包板视图,然后选择“文件”→“导出”“作为图像”→PDF命令,如图1-79所示。输出的最终PDF格式文档如图1-80所示。
图1-75 元件连线图
图1-76 原理图界面
图1-77 原理图自动布线图
图1-78 PCB视图效果图
图1-79 PDF图的生成步骤
图1-80 面包板的PDF图
1.5.4 Arduino样例与编程
Fritzing软件不但能很好地支持Arduino的电路设计,而且提供了对Arduino样例电路的支持,如图1-81所示。用户可以选择“文件”→“打开例子”命令,然后选择相应的Arduino,如此层层推进,最终选择想打开的样例电路。
图1-81 Fritzing对Arduino样例支持
这里将以Arduino数字化中的交通灯进行举例说明。选择“元件”→“打开例子”→Arduino→Digital→Output→Traffic Light命令,就能在Fritzing软件的编辑视图中得到如图1-82所示的Arduino样例电路。需要注意的是,不管在哪种视图进行操作,打开的样例电路都会将编辑视图切换到面包板视图。如果想要获得相应的原理图视图或PCB视图,则可以在打开的样例电路中从面包板视图中切换到目标视图。
图1-82 Arduino交通灯样例
图1-83 编程界面进入步骤
除了对Arduino样例的支持外,Fritzing还将电路设计和编程脚本放置在了一起。对于每个设计电路,Fritzing都提供了一个编程界面,用户可以在编程界面中编写将要下载到微控制器的脚本。具体操作如图1-83所示,选择“窗口”→“打开编程窗口”命令,即可进入编程界面,如图1-84所示。
从图1-84中可以发现,虽然每个设计电路只有一个编程界面,但设计者可以在一个编程界面创造许多编程窗口来编写不同版本的脚本,从而在其中选择最合适的脚本。单击“新建”按钮即可创建新编程窗口。而且,从编程界面中也可以看出,目前Fritzing主要支持Arduino和PICAXE两种脚本语言,如图1-85所示。设计者在选定脚本的编程语言后,就只能编写该语言的脚本,并将脚本保存成相应类型的后缀格式。同理,选定编程语言后,设计者也只能打开同种类型的脚本。
图1-84 编程界面
选定脚本语言后,设计者还应该选择串行端口。从Fritzing界面可以看出,该软件一共有两个默认端口,分别是COM1和LPT1,如图1-86所示。当设计者将相应的微控制器连接到USB端口时,软件里会增加一个新的设备端口,然后可以根据自己的需求选择相应的端口。
图1-85 编程语言支持
图1-86 支持端口
值得注意的是,虽然Fritzing提供了脚本编写器,但是它并没有内置编译器,所以设计者必须自行安装额外的编程软件将编写的脚本转换成可执行文件。但是,Fritzing提供了和编程软件交互的方法,设计者可以通过单击图1-84所示的“程序”按钮获取相应的可执行文件信息,所有这些内容都将显示在下面的控制端。