风筝
发表于: 2018-9-12 09:38:44 | 显示全部楼层

Arduino UNO开发板是一个很好的开发平台,适用于制作各种各样的娱乐设备以及有用的微控制器电路,但在每个项目中包括一个完整的Arduino UNO开发板组件可能会非常昂贵。本篇文章将主要介绍向ATmega控制器烧写Bootloader,然后实现类似Arduino Uno的功能。通过本文中的指导说明,您可以将该成本降低50%或更多。


什么是Arduino?你确定?

自2003年以来,如果您还没有了解过Arduinos,那么很难在地球上生活;爱他们或恨他们,他们无处不在。但究竟什么是Arduino?


与许多人的想法相反,Arduino不是微控制器;它是包含微控制器的特定品牌的PCBA(印刷电路板组件)。微控制器通常是Microchip公司的ATmega系列,最常用的ATmega微控制器是AT328P。但不只是AT328P可以在Arduino PCBA或Arduino IDE中运行;下面的图片显示了当您尝试将sketch草图上传到您直接从供应商处购买的普通AT328P时会发生什么。

Error_Msgs_Due_to_No_Bootloader_2.png


如您所见,上传失败了十次,每次失败都是出于同样的原因。即使错误消息没有说明,但失败的原因是ATmega微控制器没有包含Arduino引导加载程序,这是一小段代码告诉ATmega微控制器如何响应Arduino IDE指令。幸运的是,引导加载程序代码可以通过相对简单的过程上传到选定的ATmega微控制器。


以下是使用一个纯正的Arduino UNO开发板将Arduino引导加载程序代码上传到AT328P-PU的分步说明。从本质上讲,该过程分为四个部分:

1.   搭建引导加载程序电路

2.   将Arduino UNO开发板设置为ISP(在线串行编程器)

3.   将Arduino UNO开发板连接到引导加载程序电路

4.   上传引导加载程序代码


在成功将引导加载程序代码上传到AT328P-PU之后,可以轻松地将引导加载程序电路转换为微控制器的编程和操作电路,从而制作成具有UNO的许多功能的开发平台。本文还将提供该过程的详细信息。


搭建引导加载程序电路

为了将引导加载程序代码从Arduino UNO上传到空白的ATmega328P-PU,需要一个小型引导加载程序电路。


AT328P-PU引导加载程序电路的原理图如下所示,非常简单。振荡器电路由X1、C1和C2组成;请注意,X1必须是16MHz晶振,而不是20MHz。尽管AT328P-PU可以使用20MHz晶振,但引导加载过程需要16MHz的工作频率。 R1是复位引脚的上拉电阻,C3是典型的Vcc旁路电容。

原理图左侧的标注定义了每根导线应连接到的UNO上的引脚,并且连接方式显示在原理图下方的面包板照片中。原理图中所示的线颜色对应于照片中的线颜色。

AT328P-PU_Bootloader_Circuit_Schematic_4.jpg


UNO_Connected_to_AT328P-PU_Bootloader_Breadboard2.jpg


将Arduino UNO开发板设置为ISP

在仔细检查引导加载程序电路的接线之后,但在将其连接到UNO之前,必须将UNO设置为ISP(在线串行编程器)。将UNO连接到您的计算机,启动Arduino IDE,并为UNO选择正确的COM端口。然后,按照以下Arduino IDE屏幕截图中显示的步骤操作。


1.    确定开发板是作为Genuine UNO进行连接的。

Tools_Board_Arduino_Genuine_UNO_2.jpg


2.   确定UNO开发板的功能是作为Arduino ISP

Tools_Programmer_Arduino_as_ISP.jpg


3.   打开Arduino ISP sketch草图。

File_Examples_ArduinoISP.jpg


4.   将Arduino ISP草图上传到UNO。

ArduinoISP_Compiling.jpg


5.   当您看到“done uploading”消息时,您的UNO开发板已准备好作为ISP,并且能够识别并响应Arduino IDE的指令。

ArduinoISP_Done_Uploadling.jpg

跳转到指定楼层
风筝
发表于: 2018-9-12 16:09:34 | 显示全部楼层

上传Bootloader代码

现在,使用六根导线将引导加载程序电路连接到Arduino UNO开发板,完全按照上面搭建引导加载程序电路部分中提供的原理图和照片所示。仔细检查所有接线后,您就可以将以下引导加载程序代码烧写到引导加载程序电路中的AT328P-PU微控制器中。


1.选择“Burn Bootloader”作为UNO的功能;单击“Burn Bootloader”时,应会立即启动该过程。

Tools_Burn_Bootloader.jpg


2.当您看到“Done burning bootloader”消息时,过程完成,AT328P-PU能够识别并响应来自Arduino IDE的指令。

Done_Burning_Bootloader.jpg


最小编程(和操作)电路

将AT328P-PU引导加载程序电路转换为最小编程和操作电路,如下图和面包板照片所示,非常简单。

1.     移除UNO和引导加载程序电路之间的所有六根导线。

2.    将R2和LED1连接到AT328P-PU的地和引脚19之间。

3.    将USB-to-TTL转换器的引脚1、3、4和5连接到AT328P-PU,如图所示。未使用引脚2。

4.    将引脚6至C4(0.1μF电容)连接至AT328P-PU的引脚1。 (C4确保来自USB-to-TTL转换器的DTR信号产生瞬态复位信号,而不是长时间保持逻辑低电平的信号。)

AT328P-PU_Minimal_Programming_Circuit_Schematic.jpg


AT328P-PU_Minimal_Programming_Circuit_Breadboard.jpg


上传第一个草图:LED闪烁

1.   为了确认AT328P-PU最小编程和操作面包板的操作,请打开Arduino IDE附带的基本示例中的“Blink”草图。

File_Examples_Basics_Blink.jpg


2.     选择正确的COM端口后,编译并将“Blink”草图上传到AT328P-PU。

Blink.jpg


上传“Blink”草图的第一次尝试失败了;你能看出它失败的原因吗?提示:查看上面IDE窗口的右下角,并将其与下面两个IDE窗口的相同区域进行比较。

Blink_Compiling.jpg


Blink_Done_Uploading.jpg


第一次上载尝试失败的原因是因为选择了错误的COM端口(3)而不是正确的COM端口(6)。


总结

现在我们已经搭建成功了!您已将Arduino引导程序上传到AT328P-PU,然后将“Blink”草图上传到AT328P-PU,正如最小编程和操作电路面包板上闪烁的黄色LED所证实的那样。现在,同样可以上传任何其他功能性Arduino草图,并且该草图所需的组件可以附加到AT328P-PU,并成功使用。


通过这样可以使得Arduino更加有趣。 。 。并以更少的钱做到这一点!

回复

使用道具 举报

cyrs
发表于: 2019-5-14 13:22:16 | 显示全部楼层

谢谢楼主无私分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1480



手机版|

GMT+8, 2024-4-18 14:12 , Processed in 0.148421 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表