CAT | Wiring
Wiring元件清单
No tags
整个Wiring最后两部分电路是外部电源和EEPROM。外部电源电路与Arduino上的基本没有什么区别,采用的也是78M05这样的电源芯片,相应的元件清单如下:
| 类型 | 标记 | 数量 | 规格 |
|---|---|---|---|
| 电源芯片 | IC4 | 1 | LM78M05 |
| 电容 | C10, C11 | 2 | 100nF |
| 电容 | C12, C13 | 2 | 100uF |
| 整流二极管 | D1 | 1 | 1N4004 |
| 类型 | 标记 | 数量 | 规格 |
|---|---|---|---|
| EEPROM芯片 | IC3 | 1 | 93C46 |
| 电阻 | R5 | 1 | 10K, 1/4W |
| 电阻 | R6 | 1 | 2.2K, 1/4W |
为了对其中的EEPROM功能进行验证,我试验了另外一个Wiring工程:
#include
char val;
void setup() {
if(EEPROM.read(16) != 'F') {
EEPROM.write(16, 'F');
}
val = EEPROM.read(16);
pinMode(48, OUTPUT);
}
void loop() {
if( 'F' == val) {
digitalWrite(48, HIGH);
}
delay(100);
}
上述Wiring工程在初始化过程中先读取EEPROM中地址为16的字节单元中的值,并在其不是字符F的情况下,往该地址单元中写入字符F,然后再从中读取这来。这样如果EEPROM正常工作的话,就能够保证变量val在setup()函数执行完后,其值一定是字符F。在loop()函数中,如果检查出val的值确实是字符F,就点亮Wiring板子上自带的LED(接在数字I/O的48管脚上)。
习惯了Arduino程序下载时不需要按复位键,并且在下载完成后也不需要按复位键,刚接触到Wiring时对其在这两个位置上还需要按复位键的做法的确有些不适应:-) 真希望Wiring在接下去的版本中能对这一地方进行改进。昨天发邮件问Wiring的作者为什么不把bootloader的源码公布出来,得到的答案居然是他把源码弄丢了,现在只有二进建的版本,我晕…
最后贴一张我制作的Wiring在运行上述EEPROM工程时的效果图,用的是外接电源,右侧的红灯是电源灯,左侧的绿灯是Wiring自带的LED。

No tags
Wiring的核心是一个ATmega128单片机,也是整个电路中最复杂和最容易出错的部分。焊接上因为有了之前FT232BL的相关经验,并没有遇上太大的麻烦,而剩下的一些贴片元件基本上也不算太难。唯一遇到的问题可能就是这些元件实在太小,本人的眼神又不算太好,经常弄飞一两个,掉在地上找不着了:)
| 类型 | 标记 | 数量 | 规格 |
|---|---|---|---|
| AVR单片机 | IC1 | 1 | ATmega128-16AU |
| 电容 | C6, C7 | 2 | 22pF |
| 电容 | C8, C9 | 1 | 100nF |
| 电阻 | R7 | 1 | 10K |
| 电阻 | R8, R9 | 2 | 1.8k |
| 电阻 | R11 | 1 | 270 |
| 电阻 | R14, R15 | 2 | 1K |
| 晶振 | Q2 | 1 | 16M, 二脚直插式 |
| 晶振 | Q3 | 1 | 32.768K, 32C31, 四脚表贴式 |
| 按钮 | RESET | 1 | 四脚直插式 |
| 发光二极管 | PWR | 1 | 红色 |
| 发光二极管 | LED | 1 | 绿色 |
| 10P引脚座 | ISP | 1 | 黑色 |
Wiring的bootloader是事先驻留在ATmega128里的一小段程序,它的作用接收来自于Wiring IDE的命令,实现Wiring工程的下载。往AVR芯片里烧bootloader是非常关键的一步,同时也是对芯片能否正常工作做初步的检测,AVR系列芯片都提供ISP接口,借助这一接口和PonyProg这样的软件,就能够实现对bootloader的烧写。
早先就听网友说过Wiring的bootloader在Wiring的网站上找不到,试了一下果然如些,难怪Wiring不如Arduino那么流行;-) 没有办法,按照论坛里的提示,给作者发了一个邮件要bootloader,等了一天拿到bootloader的HEX文件。
有了之前DIY Arduino的经验,AVR熔丝位的设置这回一开始就考虑到了,按照网上搜索到的文章里的说明,下图在PonyProg中为ATmega128设置的熔丝位:
接下去的过程比较顺利,用PongProg和自制的并口下载线成功地将bootloader烧写到Wiring上的ATmega128中,由于ATmega128的Flash有128K,所以相应的烧写时间比较长。
最后一步就是如何将Wiring程序下载到Wiring板上了,这与在Arduino上是一样的。下面是我试验的第一个Wiring程序:
int ledPin = 0;
void setup()
{
pinMode(ledPin, OUTPUT);
}
void loop()
{
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}
该程序比较简单,只是不断地点亮接在数字I/O管脚0上的LED,实验成功!之前我担心最有可能出现问题的电路部分基本算是调试成功。当然,之后要一个一个验证每个管脚的功能,一共50个,哈哈:)
No tags
万事开头难,最后我挑了USB这部分电路开始焊接和调试,一来这部分电路在Arduino上是基本一致的,二来这部分电路可以给板子上的其他部分供电,三来它还可以同PC机实现串口通信。
USB这部分电路采用的是FTDI公司的FT232BL芯片,算起来也焊过十多回了,因此虽然换了一个刀状的铬铁头,也没有遇到什么大的麻烦。芯片焊好之后,再把电容、电阻、LED、晶振焊好,头一回焊贴片元件,左右开工,总算一一搞定:) 下面是该部分电路所用到的元件,由于手头没有1k的电阻,所以用来给发光二极管限流用的电阻R12和R13暂时用1.5k的电阻替代了。
| 类型 | 标记 | 数量 | 规格 |
|---|---|---|---|
| USB转串口芯片 | IC2 | 1 | FT232BL |
| 电容 | C1 | 1 | 10nF |
| 电容 | C2 | 1 | 33nF |
| 电容 | C3 | 1 | 100nF |
| 电容 | C4, C5 | 2 | 22pF |
| 电阻 | R1, R2 | 2 | 27 |
| 电阻 | R3 | 1 | 1.5k |
| 电阻 | R4 | 1 | 470 |
| 电阻 | R12, R13 | 2 | 1k |
| 晶振 | Q1 | 1 | 6M |
| 发光二极管 | RX, TX | 2 | 绿色 |
| 类型 | 标记 | 数量 | 规格 |
|---|---|---|---|
| 插针 | JP1 | 1 | 3脚 |
| 保险丝 | F1 | 1 | 500mA |
焊上保险丝后再次接上USB线,这回听到了熟悉的USB设备连接上的提示音,在设备管理器中也能找到这一串口了:
心里一块石头总算落地了,不过现在还很难说USB这部分电路是不是已经正常工作了, 因为无法对数据发送和接收进行完全的测试。我只是简单地用串口调试工具打开了COM4,并试着发送一些数据给FT232BL,看到的现象是发光二极管TX在不断地闪烁,或许能够说明这部分电路已经基本可以了。当然,最终的结论只能等到ATmega 128那部分的电路完成之后,真正实际串口数据的收发时才会知道。
无论如何,USB这部分电路基本算是完成了,贴一张焊好USB电路的板子局部图:
No tags
接触Arduino一段时间之后,渐渐发现其实它只能适应用于一些比较简单的应用场景,对于稍微复杂一些的互动应用来讲,一般会需要有更多的管脚,更快的处理速度,以及更大的存储空间。
Arduino在设计和实现时借鉴了Wiring的很多做法,奇怪的是Wiring远远不及Arduino成功,这可能跟Wiring项目组没有大力推广有关系。在国内目前还买不到Wiring,从国外购买的话又需要大把的银子,犹豫了好长时间后还是没有能够挡得住自己的冲动,决定DIY!
Wiring采用的是ATmega128,存储空间为128K,带有50个数字I/O管脚和8个模块输入,以及6个PWM,整体性能比Arduino高了一大截,复杂性当然也是直线上升。对于电子高手们来讲估计不是个大问题,但对我这个完全自学的业余选手来讲,自然又是一个不小的挑战:)
原理图和电路图断断续续估计画了三四周,而且第一次开始采用贴片元件,自然又是恶补了一顿有关元件封装的知识,还从电子市场买了一些元件来比划。 这一过程中最大的收获就是开始认识到Eagle CAD的确是一个不错的电路图软件,可惜国内不管专业还是业余都用Protel。现在用的共享版只能画两层板,对我来讲是够了的,等有需求同时又有银子的时候,一定买个专业版的License。
电路板送到工厂后又足足等了一周,今天总算拿到了五块PCB板,这回做的是黑色的板子:
不知专业人士是如何检查电路板的,我只做了有限的检查,估计应用会有错误,做出的这五块只当拿来练手,之前已经做好了充分的心理准备,就当是学习和练手。
这一周工作比较忙,抽空做的唯一的事情就是去淘了一个二手的示波器,已经在路上了。将很大的期望放在这个即将到来的新伙伴身上,因为DIY Wiring的重任就要落在它的身上了,期待中…
No tags






