本专栏内容经修订后,已在豆瓣阅读集结成书出版:

https://read.douban.com/ebook/106875966/​read.douban.com

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

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

我们选用Arduino 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上。我们尝试刻录一个程序:

/*作者:Ardui.co效果:DIY Arduino 呼吸灯版本:1.0更新时间:2017年3月4日
*/int led = 3; // 对应 ATmega328P 脚位5
int brightness = 0;
int fadeAmount = 5;
void setup() {pinMode(led, OUTPUT);
}void loop() {analogWrite(led, brightness);brightness = brightness + fadeAmount;if (brightness <= 0 || brightness >= 255) {fadeAmount = -fadeAmount;}delay(30);
}

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

nanopc t3开发板系统烧录_基础教程18 定制 Arduino 系统相关推荐

  1. 全志T3开发板——嵌入式入门学习测试教程(4)

    本文主要为嵌入式入门开发者的接口.网口等板卡基础快速测试,当初级学习的开发者拿到板卡,如何在最快时间内测试板卡正常?,接下来是等是否正常.继续测试教程(3)的测试板卡的SATA接口.USB接口读写.U ...

  2. 全志T3开发板——嵌入式入门学习测试教程(7)

    本文主要为嵌入式入门开发者的接口.网口等板卡基础快速测试,当初级学习的开发者拿到板卡,如何在最快时间内测试板卡正常?,继续测试教程(5)的看门狗测试.网络接口(RGMII ETH.RGMII ETH) ...

  3. 全志T3开发板——嵌入式入门学习测试教程(6)

    本文主要为嵌入式入门开发者的接口.网口等板卡基础快速测试,当初级学习的开发者拿到板卡,如何在最快时间内测试板卡正常?,继续测试教程(5)的看门狗测试.网络接口(RGMII ETH.RGMII ETH) ...

  4. 【北京迅为】《iTOP-3568开发板快速测试手册》第4章 Buildroot系统功能测试(2)

    瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器.RK3568 支持4K 解码和 1080P 编 ...

  5. 《iTOP-3568开发板快速测试手册》第7章 Yocto系统外设功能测试(1)

    瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器.RK3568 支持4K 解码和 1080P 编 ...

  6. A40i T3开发板外扩接口的功能测试

    A40i T3 开发板功能测试 硬件平台:飞凌嵌入式OKA40i-C/OKT3-C开发板, 基于国产芯片 A40i(工业级) T3(车规级)设计研发. 此章节主要说明A40i T3开发板外扩接口的使用 ...

  7. 【北京迅为】《iTOP-3568开发板快速测试手册》-第2章 Android11系统功能测试

    瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器.RK3568 支持4K 解码和 1080P 编 ...

  8. 【北京迅为】《iTOP-3568开发板快速测试手册》第4章 Buildroot系统功能测试(3)

    瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器.RK3568 支持4K 解码和 1080P 编 ...

  9. 《iTOP-3568开发板快速测试手册》第6章 Ubuntu系统功能测试 (5)

    瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器.RK3568 支持4K 解码和 1080P 编 ...

  10. linux开发板 pc 通讯_从51单片机到Linux 开发板运行hello world(教程4)

    大家好,我是兔子. 是一个嵌入式软硬件工程师. 正在从单片机开发转岗Linux开发. 这次教大家如何在Linux开发板上运行可执行文件. 简单起见,不涉及到硬件.直接和教程2一样,能在PC虚拟机上运行 ...

最新文章

  1. Web常用函数介绍(LoadRunner相关)
  2. linux 下串口编程VTIME和VMIN的设置
  3. android WIFI信息获取
  4. Java面试题整理,java常用排序算法图解
  5. NeurIPS 2018 中的贝叶斯研究
  6. 8.9 NOIP模拟测试15 建设城市(city)+轰炸行动(bomb)+石头剪刀布(rps)
  7. qt如何把父窗口的变量传给子窗口_子窗体显示的时候怎么让父窗体阻塞并且子窗体可以任意移动?...
  8. Android LowMemoryKiller ADJ原理
  9. 安全应急响应工作中易犯的5大错误
  10. Atitit 前端 dom 的艺术 attilax著 目录 1. 概念 1 2. 发展历程 1 2.1. 厂商各自为政 2 2.2. 1.4 制定标准 标准化 w3cdom 2 2.3. 1.4.
  11. 300.最长上升子序列
  12. python怎么导入sql数据库_如何用Python3写一段将Excel数据导入SQL数据库?
  13. Eclipse离线安装包下载地址
  14. oracle根据身份证计算年龄的方法
  15. 756526-00-8,Cbz-N-amido-PEG4-acid末端羧酸可在活化剂(如EDC或HATU)存在下与伯胺基反应
  16. MySQL闪回工具之my2sql
  17. 操盘手“本来生活”,这样把“褚橙”卖成“励志橙”
  18. 后羿采集器怎么导出数据_数据采集教程_智能模式_如何设置自动导出_后羿采集器...
  19. WIFI 认证加密模式介绍
  20. 晴园直播(全球直播)订阅源+轻站+海阔小程序

热门文章

  1. C++ STL 学习 :for_each与仿函数(functor)
  2. Tomcat中的servlet配置理解
  3. c++大作业--学籍管理系统--
  4. svn服务端及客户端搭建和使用(一)
  5. 让你认识Android 开发简介及应用程序架构示例
  6. php导入csv文件,PHP实现CSV文件的导入和导出类
  7. java打印等腰三角形_为什么大家都说Java中只有值传递?
  8. SQL中 and or in的用法
  9. Linux执行composer出现killed问题解决
  10. 对图像进行各种滤波的编程思路