电子说
Arduino UNO常见问题解答
那里有很多Arduino,这可能会引起一些混乱。我们想向人们说明最新版本中的一些更改。
NB 这只是我们对Arduino做出的某些决定的看法和解释。我们没有与Arduino相关联,也不要为他们说话!如果您需要对Arduino问题的正式答复,请直接与他们联系。谢谢!
NB2 仍在进行中,我们正在收集常见问题来回答。如果您还有其他问题,请在我们的论坛中发布。
Arduino时间轴,但首先……一些历史!首先是带有RS232的串行Arduino(它的名字是什么?),它没有在Arduino团队和朋友之外使用。
第一个流行制造的Arduino被称为NG(新一代,例如Star Trek,yknow?)。NG使用了以16 MHz运行的Atmega8芯片和用于USB接口的FT232芯片。该引导程序占用2KB的空间,并以19200波特的速度运行。
下一个版本是Diecimila。 Diecimila将芯片从Atmega8更新为Atmega168。这里最棒的事情是空间和内存增加了一倍(16K而不是8K)。它仍然以16MHz运行。 Diecimila还增加了两个额外的3.3V插头(来自FTDI芯片)和复位引脚,当屏蔽层覆盖了Reset按钮时,该引脚非常方便。引导加载程序占用2KB的空间,并以19200波特的速度运行。还添加了自动重置功能,使每个人的生活变得更加美好。
2009年,发布了Duemilanove。这也将芯片再次升级到Atmega328。空间和内存又增加了一倍!另一个升级是现在可以在USB和DC插孔之间自动切换电源,从而删除了先前的跳线。这使得从编程过渡到独立变得更加容易和快捷,并且摆脱了一些混乱。引导加载程序占用2KB的空间,运行速度为57600波特。
2010年,我们推出了Uno! Uno仍使用328P芯片和电源切换器。它有一个名为OptiBoot的较小引导加载程序(用户项目有更多空间),运行速度为115K。因此,即使芯片相同,您也可以获得引导加载程序先前使用的另外1.5K的额外闪存空间。 FTDI芯片也已替换为atmega8u2,后者可支持各种USB接口。最后,还有一个额外的3.3V稳压器(LP2985),可提供更好的3.3V电源。
新USB芯片 所以!所有较旧的Arduino(NG,Diecimila和Duemilanove)都使用FTDI芯片(FT232RL)来转换Arduino芯片(Atmel ATmega)的TTL串行。这样可以进行可打印的调试,并连接到PureData/Max,Processing,Python等软件,还可以通过串行引导加载程序更新固件。
有关的好消息FT232RL具有免版税的驱动程序,几乎可以正常使用。坏消息是它只能用作USB/串行端口。它不能像键盘,鼠标,磁盘驱动器,MIDI设备等一样起作用。
Uno通过将FT232RL芯片与atmega8u2芯片交换来改变了这种情况。这款新芯片可能有几件事情,但是在我们进行讨论之前,让我们先弄清楚默认情况下,该芯片的功能与它所取代的FTDI芯片相同。这只是USB串行端口!
更新芯片的一项改进是,以前,Mac用户需要安装FTDI驱动程序。 8u2模仿“通用” CDC串行设备。因此,现在,Mac用户不必安装驱动程序。 Windows用户仍然需要安装.INF文件,但是幸运的是没有驱动程序。这意味着新版本的Windows将出现较少的问题。遗憾的是,没有办法在Windows中拥有不需要INF文件的串行USB设备:(
8u2的优点是 advanced 用户可以将其转变为另一种USB设备,例如,它可以像键盘或鼠标,磁盘驱动器,或MIDI接口等一样工作。这样做,但我们希望很快发布。
最后,使用8u2降低了电路板的价格,弥补了其他一些不足。
为什么不只使用atmega32u4?
Arduino团队已经表明他们考虑了这一点,但更喜欢DIP芯片的可破解性。
现在,有一些带有32u4芯片的Arduino,例如Leonardo,Micro和Esplora
如何更改USB固件?
可以通过焊接6针ISP接头(R3具有6针)来对8u2进行编程标头已预先焊接)并使用标准的AVR编程器。您也可以在8u2中使用引导加载程序(DFU)。在第一代Unos上,您可以通过在板子下面焊接10K电阻器来启用它。 (Uno的R2和R3版本使用16U2,不需要电阻!)同样,我们没有任何示例或教程,但希望很快。
8u2的代码基于LUFA,这是Dean Cameran极为出色的USB-AVR库,其中包含大量示例和文档。它也是完全开源的。
Uno是否使用谐振器或晶体作为处理器时钟?
FT232RL具有内部振荡器,而8u2没有。这意味着8u2旁边有一个16mhz晶体,以使其能够保持精确的USB时序。
另一方面,作为Arduino中核心处理器的Atmega328p芯片现在具有16mhz陶瓷谐振器。陶瓷谐振器的精确度略低于晶体,但我们已经确信这一谐振器已经过指定并且可以很好地工作。
所以Arduino在计时方面不那么精确吗?
简短的答案是:是的。长答案是,人们使用Arduino所做的大多数事情都不依赖于20ppm的精确定时,否则100ppm就会失败。对于需要长期精确计时的人,我们建议使用TCXO(温度补偿晶体振荡器)-但您会知道是否需要它。
《我class =“ fa fa-question-circle-o”》
两者之间共享一个16Mhz晶体?
很好的问题,从技术上讲可以。但是,实际上,开发板并没有通过一个晶体通过FCC认证(长的痕迹和快速的方波=大量的噪声)。
好,可以说我不在乎。..
您绝对可以连接CLKO从‘8u2到’328p的晶体,但是您是一个人,因为我们不认为会有任何相关的教程。
背面的FCC徽标是什么?
Arduino现在已通过FCC认证!这意味着该板本身就通过了FCC电磁辐射认证。这不是不是意味着您的项目已通过FCC认证。更改Arduino的那一刻,它已不再经过FCC认证(尽管我们需要一些备用文档)。
它还是欧洲人的CE认证。
新的Bootloader?
有一个新的Bootloader。它就像旧版本一样工作-兼容STK500协议,但大小只有 1/4 !从2K开始,新的引导程序只有512b。这为您的项目代码提供了更多空间!好极了!它也更快 -115K(而不是57.6k),因此您将在3秒内上传代码。
坏消息是,您必须确保在“董事会”菜单中选择Uno !!!如果您不这样做,则由于引导加载程序速度错误而使您感到困惑,并且您将无法获得额外的1.5K!
总体而言,它是一个很好的方向,并且芯片可以很好地用于较早的Arduino(因此,您只需更换芯片即可将Diecimila或Duemilanove升级到Uno)。
有关引导加载程序的更多详细信息,例如源代码,请访问Optiboot项目页面。
为什么不只是将‘8u2用作程序员?
虽然8u2可以充当完整的ISP编程器,但出于某些原因却并非如此。
初学者使用完整的ISP编程器将导致积木。如果只是被引导加载,就不会将Arduino芯片弄得面目全非。
让该芯片仅作为USB/串行接口来使用,从而简化了固件,因此该芯片仅具有一种功能,而不必具有它具有程序员和串行接口的双重作用(考虑一下,这并不容易)
向后兼容-仍然可以使用FTDI分支板或电缆对Arduino芯片进行编程,使人们很容易面包板或制作克隆。
新的’8u2如何影响Arduino衍生物?
每个USB设备都必须具有唯一的产品ID和供应商ID。供应商ID(VID)出售给公司,产品ID(PID)由该公司选择。因此,例如,FTDI拥有VID#0403,并且他们给芯片提供的ID在#0000和#FFFF之间(65,536个不同的PID)。Ardiuno的旧会员使用FTDI的VID/PID,因为这是您购买芯片时交易的一部分。由于Uno不再使用FTDI芯片,因此Arduino团队不得不购买USB供应商ID(VID)。现在,每个Arduino产品都将从Uno(#0001)开始具有自己的PID。
如果要制作自己的Arduino兼容板,您可以选择以下几种:
Don ‘不使用8u2,而是使用带有VID的FTDI芯片代替
如果您打算制造多块用于个人使用的板,则必须购买VID从USB IF一次性收取$ 2000的费用
如果您要为自己的实验制作一块单板,则可以选择一个不会干扰您设备上的任何设备的VID/PID计算机并替换其中的那些
您可以从开发USB设备的公司购买单个VID /PID对的许可证(目前我们没有任何特定链接)
但是,您分发自己的Arduino兼容产品时不能使用Arduino VID!如果VID的成本对您来说太高了,只需使用FTDI芯片K?
我试图找到一个购买“ 8u2”的地方,却找不到任何地方!
是的,目前全球范围内都缺少Atmel零件。甚至Arduino内核(Atmega328P)中使用的芯片也很难获得。经济衰退后会发生这种情况。我们希望这些芯片和其他Atmel芯片能尽快在Digigikey之类的地方出现。直到那时,继续在findchips.com上搜索!
那么这是否意味着Arduino短缺?
可能不是。 Arduino团队直接从Atmel购买了成千上万的芯片。因此,他们可能会优先于分销商。我们假设团队购买了足够的东西可以持续一段时间。
i》
Arduino小组是否已将FTDI芯片从FTDI芯片移到了8u2芯片上,制造商?
虽然出现了难以获得的芯片并VID/PID的混乱似乎有点令人讨厌,我们认为这并不意味着Arduino团队是恶意的,或试图使衍生产品的人生活困难。向’8u2的迁移使Arduino更加强大,并且易于安装,因为安装的驱动程序更少。尽管现在短缺,但最终市场上会有很多芯片。
Arduino论坛中的某些人已经考虑组建一个小组,该小组将购买VID供Arduinites用于个人项目。这是一个很好的主意,并且可能是避免VID/PID冲突的最佳方法。在65,536个项目中,每个PID花费的钱很少。
当然,因为它们没有摆脱引导加载程序系统,所以您可以始终使用FTDI芯片。
盾牌还在起作用吗?
所有以前的屏蔽仍应能正常工作,因为插头间距相同,核心芯片相同且零件位置相同。实际上,由于3V电源已经升级(请参见下一点),因此某些方法应该工作得更好。
机箱,平板等仍然可以使用吗?
是的! Uno在物理上与以前的Arduino具有相同的大小和布局。安装孔在同一位置。现在,还有一个附加的安装孔。
更多3.3v电源!
对于较旧的主板,一件可悲的事情是它们具有3.3v电源,但这实际上就是FTDI芯片内部3.3v稳压器所能提供的。您可能会从中获得50mA的电流。但是诸如XBees,SD卡,某些快速ADC或DAC之类的高功率设备很容易将FTDI芯片拉下并重置USB连接。 Uno通过添加一个新的3.3V稳压器LP2985解决了这个问题,该稳压器可以轻松提供150mA电流。
LP2985是一款非常高质量的稳压器,非常适合于为物品供电,并且非常漂亮。坚实的1%模拟参考。
为什么Arduino芯片可以20MHz运行时为何以16MHz运行?
这是一个常见问题。原因是第一个Arduino使用的Atmega8的运行速度不能超过16Mhz。随着芯片的升级,他们希望使主板速度兼容。 Arduino也不是真正打算用于快速处理(无论如何它仅是8位的),因此芯片以16MHz运行。
它仍然是开源硬件吗?和软件?
是! Uno仍可在知识共享许可下使用。您可以在Arduino网站上获得最新的原理图和布局。
UNO R2和R3 在2011年秋季,Arduino团队透露将会有新的次要修订经典Arduino的“ UNO R3”(修订版3)。许多人向我们询问了有关R3的信息,因此,到目前为止,我们已经掌握了所有信息。
UNO R3直到12月1日左右才对经销商销售。真!直到那时还没有人!
UNO R3向后兼容UNO-相同的驱动程序,相同的上载内容,相同的外观
UNO中有一些更改,这里是它们是什么:
USB控制器芯片已从atmega8u2(8K闪存)移动到atmega16u2(16K闪存)。 这并不意味着您的草图具有更多的闪存或RAM 。此升级仅针对USB接口芯片 。从理论上讲,这意味着使用低级USB接口(例如MIDI/操纵杆/键盘)会更加容易。 但是,这只是理论上的问题,没有示例代码或固件可以真正做到这一点。
另外还有三个突破针在PCB上,在AREF引脚旁边有两个I2C引脚(SDA/SCL)-这是模拟4和5引脚的重复。没有额外的I2C接口或其他任何东西,只是因为I2C引脚位于Mega的不同位置,所以他们在那里复制了这些引脚以用作将来的屏蔽。复位引脚旁边还有一个IOREF引脚-这是为了让屏蔽层知道板上正在运行的I/O引脚电压(对于UNO,为5V)。再次,这是电源引脚的重复,它不会增加UNO的电压电平。
“ RESET”按钮已移到电源按钮旁边。 USB连接器,这样在屏蔽层位于顶部时更易于按下。
这是UNO中没有发生的变化:
处理器的尺寸和速度-自从Duemilanove以来,它的运行频率为16MHz的ATMega328P相同。您的代码不会在R3上更快或更佳地运行
相同数量的插针-没有添加额外的插针甚至有更多的突破(请参见上文!)
电路板的尺寸和形状-与以前相同的尺寸
屏蔽罩的兼容性-每个能正常工作并插入UNO R1/R2的屏蔽罩都应该能够在R3上正常工作
驱动程序-驱动程序是相同的
上传速度-相同的上传速度和技术
如果您想立即使用Arduino R3,请访问adafruit商店,拿起木板或包装!
Arduino库
需要帮助库?在此处查看我们针对所有操作系统的超级详细教程:
http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use
什么是库? 库是很棒的地方,在美国还不是非法的!如果您需要学习如何做某事,例如修理摩托车,可以去当地的图书馆去拿书。当然,您可以买书,但是图书馆很好,因为作为一种资源,您可以在需要时随时获得书,使房子整洁。
软件图书馆非常相似。在第3课中,我们已经研究了过程是什么:过程是要执行的事情的列表。库是过程的大集合,其中所有过程都相关!例如,如果您想控制电动机,则可能需要找到一个电动机控制库:一个已经为您编写的过程的集合,您可以使用这些过程,而不必进行繁琐的学习电动机的细微差别的工作。
例如,这是串行库,它允许Arduino将数据发送回计算机:
使用库 Arduino项目的最佳功能之一是能够添加预制的库,以增加硬件支持。它们很多,您可以选择安装哪个。仅当您正在处理的草图需要它们时才加载它们,因此在大多数情况下,您可以下载并存储它们以备将来使用。
草图通常会依赖,在库中,您可以通过查看草图的顶部来查看它们的内容。如果您看到以下内容:
下载:文件
复制代码
#include #include
这意味着您将需要一个名为FatReader的库或包含文件FatReader的库。如果未安装,则会出现错误:
库中有什么? 库是其中包含一些文件的文件夹,这些文件将以 .cpp (C ++代码文件)和 结尾。 h (C ++头文件)。
可能还会有一些 .o 文件。 .o 文件是C ++编译的对象。如果最终要处理库并对其进行修改,请确保删除 .o 文件,因为这将迫使Arduino IDE将修改后的 .cpp 编译为 .o 。
您可能会看到的两个可选文件是 keywords.txt (这是一个提示文件,用于告诉Arduino IDE如何为草图和示例文件夹上色,其中可能会有一些方便的测试标记,这些标记将显示在“文件”→“示例”→“库”下拉菜单下。
请记住!库文件夹的结构非常重要! .c 和 .h 文件必须位于文件夹的“最低级别”中,例如,您不能具有 Arduino/libraries/WaveHC/WaveHC/file.c 或 Arduino/libraries/MyLibraries/WaveHC/file.c -它必须为 Arduino/libraries/WaveHC/file.c
如何安装库在Arduino v16及更早版本中,库存储在 ArduinoInstallDirectory/hardware/libraries 文件夹中,该文件夹还包含所有内置库(如Wire和Serial)。
在v17及更高版本中,用户库现在存储在 ArduinoSketchDirectory/libraries 文件夹中。您可能需要第一次制作库 子文件夹。但是,这样做的好处是,您不必在每次升级软件时都移动并重新安装库。
例如,这是在Windows中安装NewSoftSerial时的外观。当然您的用户名会有所不同。)
在Mac上,您的arduino素描文件夹可能会被称为 Documents/arduino ,因此请在名为 libraries 的内部创建一个新文件夹,然后将未压缩的库放入
请检查Documents/arduino/libraries/MyNewLibary文件夹中是否包含.cpp和.h文件。
完成后,重新启动Arduino IDE。
Bootloader
这是一些高级的Bootloader调整-99%的Arduino用户应不要惹他们的引导程序!
用于Atmega328的引导加载程序,这里是“固定” ATmega328引导加载程序的软件包。要对其进行编程,可能需要更改Makefile的ISPTOOL等定义。命令为 make adaboot328;。 make TARGET = adaboot328 isp328 (我无法使用默认的‘isp’目标,因此我制作了一个新目标)。
此版本具有一些修复程序:首先,它集成了下面的“ no-wait”和“ no-hang”修复程序。它还修复了在不使用IDE进行编程时令人讨厌的“缺少签名字节”的错误。我还修复了EEPROM代码,以便现在您可以上传和下载EEPROM存储器以及闪存。最后,对于没有TX/RX指示灯的arduino克隆,LED会提供“上传反馈”。
请注意,由于扩展了内存,该芯片的保险丝有所不同!
“ No-Wait”引导程序 这是一个引导加载程序hack,它将在上载后自动启动草图,并且仅在按下重置按钮时才会启动引导加载程序(因此,当您插入电源时,它将直接进入草图)。 br》
复制以下行:
下载:文件
复制代码
ch = MCUSR;
MCUSR = 0;
WDTCSR |= _BV(WDCE) | _BV(WDE);
WDTCSR = 0;
// Check if the WDT was used to reset, in which case we dont bootload and skip straight to the code. woot.
if (! (ch & _BV(EXTRF))) // if its a not an external reset.。.
app_start(); // skip bootloader ch = MCUSR;
MCUSR = 0;
WDTCSR |= _BV(WDCE) | _BV(WDE);
WDTCSR = 0;
// Check if the WDT was used to reset, in which case we dont bootload and skip straight to the code. woot.
if (! (ch & _BV(EXTRF))) // if its a not an external reset.。.
app_start(); // skip bootloader
并粘贴它们,如下所示:
下载:文件
复制代码
/* main program starts here */
int main(void)
{
uint8_t ch,ch2;
uint16_t w;
ch = MCUSR;
MCUSR = 0;
WDTCSR |= _BV(WDCE) | _BV(WDE);
WDTCSR = 0;
// Check if the WDT was used to reset, in which case we dont bootload and skip straight to the code. woot.
if (! (ch & _BV(EXTRF))) // if its a not an external reset.。.
app_start(); // skip bootloader
/* set pin direction for bootloader pin and enable pullup */
/* for ATmega128, two pins need to be initialized */ /* main program starts here */
int main(void)
{
uint8_t ch,ch2;
uint16_t w;
ch = MCUSR;
MCUSR = 0;
WDTCSR |= _BV(WDCE) | _BV(WDE);
WDTCSR = 0;
// Check if the WDT was used to reset, in which case we dont bootload and skip straight to the code. woot.
if (! (ch & _BV(EXTRF))) // if its a not an external reset.。.
app_start(); // skip bootloader
/* set pin direction for bootloader pin and enable pullup */
/* for ATmega128, two pins need to be initialized */
现在,以相同的方式,复制以下代码:
下载:文件
复制代码
// autoreset via watchdog (sneaky!)
WDTCSR = _BV(WDE);
while (1); // 16 ms // autoreset via watchdog (sneaky!)
WDTCSR = _BV(WDE);
while (1); // 16 ms
并粘贴到此处:
下载:文件
复制代码
/* Leave programming mode */
else if(ch==‘Q’) {
nothing_response();
// autoreset via watchdog (sneaky!)
WDTCSR = _BV(WDE);
while (1); // 16 ms
}
/* Erase device, don‘t care as we will erase one page at a time anyway. */
else if(ch==’R‘) {
nothing_response();
} /* Leave programming mode */
else if(ch==’Q‘) {
nothing_response();
// autoreset via watchdog (sneaky!)
WDTCSR = _BV(WDE);
while (1); // 16 ms
}
/* Erase device, don’t care as we will erase one page at a time anyway. */
else if(ch==‘R’) {
nothing_response();
}
您也可以在此处获取源代码和已编译的十六进制文件。
它将在NG或Diecimila Arduino中工作。
无挂机引导程序如果您使用的是自动安装的Diecimila -reset当通信程序意外触发引导加载程序时,您可能会感到沮丧。这是一个快速的技巧,可以使引导加载程序在未首先收到‘0’字符的情况下退出(这表示Arduino软件正在尝试与之对话。)
复制以下行:
下载:文件
复制代码
uint8_t firstchar = 0; uint8_t firstchar = 0;
并粘贴:
下载:文件
复制代码
/* main program starts here */
int main(void)
{
uint8_t ch,ch2;
uint16_t w;
uint8_t firstchar = 0; /* main program starts here */
int main(void)
{
uint8_t ch,ch2;
uint16_t w;
uint8_t firstchar = 0;
复制:
下载:文件
复制代码
firstchar = 1; // we got an appropriate bootloader instruction firstchar = 1; // we got an appropriate bootloader instruction
粘贴:
下载:文件
复制代码
/* Hello is anyone home ? */
if(ch==‘0’) {
firstchar = 1; // we got an appropriate bootloader instruction
nothing_response(); /* Hello is anyone home ? */
if(ch==‘0’) {
firstchar = 1; // we got an appropriate bootloader instruction
nothing_response();
,然后将其粘贴到上面的代码下方:
下载:文件
复制代码
} else if (firstchar == 0) {
// the first character we got is not ‘0’, lets bail!
// autoreset via watchdog (sneaky!)
WDTCSR = _BV(WDE);
while (1); // 16 ms
} } else if (firstchar == 0) {
// the first character we got is not ‘0’, lets bail!
// autoreset via watchdog (sneaky!)
WDTCSR = _BV(WDE);
while (1); // 16 ms
}
您也可以只用 app_start()
上传草图 bootloader与‘stk500’兼容,这意味着您可以使用ol‘AVRDUDE对arduino进行编程。
只需插入USB电缆即可。 ,然后在开始avrdude之前按重设。如果需要avrdude教程,请查看此页面。
使用 -b 19200 将波特率设置为19200
设备签名显示为似乎不起作用,因此您需要使用 -F
编程器类型为 avrisp
设备类型为 -p m168
端口是FTDI芯片显示的端口
升级
简介
Arduino的“大脑”是一个称为ATmega的微控制器。它是ATMEL(一家挪威芯片公司)的产品线。就像英特尔和AMD每年发布新的更好的芯片一样,Atmel也是如此。 Arduino的第一个版本(直至NG)使用ATmega8-一种具有8K闪存和1K RAM的芯片。然后Atmel发布了ATmega168,它是16K闪存和1K RAM的直接替代品-确实是一个很大的改进!现在有了带有32K闪存和2K RAM的ATmega328。
更新和更换Arduino既轻松又轻松,仅花费几美元。您的草图将像以前一样工作,但还有更多的呼吸空间。
要执行此升级,您将必须购买预编程的芯片,或者自己使用AVR编程器对其进行编程,也可以通过对其进行“位撞击”。 p》
更换芯片首先,《使用小型平头螺丝刀或类似工具从插座上强行轻轻地撬起Arduino微控制器。尝试确保销钉不弯曲。放在安全的地方。最好放在防静电袋中。
下一步,准备新芯片。 IC的引脚在出厂时略有倾斜,因此需要将其弯曲一点以使其平行。
span》
最后,更换旧芯片,排列所有引脚,并确保芯片上的凹口与插座上的凹口匹配!
下载具有ATmega328兼容性的Arduino IDE 版本13和更高版本的Arduino该软件支持328!如果您从2009年2月5日之前从Adafruit购买的芯片,则波特率将设置为19200(与旧版Arduinos相同)。 2月5日之后,升级芯片更改为57600波特率(快3倍!),以便与新的Arduino兼容。如果您使用的是19200波特率的芯片,则上传将很困难。只需退出Arduino应用程序并在名为 boards.txt 的硬件文件夹中编辑文件,然后将行更改为:
下载:文件
复制代码
atmega328.upload.speed=57600 atmega328.upload.speed=57600
至:
下载:文件
复制代码
atmega328.upload.speed=19200 atmega328.upload.speed=19200
如果遇到问题,请同时尝试以防万一!
3.3V转换
介绍 所有正式的Arduino都以5伏电压运行,长期以来,这一直是业余电子产品和微控制器的“标准”电压。但是现在最酷的新型传感器,显示器和芯片均为3.3V,不兼容5V。例如,XBee无线电,SD卡和天线表均以3.3V逻辑和电源运行。如果您尝试以5V电压连接到它们,则可能会损坏附件的内部。
我们使用CD4050之类的芯片进行电平转换,但是如果您使用大量3.3 V设备,也许您最好将整个Arduino升级为从3.3V开始运行!
为此,我们将更换调节器,以使DC桶形插孔达到3.3v类型稳压器,不是5V。然后重新配置5V USB电源线,使其也通过调节器。
替换调压器 默认稳压器为5.0V类型,但我们希望输出3.3V,因此需要替换它。我们将在TO-252-3封装中使用1117-3.3V(有一些1117稳压器制造商,就像7805由许多工厂制造的)稳压器。看起来像这样:
您可以从任何电子零件商店购买这些产品,例如,这里是digikey链接。
首先,我们需要删除旧的调节器。最简单的方法是先夹住两条腿。
然后,您需要加热凸耳以使其呈液体,以便可以将旧零件提起。尽管看似不直观,但最好将添加焊料到接线片上,然后用铁将其熔化,这会改善导热性,因为接线片太大。
清理选项卡并删除所有剪切的部分仍然卡住。
现在将新的3.3V稳压器排成一行,然后先焊接接线片,使用大量焊料并耐心等待,接线片就像散热器一样。
然后做两条腿。
更换保险丝 下一部分有点棘手,USB插孔已经给了我们5V的电压,并且通常与稳压器的输出有关(essentia通常,当DC插孔未通电时,它有一个连接它的小电路。)
使USB 5V也通过调节器的最简单方法是卸下保险丝并将二极管从USB输出焊接到稳压器输入。
您可以使用任何功率二极管,一个1N4001完美的,只需几美分。
需要权衡的是,USB插孔没有500 mA保险丝。好消息是,计算机将在USB连接器(计算机内部)上拥有自己的保险丝,因此您不太可能会破坏PC。但是请注意,这会失去一点安全性。
用烙铁加热保险丝,再次添加焊料可能有助于导热。由于保险丝的导电性很强,您可以只加热一侧一段时间,两端就会熔化。
将二极管短接并将引线弯曲。将没有条纹(阳极)的一侧焊接到最靠近电路板边缘的旧保险丝垫上。将带条纹的一端(阴极)焊接到调节器的右脚上。
Arduino仍将自动选择为您提供更多电源的电源插头。
就是这样!您现在使用3.3V供电。这比AVR芯片的功率/频率规格低一点,因为它们应该具有大约3.6V的电压才能运行16Mhz,但是自 可能 AVR可以超频一点。
Arduino黑客
保险杠 让导电迹线接触您的桌子并不是很好,您可以通过在底部添加保险杠来保护Arduino。
您可以从McMaster Carr零件号购买。 95495K66(大量)或Adafruit
免费占用一些RAM 如果您正在处理需要很多 的项目,则可以释放100个以上的字节(ATmega168上RAM的10%!)通过减少串行接收缓冲区。默认情况下,它的128个字节相当多!
打开 hardware/cores/arduino (或 cores/arduino )目录,然后编辑名为 wiring_serial.c 或 HardwareSerial.cpp
的文件,靠近顶部的是 #define RX_BUFFER_SIZE 128 ,这意味着128个字节用于缓冲区。您可以将其更改为32(甚至16!)。如果几乎没有串行输入,请使其尽可能低,只要其》0。
您还可以通过将 rx_buffer_head 和 rx_buffer_tail 从更改为另外2个字节》 int 到 uint8_t
ArduinoISP
简介 许多人开始学习使用Arduino的微控制器,但随后又想构建自己的项目而不必牺牲开发板。或者,也许他们想制作自己的与IDE兼容的Arduino变体。无论哪种方式,一个常见的问题是如何将引导加载程序刻录到新的AVR芯片上。由于AVR一片空白,因此需要将它们设置为与Arduino IDE兼容,但为此您需要一个AVR编程器(如USBtinyISP)。
好消息是,您可以使用现有的USB刻录机加载引导加载程序Arduino仅需一点点工作。 arduino.cc站点上甚至还有一个迷你教程。
该教程是该教程的扩展。首先,我们将展示如何通过将28针ZIF插座焊接到原型屏蔽层并使用Arduino的PWM输出线生成时钟来制造永久的引导程序刻录机。这样一来,您可以“救援”设置为错误类型的振荡器的许多芯片,或者将设置为从外部振荡器(大多数Arduino引导加载程序)更改为内部的芯片(例如lilypad)。
零件 您将需要。..
Arduino
原型屏蔽套件
28针ZIF(零插入力)插座(您可以使用普通插座,但ZIF是理想的插座)
一些电线
空白ATmega328P
如果您从Adafruit购买了该套件,则会有一些额外的物品,例如压电蜂鸣器,您可以在此项目的独立版本中使用的LED,按钮等,现在就将其忽略!
组装 首先,将ZIF插座放置在原型屏蔽板上,如下所示:
焊接所有28个引脚一种牢固的连接!
将以下电线焊接到ZIF插座上
将数字1固定到数字10-蓝色不要忘记将电线弯曲到下面以进行连接焊接时连接到ZIF插座引脚!!!
引脚7至5V-红色
引脚8接地-黑色
针9到数字9-灰色
针17到数字11-棕色
针18到数字12-橙色
针19到数字13-黄色
针20到+ 5V-红色
针22到地-黑色
按照protoshield教程将红色LED焊接到 LED1 位置,绿色LED置于 LED2 位置。还要在LED旁边焊接两个1.0K电阻。我们将使用LED作为指示器。然后,将LED2分支(白色)到模拟0的电线焊接,LED1分支(白色)到数字8的电线焊接。
最后,您需要在接头上焊接以允许放置屏蔽,断开0.1英寸的公接头并将其放入Arduino插槽中,然后将上方的屏蔽层顶部焊接到位。
加载代码
加载草图的时间!从我们的Github存储库中获取代码并将其粘贴到新草图中,然后将其上传到Arduino。
我们有报告说此过程不适用于Arduino 1.5.2。请改用最新的主流Arduino版本!
将屏蔽层插入顶部,提起闩锁,弹出芯片,然后放低闩锁。确保芯片方向是这样(因此,通过左侧的杠杆,您可以阅读文本):
在仍然插入USB电缆的情况下(并选择与以前相同的串行端口),选择工具→刻录Bootloader→带有Arduino的ISP
在更高版本的Arduino IDE,从 Tools→Programmer 菜单中选择 Arduino as ISP ,然后从Tools菜单中选择 Burn Bootloader 。
编程时,您将看到此消息,并且LED指示灯将熄灭。
就是这样!别忘了,您可以刻录几种不同的种类引导加载程序,例如Uno,Duemilanove,Lilypad,因此,根据您的情况,您可能希望使用其中一种。
奖金!与AVRdude一起使用 您可以非常轻松地从命令行使用ArduinoISP,使用AVRdude,这是通过运行以下命令对AVR进行编程的标准程序:
下载:文件
复制代码
avrdude -c arduino -p atmega328 -P COMPORT -b 19200 -U flash:w:filetoburn.hex avrdude -c arduino -p atmega328 -P COMPORT -b 19200 -U flash:w:filetoburn.hex
代替 atmega328 ,您还可以编程 atmega8 atmega88 atmega48 atmega168等,等等
责任编辑:wv
全部0条评论
快来发表一下你的评论吧 !