本帖最后由 jameswangsynnex 于 2015-3-3 19:51 编辑 前言:
各个Arduino产品其实都是对Arduino最小系统的各种功能扩展与集成,万变不离其宗,如果自己会做Arduino最小系统了,就可以很方便地定制出特殊功能的专用Arduino。另外,相信通过这篇文章,大家也会改变“Arduino就是买来的一块控制板”的印象。
我们就用市面上最常见的ATmega8芯片来介绍怎样自己搭建一个最小系统。先来看一下芯片实物图(见图1),这是一个标准DIP封装的ATmega8。
图1 DIP封装的ATmega8
然后我们再看一下DIP封装的ATmega8芯片的引脚图(见图2),每个引脚对应的是Arduino的哪个端口,图上也已经标出。
图2 ATmega8芯片引脚及与Arduino端口的对应关系
硬件连接
一个最小系统,我们只需要一个16MHz晶体振荡器与两个22pF电容,按照如图3所示的样子连接9、10引脚即可,大家可以参照在面包板上的实物连接来看。
最小系统的硬件部分其实就这么简单,但是Arduino之所以叫做Arduino,并不单单是硬件,一定要有配套的软件,我们现在就用Arduino 1.0.1 IDE把Bootloader下载进这个最小的硬件系统。
图3 Arduino最小系统连接方法
通过下载器下载程序
下载器使用USBTINYISP,ICSP接口的1号口接D12,3号口接D13,5号口接RESET,2号口接VCC,3号口接D11,6号口接GND,如图4所示。
图4 Arduino最小系统与USBTINYISP下载器连接
先把USB线接上,给USBTINYISP安装驱动后,我们点击进入Arduino 1.0.1 IDE,“板卡”选择“Arduino NG or olderw/ATmega8”,
“编程器”选择USBTINYSIP,点击“烧写Bootloader”,就可以看到下载器的BUSY灯开始亮,过不到1分钟后,Bootloader就下载好了,如图5所示。
然后我们打开官方例子里的BLINK代码,如图6所示,也就是让D13引脚输出1s高电平,然后输出1s低电平,循环往复,如果D13引脚接上一个LED,就会有闪烁的效果。
图6 打开官方例子里的BLINK代码
这里很关键,编译程序后,选择“文件”里的“使用编程器下载”,如图7所示。下载好以后,给D13引脚接上一个LED,就可以看到LED在闪烁了。
图7 编译程序后,选择“使用编程器下载”
通过串口下载程序
除了使用编程器下载,我们也可以对下载好Bootloader的最小系统通过串口下载,但是因为面包板电路的电器环境比较差,无法使用高速通信的Bootloader,所以如果要进行下面的最小系统实验,我们需要更换0022版本的IDE。
首先,按照上面的步骤重新给ATmega8芯片刷0022 IDE的ArduinoNG控制板的Bootloader(此Bootloader速度慢一些,但是容易实现手工复位下载程序)。
我们给D13引脚串联一个220Ω的电阻和一颗LED(用作指示灯);给RST引脚串联一个10kΩ电阻,接VCC;同时再给RST引脚接一个按钮,按钮另一端接GND,用来做手工复位。实物连接如图8所示。
图8 在面包板上连接电阻、LED和按钮
然后,我们把USB TO TTL的VCC接最小系统面包板上的VCC,GND接GND,TX接D0,RX接D1,如图9所示。
图9 Arduino最小系统与USB TO TTL连接
运行Arduino 0022 IDE,“板卡”选择“Arduino NG or olderw/ATmega8”,选好识别出来的端口号,同样选择BLINK程序例子,编译,下载。
请注意,下载时有一个最关键的步骤,那就是在点击下载按钮后(见图10),要立刻手工按一下面包板上的复位按钮,程序才可以正常下载。下载好以后,我们就可以看到LED在闪烁了。
图10 点击下载按钮后,要立刻按一下面包板上的复位按钮,程序才可以正常下载。
Arduino最小系统只是一个系统运行的最低要求,其他可以根据自己的实际需要进行扩展,做出来自己个性化的Arduino。