0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Arduino的使用技巧

454398 来源:网络整理 作者:网络整理 2019-11-27 11:30 次阅读

Arduino UNO常见问题解答

那里有很多Arduino,这可能会引起一些混乱。我们想向人们说明最新版本中的一些更改。

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卡,某些快速ADCDAC之类的高功率设备很容易将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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Arduino
    +关注

    关注

    187

    文章

    6463

    浏览量

    186621
收藏 人收藏

    评论

    相关推荐

    基于Arduino的串口通信项目

    基于Arduino的串口通信项目涉及多个方面,包括硬件连接、软件编程、串口参数配置等。 一、硬件准备 Arduino开发板 :确保你有一块Arduino开发板,如Arduino Uno
    的头像 发表于 11-22 09:24 126次阅读

    stm32与Arduino的比较

    在微控制器的世界里,STM32和Arduino是两个经常被提及的名字。STM32是一系列由STMicroelectronics生产的高性能微控制器,而Arduino则是一个开源电子原型平台,基于易于
    的头像 发表于 11-19 15:45 159次阅读

    如何使用Arduino实现CAN总线通信

    CAN总线(Controller Area Network)是一种多主控制的串行通信协议,广泛应用于汽车电子、工业自动化等领域。它以其高可靠性、实时性和灵活性而受到青睐。Arduino作为一个
    的头像 发表于 11-12 10:09 297次阅读

    树莓派与Arduino的区别是什么

    在当今的科技世界中,树莓派(Raspberry Pi)和Arduino是两个经常被提及的名字。它们都是开源硬件平台,但它们的目标、功能和用途却大相径庭。 1. 目标和用途 树莓派(Raspberry
    的头像 发表于 11-11 11:14 306次阅读

    怎样用Arduino测试锂电池容量

    本文详细介绍了如何用Arduino测量锂电池的容量。并附有电路图和Arduino的程序代码。
    的头像 发表于 07-30 09:14 707次阅读
    怎样用<b class='flag-5'>Arduino</b>测试锂电池容量

    idf-arduino component组件怎么设置 ?

    idf -arduino component组件该怎么设置 ,。 CMake Warning at E:/COMPILE/Othert/IDF4.4/esp-idf-v4.4/tools
    发表于 06-12 07:27

    求助,在esp-idf中使用arduino作为组件后怎样使用arduino的库?

    在esp-idf中使用arduino作为组件后怎样使用arduino的库,例如我此时需要使用arduino的第三方库blinker,怎样使用?
    发表于 06-12 07:21

    arduino如何停止loop循环

    Arduino的loop循环是其主要的程序执行部分,该循环将在Arduino开发板上持续运行,并且只有在程序被重新上传或开发板断电重启时才会停止。然而,在某些情况下,你可能需要在程序执行过程中停止或
    的头像 发表于 02-14 16:24 4190次阅读

    arduino中while循环怎么跳出

    Arduino 是一款开源的硬件平台,广泛应用于各种物联网和嵌入式系统项目。在 Arduino 上编写代码时,循环结构起到了至关重要的作用。而其中的 while 循环更是常用于需要根据特定条件重复
    的头像 发表于 02-14 16:22 2384次阅读

    如何使用Arduino控制RGB LED

    在本指南中,您将学习如何使用Arduino控制RGB LED。RGB(红-绿-蓝)LED可以通过混合不同强度的红、绿、蓝光来产生多种颜色。您将学习创建一个基本Arduino RGB LED电路,并以一些基本颜色为例循环。
    的头像 发表于 02-11 10:28 4536次阅读
    如何使用<b class='flag-5'>Arduino</b>控制RGB LED

    如何使用Arduino UNO板和电位器控制伺服电机

    在本Arduino伺服电机教程中,您将学习如何使用Arduino UNO板和电位器控制伺服电机。
    的头像 发表于 02-11 10:11 2562次阅读
    如何使用<b class='flag-5'>Arduino</b> UNO板和电位器控制伺服电机

    2023年Arduino开放原码报告:持续茁壮的Arduino生态系!

    所谓出钱就是买一片Arduino开发板或是付费订阅Arduino Cloud云端服务,或单纯资金赞助;出力就是撰写Arduino相关的程序并无私的分享程序代码或回报错误或投入翻译等,笔者即有若干翻译新版
    的头像 发表于 01-25 16:45 1325次阅读
    2023年<b class='flag-5'>Arduino</b>开放原码报告:持续茁壮的<b class='flag-5'>Arduino</b>生态系!

    Arduino制作循迹小车教程

    Arduino制作循迹小车完全教程
    发表于 01-05 11:09 7次下载

    arduino和单片机的区别比较

    Arduino和单片机是两种电子开发平台,相互之间存在一些区别。在本文中,将详细介绍这两者之间的区别,并对它们的特点、应用领域和开发难度进行比较。 一、定义和功能 Arduino是一种基于开源硬件
    的头像 发表于 01-02 16:18 9435次阅读

    Arduino的功能及其限制

    Arduino是一种开源电子原型平台,它基于易于使用的硬件和软件,可以用于制作各种嵌入式系统。然而,尽管Arduino非常强大,但它也有一些功能上的限制。本文将详细介绍Arduino的功能,并探讨
    的头像 发表于 12-21 14:15 1140次阅读