第18课 DIY Arduino 系统

我是潘,曾经是个工程师。这是为 Ardui.Co 制作的 “Arduino 公开课” 系列的入门教程。本节课我们将 DIY 属于自己的 Arduino 系统。有任何疑问请在评论区提出,我会逐一回答。

完成了一项开发后,你肯定会想怎么把它,以最低成本的方式转化为成品。此时,我们就要知道怎样构建自己的 Arduino 系统。其实,这项工作非常简单,Arduino 核心就是一块 Atmel 控制芯片,只要外接1个晶振和2个瓷片电容即可构成最小系统。

我们选用Uno上的 ATmega328P,因为这块芯片有直插封装、价格非常便宜,且性能强大。很多旧教程推荐 ATmega8,但 ATmega8 性能较差,ROM 只有区区的 8KB,最关键的是,产量少,现在价格也不比 ATmega328P 便宜多少。

DIY Arduino 系统前需要准备一些元件:
16Mhz 石英晶振 1个
18 ~ 22pF 瓷片电容 2个
10KΩ电阻 1个
ATmega328P 芯片
Arduino Uno 开发板(用于烧录芯片)

新买的ATmega328P 芯片里面是空的,要启动它必须写入 Bootloader。此基础上就可以像Uno 一样写入程序了。为什么需要一块Uno 开发板?因为它可以化身为 ISP 烧录器,对 ATmega328P 芯片进行读写。

这是ATmega168/328P 与 Arduino Uno 的 Pin Map:

接线采用官方推荐的方式:


ATmega328P 脚位7(VCC)、20(AVCC)接5V;
ATmega328P 脚位8(GND)、22(GND)接GND;
ATmega328P 脚位19(SCK)、18(MISO)、17(MOSI)、1(Reset)分别接13、12、11、10;
ATmega328P 脚位9(XTAL1)、10(XTAL2)接石英晶振,两脚通过瓷片电容接GND;
Reset 建议接一个10K上拉电阻。

现在可以开始烧录吗?不行,要让 Arduino Uno 开发板作为烧录器,还需要对其写入“ArduinoISP”,很多教程都忽略了这一步:

点击 File -> Examples -> ArduinoISP -> ArduinoISP,然后 Upload 到 Arduino Uno 即可。

接着进行一些设定,Tools -> Board 选为 Uno。这个设定的意思是「被刻录的对象」,但我们并不是要刻录到Uno板子,因为Uno板使用的芯片跟面包板上的ATmega328P-PU相同。其实,选择Nano Pro mini 也是可疑的,因为它们也是用ATmega328P。如果是ATmega8,则选择Arduino NG or Older。

设定 Tools -> Serial Port,即Uno板连接到计算机的串行端口号。最后设定 Tools -> Programmer -> Arduino as ISP

设置完毕后,点击 Tools -> Burn Bootloader 开始烧录。 过程中会显示,Burning bootloader to I/O Board (this may take a minute)…完成后出现 Done burning bootloader. 字样,恭喜你 DIY Arduino 成功了。

怎么样给他刻录程序呢?两种方法:1、很多教程会教你,通过USB 转串口模块连接脚位2(TX)、3(RX),这样不仅要改接线,而且额外一个USB转串口模块。2、还有一种方式不用改接线,通过ISP方式上传:

选择  Sketch ->Upload Using Programmer ,与普通 upload 不同,此时 Arduino Uno 会被当作ISP 烧录器,将程序传递给 ATmega328P上。我们尝试刻录一个程序:

要注意:Arduino Uno 3号数字端口对应 ATmega328P 的脚位5。DIY 过程中熟悉 PinMap 相当重要。

Leave a Reply

Your email address will not be published. Required fields are marked *