Arduino 教会老程序员新技巧
我从偶尔的媒体报道和 2009 年亚特兰大 LinuxFest 的一次演讲中了解到 Arduino 项目。我对 Arduino 社区正在做的事情印象深刻,但在当时,我没有看到它的个人用途。是我的孙子改变了我的看法,他深深地参与了一个高中生机器人竞赛项目。在 2011 年感恩节家庭聚会期间,他问了我一些关于机器人相关电子设备的问题,我告诉他用谷歌搜索 Arduino。他照做了。Arduino 最终出现在他的圣诞愿望清单上,圣诞老人送来了礼物。
如果我对自己有更多了解,我将更能帮助孙子进行 Arduino 方面的努力,所以我订购了几个 Arduino Nano 和一些外围设备,例如转子、伺服器、超声波传感器和 LCD 显示器,并开始深入研究。我现在有了一个使用 Arduino 的目的,以及一个重新拿起焊笔的理由。我使用面包板进行测试,如图 1 所示。

图 1. 面包板测试中的 Arduino Pro Mini
没过多久,我就清除了脑海中的蜘蛛网,并融入了 Arduino 项目的优雅简洁性。多年前,当我构建微处理器项目时,底层系统代码始终是问题所在。在实际编写应用程序之前,我必须开发或调整系统级代码,以将应用程序级代码与底层硬件连接起来。这始终是一个主要的痛苦,坦率地说,是苦差事。Arduino 项目消除了对大多数底层系统代码的担忧,让您现在可以更轻松地创建应用程序。使用 Arduino IDE 和包含或贡献的库,您可以轻松地连接到大量硬件。任何使用 C 和 C++ 语言开发过程序的人都会发现 Arduino 平台很容易快速掌握。尽管 Arduino 实际上是基于 Wiring 项目,但与 C、C++ 和 Linux 的兼容性非常高。
在实施和测试了我积累的各种外围设备的代码,并大致掌握了 Arduino 平台之后,我对自己说:“现在怎么办?” 因此,我放弃了友好的 Arduino IDE,转而使用 Linux 工具(如 Make)开发代码。我还想更接近硬件,所以我放弃了 Arduino 板,并在所有 Arduino 板使用的底层 IC(Atmel 8 位微控制器系列)上进行了实施。将 Arduino 库与 Atmel 微控制器结合使用是一种乐趣。我非常激动,系统代码的苦差事可以基本忽略,因为它主要由 Arduino 内置库的硬件抽象功能处理。重要的是要注意,Atmel IC 是微控制器,而不是微处理器。换句话说,它们几乎是完整的计算机,配备了 RAM、EPROM 和 FLASH 内存、多向 I/O、串行端口(在某些情况下)和接口电路(例如上拉电阻等)。只需添加电源即可产生芯片中的计算机。
Atmel 微控制器的硬件接口由 Arduino 以统一的方式抽象化——至少对于 Arduino 组实施的那些 Atmel 微控制器而言是统一的。Arduino 库使用内部代码,通常称为“核心”,来定义给定 Atmel 微控制器上的可用 I/O 引脚,并按引脚编号分配。例如,Atmel ATMega168 物理引脚 4 定义为 Arduino I/O 引脚 2,但对于 Atmal ATMega32u4 微控制器,相同的 Arduino 引脚 2 与物理引脚 19 匹配。因此,“pinMode(2, OUTPUT)”的 Arduino 语法在软件中定义了一个抽象的硬件引脚作为数字输出。由于 Arduino 模块引脚标有 Arduino 引脚编号,因此抽象变得物理化,至少在模块级别是这样。尽管如此,正是这种抽象以及强大的库使 Arduino 如此易于使用。上面提到的一点需要注意的是,Arduino 模块中未实施的 Atmel 微控制器没有统一的核心定义——例如,Atmel Attiny 系列。您仍然可以使用 Arduino 库和工具,但必须从其他地方获取核心。对于 Atmel ATtiny85 和 Attiny 84 微控制器,我使用来自名为 arduino-tiny 的 code.google 项目的核心。但是,对于这些芯片,还有其他竞争的核心,并且它们不一定兼容。
将您的程序烧录到 Arduino 模块中非常容易实现。USB 连接不仅可以为模块供电,还可以用作串行通信接口,而且 Arduino IDE 还使用它将您的程序安装到 Flash 内存中。对于 Atmel ATtiny 系列来说,这更加复杂,因为它们没有 USB 端口,甚至没有硬件串行端口。对于 ATtiny 系列,您必须使用外部编程器。许多人在加载 ArduinoISP 软件或草图(程序在 Arduino 世界中的名称)后,使用 Arduino 板作为编程器。就我而言,我选择使用一个名为 USBasp 的专用编程器。它在 eBay 上很容易买到,或者您甚至可以使用其创建者 Thomas Fischl 的计划自己制作。我在 eBay 上购买了我的,因为它比自己制作的零件成本更便宜。USBasp 使用开源 AVRdude 软件。
项目既然我已经投入了大量时间来学习 Arduino 系统和 Atmel 微控制器,我想采取下一个合乎逻辑的步骤:将设计从面包板转移到印刷电路板。该领域存在一些有趣的项目,例如 Fritzing,它旨在促进完全做到这一点。这是一个聪明的项目,您应该查看一下,但我采取了不同的路径——使用 gEDA 开源 Linux 软件套件进行印刷电路开发。
我查看了我的零件库存,并开始思考我可以创建什么尚未现成可用的东西。我决定选择 LCD 显示器。Arduino 项目中使用的显示器与大量的 I/O 引脚和代码空间连接,这两者在 Atmel 芯片上都不太充足。我认为,如果我可以创建一个相同尺寸的子板,将其连接到显示器的背面,并将智能功能放入该板中,该板将通过 ASCII 串行接口与 LCD 显示器通信,那么我将拥有一些有用的东西,这些东西在市场上以经济实惠的形式不存在。这通常称为串行 LCD。
作为有点老派的人,我花了很多时间使用和编码 DEC VT100 显示终端,ECMA-48/ANSI X3.64 标准就是基于这些终端的。我认为,如果我编码子板将 LCD 显示器变成一个微型、经济实惠的 DEC-VT100,我将拥有一些相当独特和有用的东西。串行驱动的 LCD 显示器确实存在,但它们通常具有专有协议,而且有些相当昂贵。据我所知,目前还没有开源(软件和硬件)带有 VT100 协议的串行 LCD 显示器。我找到了我的项目!
收集零件我为 VT100-LCD 项目选择了零件,以便零件尽可能经济实惠。事实上,我从两个来源(eBay 和 Digi-Key)购买了所有零件,基于成本考虑。表 1 显示了构建一个 vt100lcd 所需的材料。成本按单件显示;但是,我购买的大多数商品都是五件或更多件。
表 1. vt100lcd 零件清单零件 | 数量 | 来源 | 成本 |
---|---|---|---|
1602 HD44780 LCD | 1 | eBay 卖家(中国) | $2.95 |
Atmel ATtiny84 | 1 | Digi-Key ATTINY84-20PU-ND | $3.01 |
开关,轻触 FSM4JH | 1 | Digi-Key 450-1650-ND | $0.80 |
插座,IC,14 针 | 1 | eBay 卖家(美国) | $0.15 |
排针,1X20,母头,2.54mm | 1 | eBay 卖家(中国) | $0.39 |
排针,1X40,公头,2.54mm | 1 | eBay 卖家(中国) | $0.20 |
电阻,330 欧姆,1/4W | 1 | eBay 卖家(泰国) | $0.02 |
电阻,10k 欧姆,1/4W | 1 | eBay 卖家(香港) | $0.02 |
电位器,微调,5k,RM-065 | 1 | eBay 卖家(美国) | $0.30 |
电容器,.1uf,陶瓷圆片,50V | 1 | eBay 卖家(香港) | $0.05 |
晶体管,2N3906 | 1 | eBay 卖家(泰国) | $.01 |
二极管,1N4148 | 1 | eBay 卖家(泰国) | $.01 |
总计 | $7.91 | ||
可选零件 | |||
商业 PCB | 1 | 面板聚合器 | $7.43 |
电容器,22pf,陶瓷圆片,50V | 2 | eBay 卖家(美国) | $0.40 |
晶振,20MHz,ATS200-E | 1 | Digi-Key CTX1105-ND | $0.64 |
为了设计 VT100-LCD 的电路,我选择了 gEDA 项目的 gschem,网址为 http://geda-project.org。该套件不仅包括原理图设计程序,还包括 PCB 布局程序以及各种辅助程序。存在许多原理图/PCB 设计软件程序,但我在这里重点介绍 geda-project.org 的 gEDA 项目的开源软件。其他在 Linux 上运行的开源项目包括 KiCad,以及一些商业产品,其中最受欢迎的是 CadSoft 的 Eagle PCB,它在 WINE 下运行良好。
gschem 相当简单明了,许多功能都很直观,但一些有用的但神秘的命令需要打印出备忘单(嘿,我年纪大了,记不住所有这些按键了)。是的,尽管 gschem 是一个 GUI 程序,但有用的键盘快捷键在 GUI 的菜单中都找不到。对于我稍后讨论的 PCB 布局程序尤其如此。
该过程包括从内置库或您的私有库中将电子元件符号插入到原理图绘图中,然后通过绘制走线连接引脚。我强烈建议在开始您自己的原理图之前,查看 gEDA 项目的在线文档。网上有一些关于使用 gEDA 套件的教程,Stuart Brorson 在 2005 年 11 月的Linux Journal杂志上撰写了一篇教程文章(参见资源)。
我创建了两个版本的 VT100-LCD 项目:一个使用八针 ATtiny85 微控制器,另一个使用 14 针 ATtiny84 微控制器。ATtiny84 微控制器版本的原理图如图 2 所示。

图 2. 带 ATtiny84 的 VT100LCD 原理图
由于我使用的一些组件在内置库中不存在,因此我在互联网上搜索了贡献的符号,在少数情况下,我不得不设计自己的符号。一个好的贡献符号和封装来源是 http://gedasymbols.org。有关创建自己的符号,请参阅 David Weber 的在线符号创建工具,网址为 http://EmbeddedToolBox.com。符号实际上是文本文件。图 3 说明了一个符号以及用于绘制它的文本文件的一部分。符号文件不仅仅是图像。它们还保存重要的引脚定义和封装文件名,gEDA PCB 程序最终将使用该文件来表示电路板上的组件。

图 3. 符号示例 1
gEDA 原理图是一个文本文件,由 gschem 解释用于 GUI 表示,但它也用作 gEDA 的 PCB 程序的源。一个名为 gsch2pcb 的中间辅助程序用于准备原理图文件,以用作 PCB 程序的输入。虽然 xgsch2pcb 是 gsch2pcb 的 GUI 版本,但我使用 gsch2pcb 命令行版本。例如,给定原理图文件 vt100lcd84.sch 作为输入,gsch2pcb 创建 vt100lcd84.pcb、vt100lcd84.net 和 vt100lcd84.cmd,所有这些文件都是 PCB 创建所必需的。gsch2pcb 还显示重要的说明,作为其命令行文本输出的一部分。为了使过程更容易一些,我在当前设计项目的文件夹中使用一个名为“project”的文件。图 4 显示了 vt100lcd84 项目的项目文件夹、“project”文件以及执行前带有 gsch2pcb 命令的命令行。

图 4. gsch2pcb 项目文件示例
值得注意的是,gEDA 套件包括电路仿真功能 (SPICE),从而实现虚拟设计测试。我在 VT100-LCD 项目中没有使用 SPICE,但如果您有兴趣,请参阅本文的资源。
软件设计既然我已经为该项目设计了电路,现在是软件的时候了。我将软件编写为一个简单的状态机,它逐字符解析接收到的每个字符,这意味着没有缓冲区。字符的处理方式根据机器的当前状态而有所不同。如果状态为 NOTSPECIAL,则字符只是传递到 LCD 屏幕进行显示。但是,如果状态为 GOTESCAPE、GOTBRACKET 或 INNUM,则会对字符进行进一步处理。例如,如果状态为 GOTBRACKET,则之前已接收到转义符和左括号字符,并且必须在该上下文中解析当前字符。例如,用于屏幕清除的 VT100 序列是 \033[2J,如果当前正在解析的字符是 2,则状态将为 GOTBRACKET,下一个状态将为 INNUM(数字收集)。
这种解析方法的优点是简单,适用于容量有限的微控制器,但缺点是由于没有缓冲区保存屏幕上的内容副本,因此无法滚动屏幕。有关软件源代码的副本,请参见资源。我使用 Arduino 库来构建代码。虽然可以使用 Arduino IDE 编译源代码,但我使用了 Linux make。使用 Arduino 库使项目非常容易构建。大多数底层代码和引导加载程序的苦差事都隐藏在 Arduino 库中,这使我可以专注于我的项目。即使 main() 也被隐藏起来,因此 Arduino 代码包含两个必需的例程:setup() 和 loop()。Main 实际上存在于 Arduino 目录结构深处,位于 ~/arduino/arduino-1.0/hardware/arduino/cores/arduino/main.cpp 中,并在编译时自动链接进来。
支持的 VT100 命令回车 | 光标移至当前行最左侧 |
换行 | 光标向下 |
Esc c | 重置 LCD |
Esc D | 光标向下 |
Esc M | 光标向上 |
Esc E | 将光标移动到下一行开头 |
Esc [ A | 光标向上移动一行(箭头键) |
Esc [ B | 光标向下移动一行(箭头键) |
Esc [ C | 光标向右移动一列(箭头键) |
Esc [ D | 光标向左移动一列(箭头键) |
Esc [ H | 光标移至 HOME 1;1 |
Esc [ s | 保存光标位置 |
Esc [ u | 恢复到保存的光标位置 |
Esc [ m | 所有属性关闭 |
Esc [ Pn A | 光标向上移动 Pn 行 |
Esc [ Pn F | 光标向上移动到 Pn 行的第 1 列 |
Esc [ Pn B | 光标向下移动 Pn 行 |
Esc [ Pn E | 光标向下移动到 Pn 行的第 1 列 |
Esc [ Pn C | 光标向右移动 Pn 个字符 |
Esc [ Pn D | 光标向左移动 Pn 个字符 |
Esc [ Pn G | 光标移动到当前行的第 Pn 列 |
Esc [ 2 J | 擦除屏幕并将光标移至原位 |
Esc [ P1;PcH | 直接光标寻址,其中 P1 是行号 |
Esc [ P1;Pcf | 与上述相同 |
Esc [ = Pn h | 设置(LCD 行)- Pn 2 = 16X2 - 4 = 16X4 |
Esc [ 0 m | 所有属性关闭(下划线光标关闭) |
Esc [ 4 m | 下划线开启 |
Esc [ 0 c | 报告终端类型 |
Esc [ 5 n | 报告最大 LCD 行数(从 1 开始) |
Esc [ 6 n | 报告光标位置(从 1 开始) |
Esc [ 0 q | 关闭 LCD 的 LED 1 |
Esc [ 1 q | 打开 LCD 的 LED 1 |
当使用 gEDA 的 PCB 程序打开 .pcb 文件并调用 gsch2pcb 命令行文本输出中列出的命令时,您将看到一堆组件。我首先手动分散组件并进行大致放置,然后激活“鼠线”显示。“鼠线”是将连接转换为铜走线。在移动组件以目视方式将“鼠线”连接缩短到最短路径后,我得到了您在图 5 中看到的内容。

图 5. 带有相关鼠线的组件
PCB 具有自动布线走线的能力,即,将“鼠线”转换为铜走线表示。这往往会做一些奇怪的事情,但一旦完成清理,就会产生可用的 PCB 设计。我选择了半手动布局,以便我可以控制放置和外观。基本上,我对电源走线使用了自动布线,进行了一些手动清理,然后对信号走线使用了自动布线,然后进行了更多清理。结果类似于图 6,这是我的 VT100LCD 项目 ATtiny84 版本的第二个也是最终版本布局。PCB 制造印刷电路板布局包括在覆铜板上应用耐酸图案,该图案表示在酸溶液(蚀刻剂)中蚀刻后要保留铜的区域。暴露于蚀刻剂的覆铜板区域将被溶解掉,留下耐酸图案下的区域完好无损。

图 6. vt1001cd84 项目的最终布局
多年前,我偶尔使用一种照相方法制作印刷电路板,这种方法在今天的 DIY 社区中不太常见。耐酸图案是手工绘制在半透明或透明的绘图纸上,使用细黑色胶带作为电路路径,并使用干转印图案作为组件。此图案通常是正片,类似于图 7,因此必须以照相方式制作负片才能使该过程有效。最终结果是负片的醋酸纤维片在蚀刻后应保留铜的位置是透明的。这种照相工作以前是在暗室中完成的,但今天,可以使用计算机打印到透明胶片上来创建负片。我在这里不讨论该过程,但图 8 中显示了一个示例。

图 7. 布局正片

图 8. 布局负片
接下来,将准备好的负片图案贴在覆铜板上,该覆铜板具有光敏重氮型乳液作为顶层。将准备好的 PCB 暴露在紫外线下会改变接收到紫外线的暴露(透明)区域的属性。在化学显影剂中清洗暴露的板会溶解乳液的暴露部分,留下在准备好的负片上的图案黑色部分下的乳液完好无损。许多商业系统仍然对这种工艺进行现代化的改进,一些认真的 DIY 爱好者也是如此。
值得庆幸的是,对于中等密度布局,休闲 DIY 社区采用了一种新的、更简单的 PCB 布局方法。高密度布局仍应使用照相工艺。新的 DIY PCB 布局工艺通常称为碳粉转印法,因为涉及激光打印机。值得庆幸的是,旧的粘贴胶带和干转印组件图案已成为过去。DIY 社区现在可以使用计算机软件,该软件以软件设计的原理图为输入,并生成代表性的 PCB 布局(图 7 由此类软件生成)。
正如我之前提到的,存在许多 PCB 设计软件程序,但我在这里重点介绍 geda-project.org 的 gEDA 项目的开源 PCB 程序。图 9 显示了一个正在进行的 gEDA PCB 布局示例,其最终输出是类似于图 7 的正片。

图 9. 正在进行的 gEDA PCB 布局
图 7 的正片需要反向打印到一种纸张上,当加热时,这种纸张很容易释放碳粉。激光打印机碳粉是一种精细研磨的聚合物塑料,通过热量熔合到纸张上。“碳粉方法”的诀窍是在重新加热后使碳粉从纸张转移到覆铜板。这里的关键在于您使用的纸张类型。
存在几种用于“碳粉方法”的纸张解决方案,有些比其他更好。无论使用哪种类型的纸张,该过程都是将反向图像正片激光打印件放置,使碳粉接触清洁的覆铜板的金属表面,然后施加热量和压力以使碳粉从纸张上松开,使其转移并粘附到覆铜板上。大多数 DIY 爱好者使用普通的熨斗作为热源,尽管专为身份证设计的覆膜机已成功用于我稍后将讨论的一种商业产品。
最便宜和最简单的方法是简单地使用普通复印纸。一旦在压力下加热,碳粉最终会粘附在纸张和覆铜板上。然后将纸张/覆铜板浸泡在水中,并用手指擦掉吸水的纸张。这种方法会在碳粉表面留下大量纸张残留物,这对于稍后解释的原因是不希望的。
各种 DIY 爱好者使用许多其他类型的纸张。最流行的方法之一是使用高质量的杂志页,该杂志页具有光滑、有光泽的外观。光泽是由白色粘土(高岭土)涂层引起的。由于高岭土填充了纸张的许多孔隙,因此碳粉与纸张的结合不太牢固。其次,高岭土溶于水,因此比普通纸更容易释放碳粉。这种方法优于使用普通纸,但它仍然在碳粉表面留下太多纸张残留物。
另一种流行的方法是打印到相纸的光面或标签的背衬纸上。这种方法优于普通纸或高质量杂志纸,因为碳粉表面没有纸张残留物。但是,这种方法的一个重大问题实际上是如何使碳粉均匀地粘附在纸张上。通常,PCB 走线会在纸张通过打印机时简单地从光滑的表面上脱落。显然,激光打印机和光面纸类型之间存在很多差异。我不喜欢变异性;我喜欢可靠的重复性。
这使我想到我使用的纸张和方法,该方法具有可靠、可预测的结果。这种纸张俗称糊精涂层纸。一些 DIY 爱好者实际上通过制作糊精并用其涂覆纸张来自己制作。糊精只是煮熟的玉米淀粉,这个过程很容易,但有点费力且耗时。此外,获得均匀的涂层是一个挑战。如果您有兴趣,网上有很多关于该主题的文章和视频——只需谷歌搜索“制作糊精纸”。但是,我认为购买商业糊精纸是值得的。我首选的产品由 PulsarProFX (http://www.pcbfx.com) 制造。该公司主要销售一个名为 Fab-In-A-Box 的套件,但整个套件并不是真正必要的。相反,购买转印纸的补充包装。还要购买绿色碳粉箔。Digi-Key 出售两者的补充套件。Pulsar 确实大力推广使用覆膜机,但警告说其覆膜机的温度不足以熔化 Brother 激光打印机中使用的碳粉。我的打印机是 Brother HL-2140,所以我只是使用熨斗。这里要提醒一句:使用正品 Brother 碳粉。售后市场碳粉盒可能含有定影油,这会阻止碳粉粘附到铜上。在几个失败的板子之后,我发现问题出在我新的 Rosewill 品牌碳粉盒上。当我放入正品 Brother 墨盒时,我的板子再次成功了。
您需要绿色碳粉箔,因为粘附在覆铜板上的碳粉是多孔的,即使您用肉眼看不到它,也有足够的孔隙让蚀刻剂穿透碳粉走线并去除您不希望去除的金属。绿色碳粉箔熨烫到覆铜板上的碳粉上,在碳粉走线的顶部形成光滑、不透水的表面,从而获得卓越的板蚀刻效果。现在,还记得我说过,由于纸张残留物嵌入碳粉表面,因此上述转印方法存在缺陷吗?这是因为纸张残留物阻止了绿色碳粉箔与碳粉形成良好的粘合。
我如何制作自己的单面 PCB?这很简单
-
将 PCB 图案的反向图像正片打印到 Pulsar 糊精转印纸的光面一侧。
-
将转印纸的碳粉面朝向已用钢丝绒清洁过的覆铜板。
-
在转印纸上方放置一张普通纸,以帮助防止滑动。
-
用普通的熨斗设置为最高的“棉”设置,施加几磅的压力,持续两分钟。
-
将熨烫在一起的纸张/覆铜板浸入水中。几分钟后,纸张可能会漂浮起来。如果它没有漂浮起来,请将其提起。
-
干燥板,并将碳粉面朝上,将绿色碳粉箔的暗面靠在碳粉上,并在其上方放置另一张普通纸。
-
使用相同的熨斗设置为稍凉(“羊毛”),熨烫一分钟,施加几磅的压力。
-
剥下绿色碳粉箔。
-
如下所述蚀刻板。
我只制作单面电路板。如果您想制作双面电路板,请观看视频 http://youtu.be/XX7IekbCNIY。这位 DIY 爱好者使用 HP 的光面宣传册纸,似乎获得了非常好的效果。
蚀刻 PCB在阅读了网上关于 DIY PCB 蚀刻的大量资料后,当需要时,我决定用两种不同的方法蚀刻单面电路板:第一种是醋和盐法,第二种是海绵和氯化铁法。一些 DIY 爱好者正在使用盐酸,但我还没有尝试过。
醋和盐法有效,但速度很慢。蚀刻我的小板花了两个小时。我使用的配方是等量的醋和过氧化氢,以及几汤匙食盐。不断添加盐,直到“嘶嘶声”自行持续为止。液体开始时是透明的,然后变成迷人的蓝色(图 10)。

图 10. 醋和盐蚀刻剂
海绵和氯化铁法效果非常好,在几分钟内蚀刻了相同的板。过去,我使用氯化铁通过将板放入氯化铁浴中来蚀刻板。即使进行搅拌,蚀刻板也可能需要十分钟左右。海绵和氯化铁法通过用浸泡在氯化铁中的海绵连续擦拭表面来加速蚀刻。擦拭去除不断积累的氧化层,使氯化铁能够到达原始金属,从而加速蚀刻。您只需要几汤匙蚀刻剂,而不是一桶蚀刻剂,这将使一瓶氯化铁使用很长时间。该技术很简单。戴上塑料手套,将几汤匙氯化铁倒入一个小容器中,将一小块软海绵浸泡在氯化铁中,然后连续轻轻地将饱和的海绵擦拭在 PCB 上。在几分钟内,板子就会完成,几乎没有脏乱,几乎没有氯化铁需要处理。
我的最终产品(经过三个版本),该项目的单面 ATtiny84 版本,如图 11 所示。鉴于该板是单面的,因此需要九个跳线,这些跳线是您可以在板的组件侧看到的导线。

图 11. 最终蚀刻的 ATtiny 84 板
商业制造的 PCB除了制作自己的 PCB 之外,我还让面板聚合器制作了商业板。面板聚合器是一项服务,它聚合来自多个来源的板,填满具有成本效益尺寸的印刷电路板面板,然后分解完成的面板以进行交付。一些这样的公司支持业余爱好者社区。
图 12 显示了我的 Attiny85 设计安装到 16x2 LCD 上。
图 13 显示了我的 Attiny84 设计安装到 16x4 LCD 上。

图 12. 商业制造的 ATtiny85 板

图 13. 商业制造的 ATtiny84 板
资源vt100lcd 的源代码和硬件文件(感兴趣的读者可以下载文件并创建自己的微型终端):http://code.google.com
Arduino 项目:http://arduino.cc
Wiring 项目:http://wiring.org.co
code.google arduino-tiny 项目:http://code.google.com/p/arduino-tiny
Thomas Fischl 的 USBasp 网站:http://www.fischl.de/usbasp
Avrdude 设备编程软件:http://www.nongnu.org/avrdude
Fritzing 项目:http://fritzing.org
gEDA PCB 开发项目:http://www.geda-project.org
符号创建:http://embeddedtoolbox.com/mksym
Stefan Salewski 的封装创建:http://www.ssalewski.de/SFG.html.en
"在你的 Linux 机器上使用 gEDA 进行电路设计",作者 Stuart Brorson,Linux Journal,2005 年 11 月: https://linuxjournal.cn/article/8438
使用 gEDA,作者 Iznogood: http://www.linuxfocus.org/English/December2004/article355.shtml
PCB 入门指南: http://www.delorie.com/pcb/docs/gs/gs.html
gsch2pcb 教程: http://geda.seul.org/wiki/geda:gsch2pcb_tutorial
gschem → gsch2pcb → PCB: http://tinyurl.com/gsched2pcb
使用 gEDA 和 SPICE 进行电路仿真—HOWTO,作者 Stuart Brorson: http://www.brorson.com/gEDA/SPICE/intro.html