引导加载一个AT328P-PU和近似Arduino Uno功能…在廉价!
2017年5月01日通过查尔斯·r·汉普顿通过使用可比功能构建您自己的设备,降低使用Arduino UNO的成本50%或更多。
真正的Arduino Uno是一个有无数的娱乐和有用的微控制器电路的伟大的开发平台,但在每个项目中包括完整的Uno组装可能是昂贵的。使用本文中的说明,您可以将成本降低50%或更多。
什么是arduino?你确定吗?
从2003年开始,如果不了解Arduinos,就很难在地球上生活;不管你喜欢还是讨厌它们,它们无处不在。但是Arduino到底是什么?
与许多人的想法相反,Arduino不是微控制器;它是包含微控制器的PCBAS(印刷电路板组件)的特定品牌。μC最常是一个接口从公司爱特梅尔公司(现在是一部分微芯片),其中最常用的ATmegas是AT328P.。但不是所有的AT328P都能在Arduino PCBA或Arduino IDE(集成开发环境)中工作;下面的照片显示了当你尝试上传一个草图到你直接从供应商购买的普通AT328P时会发生什么。
如您所见,上传失败了10次,每次失败都是由于相同的原因。即使错误信息没有拼写出来,失败是因为ATmega微控制器不包含Arduino引导加载程序,一小段代码告诉ATmega C如何响应Arduino IDE指令。幸运的是,引导加载程序代码可以通过一个相对简单的过程上传到选定的ATmega微控制器。
逐步说明上传Arduino引导加载程序代码到AT328P-PU使用一个真正的Arduino UNO跟随。从本质上讲,这个过程分为四个部分:
- 构建引导加载程序电路
- 将UNO升至ISP(电路式串行程序员)
- 将UNO连接到引导加载电路
- 上传引导加载程序代码
成功地将引导加载程序代码上传到AT328P-PU后,引导加载电路可以很容易地转换为单片机的编程和操作电路,从而创建一个具有真正UNO许多功能的开发平台。本文还将提供该过程的详细信息。
构建引导加载程序电路
为了从Arduino UNO上传引导加载程序代码到空白ATMEGA328P-PU,需要一个小的引导加载电路。下面列出了引导加载电路所需的部件。(你也需要一些跳线。)
Ref一部分。 | 描述 | 来源 | 编号。 |
---|---|---|---|
R1 | 电阻,¼瓦特,10kΩ | Jameco | 691104 |
C1, C2 | 陶瓷电容器,22pF, 50V | Jameco | 81533 |
C3 | 陶瓷电容器,0.1µF, 50V | Jameco | 544921 |
X1 | 晶体,16MHz, HC49, 20pF | Jameco | 325139 |
U1 | IC, ATmega328P-PU, 32KB Flash, DIP-28, 1.8-5.5V | Jameco | 2139111 |
N/A | 面包板,无焊,400接点 | Jameco | 20601 |
N/A | Arduino UNO R3 | Jameco * | 2151486 |
*更好的是,从朋友那里借一个UNO,足够你自己建一个。
AT328P-PU引导加载电路的原理图如下所示,非常简单。振子部分由X1, C1, C2组成;请注意,X1必须是一个16MHz晶体,而不是20MHz。即使AT328P-PU可以使用20MHz的晶体,引导加载过程需要16MHz的操作。R1是Reset#引脚的上拉电阻,C3是典型的Vcc旁路电容器。
原理图左侧的标注定义了UNO上每个引线应该连接的引脚,这些连接在原理图后面的面包板照片中显示。原理图中的电线颜色与照片中的电线颜色相对应。
注意:组装引导加载电路,但尚未将引导加载程序电路与Bootloader电路中的连接进行连接。
使uno成为一个ISP
在重新检查引导加载电路的接线后,但在连接到联合国之前,您必须将UNO向上设置为ISP(电路式串行程序员)。将UNO连接到计算机,启动Arduino IDE,然后为UNO选择正确的COM端口。然后,请按照Arduino IDE中的以下屏幕截图所示的步骤操作。
1.识别作为真正uno的董事会。
2.识别UNO板作为Arduino ISP的功能。
3.打开Arduino ISP草图。
4.上传Arduino ISP草图到UNO。
5.当您看到“完成上传”消息时,UNO已准备好用作ISP,并且能够理解和响应来自Arduino IDE的指令。
上传引导加载程序代码
现在,连接六个引线从引导加载电路到UNO完全如图所示的原理图和照片上面提供的建设引导加载电路部分。在双重检查所有线路后,您可以将以下引导加载程序代码刻录到引导加载电路中的AT328P-PU中。
1.选择“Burn Bootloader”作为UNO的功能;当您点击“刻录引导程序”时,过程应该立即开始。
2.当您看到“Done burning bootloader”消息时,该过程已经完成,AT328P-PU能够理解和响应来自Arduino IDE的指令。
最小编程(和操作)电路
将引导加载电路转换为最小编程和操作电路的部件列表如下所示。
Ref一部分。 | 描述 | 来源 | 编号。 |
---|---|---|---|
R2 | 电阻,¼瓦,470Ω | Jameco | 690785 |
C4 | 陶瓷电容器,0.1µF, 50V | Jameco | 544921 |
LED1. | 二极管,发光,T1 /4,黄色 | Jameco | 334108 |
N/A | 转换器,USB-to-TTL,带有DTR引脚 | 在线 | N/A |
将AT328P-PU引导加载电路转换为如下原理图和实验板照片所示的最小编程和操作电路是非常容易的。
- 删除在UNO和Bootloader电路之间进行的所有六个导线。
- 将R2和LED1连接到AT328P-PU的接地和引脚19之间。
- 将USB-to-TTL转换器的引脚1、3、4、5连接到AT328P-PU,如图所示。引脚2未被使用。
- 将一个0.1µF电容的6到C4引脚连接到AT328P-PU的1引脚。(C4确保来自USB-to-TTL转换器的DTR信号产生瞬态复位信号,而不是在一段延长的时间内保持在逻辑低电平。)
上传第一个草图:当然是眨眼
1.为了确认AT328P-PU最小编程和操作实验板的操作,从Arduino IDE中包含的基本示例中打开“Blink”草图。
2.选择正确的COM端口后,编译并上传“Blink”草图到AT328P-PU。
第一次上传“眨眼”草图的尝试失败了;你知道它为什么失败了吗?提示:查看上面的IDE窗口的右下角,并将其与下面两个IDE窗口的相同区域进行比较(其中上传是成功的)。
当然,第一次上传失败的原因是选择了错误的COM端口(3)而不是正确的COM端口(6)。
发生了什么事?
成功!您已经将Arduino bootloader上传到AT328P-PU上,然后将“Blink”草图上传到AT328P-PU上,通过最小编程和操作电路板上闪烁的黄色LED确认。现在,任何其他功能Arduino的草图也可以上传,该草图所需的组件可以附加到AT328P-PU上,并成功使用。
有arduino乐趣。。。并为较少的钱做这件事!
为自己提供这个项目!BOM。
Charles,非常感谢你这么好的解释,前几天我就遇到过这个问题,我不得不为它买了烧嘴电路。
我很好奇Atmega8,如果我用Atmega328替换Atmega8,那么怎么样,我可以将Bootload刻录到Atmega8吗?
亲爱的先生!我仍然面临问题,而上传引导加载显示的消息
“avrdude:呵!无效的设备签名。
再次检查连接并重试,或使用-F覆盖
这张支票。
烧录引导程序时出错。“怎么解决这个问题??”
你对AT328P-PU最小编程和操作实验板的描述很好。我想知道一旦Arduino引导加载程序就位,哪些引脚映射到Arduino数字0-13和模拟0-7。