Arduino中国 | Flamingo EDA

TAG | Arduino

Nov/10

20

Arduino UNO 样板调试

Arduino UNO已经推出一段时间了,虽然我们很早就基于官网公布的参考实现把电路板做出来了,但一直基于苦于相应的芯片非常难订购到,所以直到前两天才装好第一块样板,先上个成品图(注意,没有Arduino的商标以及MADE IN CHINA):

从硬件上看,Arduino UNO与之前Arduino 2009版本的最大不同在于USB转串口部分,Arduino 2009采用的是FTDI专用芯片FT232RL,而Arduino UNO采用的是用一块ATmega8模拟出串口的做法。这一改动着实给我们带来了不小的麻烦,第一是该方案所采用的ATmega8U2芯片基本上在市场上很难找到,另外一点就是该芯片的封装加大了焊接的难度的成本。在研究原理图的过程中,发现其在USB引脚上加入了防止静电的元件,感觉应该会更加稳定。

拿到焊好的样板之后,首先要向ATMega8U2内写入相应的USB固件(firmware)。在最新版本的Arduino-0021安装目录下的hardware\arduino\firmwares目录下,我们可以找到为Arduino UNO 编译好的USB固件文件UNO-dfu_and_usbserial_combined.hex。Arduino UNO上为ATMega8U2单片机也留出了ICSP接口,我们可以借助它来下载相应的USB固件,使用的工具仍然是USBTinyISP,其右上角为ICSP的1脚:

下载时使用的命令为:

avrdude -p at90usb82 -F -P usb -c usbtiny -U flash:w:UNO-dfu_and_usbserial_combined.hex
-U lfuse:w:0xFF:m -U hfuse:w:0xD9:m -U efuse:w:0xF4:m -U lock:w:0x0F:m

有意思的是写入USB固件时标明的芯片类型为AT90USB82,这显然与板子上使用的ATMega8U2不同,下载过程中avrdude也提示了这一点,估计两者的功能是比较类似的,或者就是同一芯片的不同版本罢了。

下载好USB固件之后,此时将Arduino UNO通过USB线连接到Windows时,就会提示有名为“Arduino UNO“的新USB设备找到,估计这也是官方要采用这一方案的原因,因为之前的版本弹出的是一个FTDI的USB设备的提示,不如现在直接找到Arduino这一USB设备酷吧;-)

接着Windows会引导我们进入“找到新的硬件向导”窗口,选取其中的“否,暂时不”选项后单击“下一步”按钮:

接下来的步骤需要安装Arduino UNO所需的驱动,选取其中的“从列表或指定位置安装(高级)”选项后单击“下一步”按钮:

Arduino UNO的USB驱动放在Arduino 0021安装目录下的drivers目录中,我们需要为Windows指明该目录为安装驱动时搜索的目录:

单击“下一步”按钮后,Windows就开始查找并安装Arduino UNO的USB驱动程序:

如果一切正常的话,我们将看到如下的成功界面:

Arduino UNO的USB驱动安装成功之后,我们可以在Windows设备管理器中找到相应的Arduino UNO串口:

USB部分搞定之后,剩余的单片机部分应该算是比较有把握的,这部分与Arduino 2009基本没有变化。首先从Arduino IDE的“Tools”菜单下选择“Board”中的“Arduino UNO”:

然后将USBTinyISP连接到Arduino UNO上的ICSP座上:

再从Arduino IDE的“Tools”菜单下选择“Burn Bootloader”中“w/ USBTinyISP”:

剩下的步骤就跟之前版本的Arduino是完全一样的了。经过测试,我们第一块Arduino UNO样板工作基本正常,目前唯一的问题是下载程序的时候TX/RX两个灯不亮,仔细检查电路后发现应该是这两个灯焊反了,明天修改一下;-)

Arduino UNO统一采用ATMega328P芯片,可问题是目前这一芯片在市场上很难找到,我们订的货也一拖再拖,什么时候能够正常供货目前还比较难确定,主要看芯片的到货情况。

· ·

Oct/09

25

Arduino MEGA 原型开发扩展板 V1.0

为Arduino MEGA专门设计的原型开发扩展板,配以超小型面包板,主要用来搭建Arduino MEGA的实验电路:



与Arduino MEGA组合起来使用:


采用了方形的焊盘,并且焊盘间的间距尽可能少,这样焊接时更加方便;-)

· ·

Oct/08

6

Arduino USB下载线原型

在使用Arduino的过程中,最令人头痛的估计就是bootloade毁坏,需要重新烧写bootloader了。最常见的一种情况就是,在Arduino IDE环境中下载程序的时候,较长时间没有反应,这时很多人就直接选择断开USB连接线或者电源,然后就会出现无法再上传程序的错误。其实出现这种情况时正确的做法是一直等到Arduino超时返回出错信息,直接断电的做法往往会导致bootloader毁坏。

如果bootloader毁坏,唯一的办法就是通过ISP下载线重新烧写bootloader。之前有介绍过并口ISP下载线的使用方式,但一来使用不是很方便,二来有的计算机上没有并口,所以一款USB下载线就比较有帮助了。

Arduino采用的是AVR单片机,其实已经有不少专为该芯片设计的USB下载线了,比如USBaspUSBtinyISP。手头正好有一块USBasp的空板,拿它来做Arduino USB下载线的原型还是可以的。

通常USB下载线都是10芯的,Arduino独特的6芯设计使得我们必须做一块10芯到6芯的转换板:

下面是所有部件的连接图:

标准的Arduino板上并没有防插反插座,请注意不要接反了:

下载线做好之后,首先要安装USBasp的驱动,你可以下载这个文件并解压缩到你的硬盘上,插上USBasp线之后,Windows会提醒你找到相应的硬件:

当“找到新的硬件向导”对话框出现之后,选择“否,暂时不“单选框,然后单击“下一步”按钮:

然后再选择”从列表或指定位置安装“单选框,单击“下一步”按钮:

选中“在搜索中包括这个位置“复选框,并选择USBasp驱动文件所在的目录,再单击“下一步”按钮:

如果一切正常,你将看到下面这个完成页面:

打开硬件管理器,你会发现其中多了一个USBasp设备:

Arduino官方支持的是USBtinyISP而不是USBasp,在启动Arduino集成开发环境之前,你需要先编辑Arduino安装目录hardware目录下的programmers.txt文件,在末尾加入如下两行

usbasp.name=USBasp
usbasp.protocol=usbasp

这样启动Arduino后你就能在“Tools”->“Burn Bootloader“菜单里找到”/w USBasp“一项:

下载bootloader的时间会比较久,请耐心等待,成功下载后我们能在console窗口里看到如下信息:

稍微有点遗憾的是,我只在Arduino 0011版本上成功完成了上述步骤,在最新的0012版本上没有成功。估计是0012版本采用的最新的Avrdude与USBasp不兼容导致的,要使用USBasp下载线的朋友目前只能退回到0011使用了;-(

· ·

Theme Design by devolux.nh2.me