###第11章 认识Arduino系列
在本章,我们将:
- 学习如何在面包板上做自己的Arduino电路;
- 研究各种Arduino兼容板的特性和优点;
- 学习开源硬件。
我们要把整个Arduino分解成若干个元件,然后在面包板上搭出自己的Arduino电路来。自己搭电路可以省钱,在作品和原型都在不断变化时特别有用。我们还会学习一些新的元件和电路知识。然后研究如何能不借助额外的硬件把程序上传到自己做的Arduino上去。最后,我们要尝试Arduino Uno以外的常见的版本,找出它们的不同。
11.1 作品37:在面包板上做自己的Arduino
随着作品和实验在复杂度和数量上逐渐加大,为每个任务购买Arduino板的成本很容易会失去控制,特别是当你希望同时做不止一个作品的时候。因此,如果在面包板上搭一个Arduino电路,然后再扩展来搭出整个电路,以这样的方式把Arduino板组合进整个电路,会更便宜也更方便。在面包板上把基本的Arduino电路搭出来所需的元件成本应该低于10美元,而且如果没有损坏,这些元件通常还可以再用于其他作品。如果作品需要大量外部电路,自己做会更容易,这样可以省下大量在Arduino板和面包板之间来来回回的导线。
11.1.1 元件
要做一个最小集的Arduino,需要以下的元件:
- 一块面包板;
- 一些导线;
- 一个7805线性稳压器;
- 一个16MHz晶体振荡器(比如Newark的元件编号为16C8140的晶体振荡器);
- 一个ATmega328P-PU单片机,预先烧录了Arduino的引导装载程序;
- 一个1μF/25V电解电容(C1);
- 一个100μF/25V电解电容(C2);
- 两个22pF/50V瓷片电容(C3和C4);
- 两个100nF/50V瓷片电容(C5);
- 两个560Ω电阻(R1和R2);
- 一个10kΩ电阻(R3);
- 两个任意规格的LED(LED1和LED2);
- 一个按钮(S1);
- 一个6位插针;
- 一个PP3型电池扣;
- 一个9V PP3型电池(叠层电池)。
有些元件可能你还没见过。在下面的小节里,我会解释每个元件,给你看每个元件的样子和电路图符号。
1.7805线性稳压器
线性稳压器里有一个简单的电路,能把一个电压转换成另一个。元件清单里的稳压器的型号是7805,它能把7~30V的电压转换成固定的5V,最大的电流是1A,所以用它来给面包板Arduino供电是很合适的。图11-1所示是一种TO-220封装的7805,封装是指它的外形。
图11-2所示是7805的电路图符号。把7805标字的一面朝向自己,左边的管脚是输入电压,中间的管脚是地,而右边的管脚是5V输出。顶部的金属层钻了个孔,这样它就可以和一个更大的金属固定在一起,那片金属就成了散热器。当电流接近它的最大能力1A的时候要用散热器,因为那样使用的话,7805会变得非常热。金属层也是接在地上的。我们的电路需要一个7805稳压器。
2.16MHz晶体振荡器
这东西一般就叫做晶振,晶体振荡器能产生非常准确频率上的电信号。这里用的频率是16MHz,图11-3所示是我们要用的晶振的样子。
和你的Arduino板上的晶振比较一下,它们的形状和尺寸应该都是相同的。
晶振是没有极性的,它的电路图符号如图11-4所示。
晶振决定了单片机的运行速度。比如,我们要组装的单片机电路运行在16MHz,意思是它每秒能执行1600万条处理器指令。不过,这并不是说它能那么快地运行一行程序或是一个函数,因为一行代码要用很多处理器指令来执行。
3.Atmel ATmega328-PU单片机集成电路
单片机是一台微型计算机,里面有执行指令的处理器、不同类型的存放数据和程序指令的存储器,还能以各种方式收发数据。第2章讲到,单片机是面包板Arduino的大脑。图11-5所示就是一片ATmega328P。图中这样的集成电路的1脚,是在集成电路的左下角,标着一个小点的那个脚。
这个单片机的电路图符号如图11-6所示。
Arduino引导装载程序是一个软件,能将程序写入Arduino,不是所有的单片机芯片都有这样的引导装载程序的。自己做Arduino的时候,要购买已经烧录了引导装载程序的芯片。一般卖Arduino板的店家也会卖这样的芯片,比如adafruit、Freetronics和SparkFun。
11.1.2 电路图
图11-7所示是电路图。
这个电路图由两个部分组成。首先,左边是电源部分,能把电压降到稳压的5V。当有电的时候,一个LED就会亮。右边的部分,包括单片机、重启按钮、编程引脚和另一个LED。这个LED接到ATmega328上用在Arduino引脚13的那个管脚上。按照这个电路图接好Arduino。别忘了接线到那个6位插针(见图11-8),这个6位插座就是电路图中底部的6个圆圈。本章后面我们会用这个插针来上传程序到自己做的Arduino。
这个电路只是用一个9V电池和对应的电池扣供电,如图11-9所示。左边电路的正极(+)接电池扣的红色线,而负极(−)接黑色线。
)
![screenshot](https://yqfile.alicdn.com/75a1e651f4f5a3246ceeea7b56be81e8b9d6f060.png
在自制的Arduino上,那些Arduino的引脚在哪里?普通Arduino板上有的那些模拟、数字和其他用途的引脚在我们的面包板版本上也都是有的,只要直接接到单片机上就行。
在面包板Arduino上,R2和LED2是接在数字引脚13上的。表11-1的左边列出了Arduino引脚,而右边是对应的ATmega328的管脚。
为避免混淆,像adafruit和Freetronics这样的厂家卖一种贴在单片机芯片上的不干胶标签,如图11-10所示的这个单片机(在http://www.freetronics.com/mculabel/ 可以购买)。
11.1.3 运行测试程序
现在可以上传一个程序了。我们用一个简单的闪烁LED的程序开始。
// 作品37 - 做自己的面包板Arduino
void setup()
{
pinMode(13, OUTPUT);
}
void loop()
{
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
有3种方法上传这个程序。
1.用交换单片机的方法
上传程序最便宜的方法,是把已有的Arduino里的单片机拔出来,插上我们自制的Arduino里的单片机,上传程序,然后再插回自制的Arduino里。
要从Arduino里安全地拔出单片机,要用到集成电路拔取钳,如图11-11所示。
在拔出单片机的时候,要保证慢慢地同时均衡地拔两端,别心急。拔出来可能不那么容易,但是最终单片机会出来的。
把单片机插进面包板或Arduino的时候,可能先得把管脚稍微向内弯一下,这样就能比较容易插进去。为此,把芯片的一边放在一个平面上,小心地按下,然后重复另一边,如图11-12所示。
最后,把原来的单片机插回到Arduino板的时候,要注意有标记的那端应该在右侧,如图11-13所示。
2.连接到另一块Arduino板
我们可以用Arduino Uno的USB接口上传程序给面包板上的Arduino的单片机。用这个方法既不会磨损Arduino板上的集成电路插座,又可以省钱,因为不需要另外购买USB编程线了。
以下是使用Arduino板的USB接口电路给另一块单片机上传程序的步骤。
(1)拔掉USB线,取下单片机芯片。
(2)断开面包板Arduino电路的电源。
(3)从Arduino的数字引脚0接一根线到面包板上的ATmega328P的管脚2,另一根线从Arduino的数字引脚1接到ATmega328的管脚3。
(4)把Uno的5V和GND接到面包板上对应的地方。
(5)从Arduino的RST接一根线到ATmega328的管脚1。
(6)给Arduino Uno板插上USB线。
这样,这个系统就好像是一个普通的Arduino Uno一样,我们就可以正常地把程序上传到面包板电路去了,需要的时候也可以使用串口监视器。
3.用FTDI编程线
最后的方法也是最简单的,但是需要购买一根USB编程线,叫做FTDI线(这个名字是因为里面用的接口电路的芯片是一家叫做FTDI的公司生产的)。在购买FTDI线的时候,要确认是5V型号的,因为3.3V型号的不能正常工作。这种线(见图11-14)的一头有一个USB插头,另一头是6线的插头。线的USB那头有等价于Arduino Uno板上的USB接口的电路。6线的插头是连到图11-7和图11-8所示的插针那里的。
连接这根线的时候,要确保插头的黑线这边插在面包板的插针的GND上。一旦这根线接好,它也会给电路供电,就像普通的Arduino板子一样。
在上传程序或使用串口监视器之前,要选择Tool -> Board确定板子类型为“Arduino Duemilanove”或“Nano(ATMega328)”,然后选择正确的单片机型号(见图11-15)。
一旦选择了一种上传的方法,就上传作品37的程序来做测试。现在,我们应该可以只用一块面包板来设计更复杂的电路了,这样我们能用更少的钱做出更多的作品来。如果学会了如何做自己的印刷电路板,甚至可以做出更长久的作品来。