《动手玩转Arduino》—— 第11章 认识Arduino系列 11.1 作品37:在面包板上做自己的Arduino

简介:

本节书摘来自异步社区《动手玩转Arduino》一书中的第11章,第11.1节,作者【澳】John Boxall,译者 翁恺,更多章节内容可以访问云栖社区“异步社区”公众号查看。

###第11章 认识Arduino系列

在本章,我们将:

  • 学习如何在面包板上做自己的Arduino电路;
  • 研究各种Arduino兼容板的特性和优点;
  • 学习开源硬件。

我们要把整个Arduino分解成若干个元件,然后在面包板上搭出自己的Arduino电路来。自己搭电路可以省钱,在作品和原型都在不断变化时特别有用。我们还会学习一些新的元件和电路知识。然后研究如何能不借助额外的硬件把程序上传到自己做的Arduino上去。最后,我们要尝试Arduino Uno以外的常见的版本,找出它们的不同。

11.1 作品37:在面包板上做自己的Arduino

随着作品和实验在复杂度和数量上逐渐加大,为每个任务购买Arduino板的成本很容易会失去控制,特别是当你希望同时做不止一个作品的时候。因此,如果在面包板上搭一个Arduino电路,然后再扩展来搭出整个电路,以这样的方式把Arduino板组合进整个电路,会更便宜也更方便。在面包板上把基本的Arduino电路搭出来所需的元件成本应该低于10美元,而且如果没有损坏,这些元件通常还可以再用于其他作品。如果作品需要大量外部电路,自己做会更容易,这样可以省下大量在Arduino板和面包板之间来来回回的导线。

11.1.1 元件

要做一个最小集的Arduino,需要以下的元件:

  • 一块面包板;
  • 一些导线;
  • 一个7805线性稳压器;
  • 一个16MHz晶体振荡器(比如Newark的元件编号为16C8140的晶体振荡器);
  • 一个ATmega328P-PU单片机,预先烧录了Arduino的引导装载程序;
  • 一个1μF/25V电解电容(C1);
  • 一个100μF/25V电解电容(C2);
  • 两个22pF/50V瓷片电容(C3和C4);
  • 两个100nF/50V瓷片电容(C5);
  • 两个560Ω电阻(R1和R2);
  • 一个10kΩ电阻(R3);
  • 两个任意规格的LED(LED1和LED2);
  • 一个按钮(S1);
  • 一个6位插针;
  • 一个PP3型电池扣;
  • 一个9V PP3型电池(叠层电池)。

有些元件可能你还没见过。在下面的小节里,我会解释每个元件,给你看每个元件的样子和电路图符号。

1.7805线性稳压器

线性稳压器里有一个简单的电路,能把一个电压转换成另一个。元件清单里的稳压器的型号是7805,它能把7~30V的电压转换成固定的5V,最大的电流是1A,所以用它来给面包板Arduino供电是很合适的。图11-1所示是一种TO-220封装的7805,封装是指它的外形。


screenshot

图11-2所示是7805的电路图符号。把7805标字的一面朝向自己,左边的管脚是输入电压,中间的管脚是地,而右边的管脚是5V输出。顶部的金属层钻了个孔,这样它就可以和一个更大的金属固定在一起,那片金属就成了散热器。当电流接近它的最大能力1A的时候要用散热器,因为那样使用的话,7805会变得非常热。金属层也是接在地上的。我们的电路需要一个7805稳压器。


screenshot

2.16MHz晶体振荡器

这东西一般就叫做晶振,晶体振荡器能产生非常准确频率上的电信号。这里用的频率是16MHz,图11-3所示是我们要用的晶振的样子。


screenshot

和你的Arduino板上的晶振比较一下,它们的形状和尺寸应该都是相同的。

晶振是没有极性的,它的电路图符号如图11-4所示。

晶振决定了单片机的运行速度。比如,我们要组装的单片机电路运行在16MHz,意思是它每秒能执行1600万条处理器指令。不过,这并不是说它能那么快地运行一行程序或是一个函数,因为一行代码要用很多处理器指令来执行。


screenshot

3.Atmel ATmega328-PU单片机集成电路

单片机是一台微型计算机,里面有执行指令的处理器、不同类型的存放数据和程序指令的存储器,还能以各种方式收发数据。第2章讲到,单片机是面包板Arduino的大脑。图11-5所示就是一片ATmega328P。图中这样的集成电路的1脚,是在集成电路的左下角,标着一个小点的那个脚。


screenshot

这个单片机的电路图符号如图11-6所示。


screenshot

Arduino引导装载程序是一个软件,能将程序写入Arduino,不是所有的单片机芯片都有这样的引导装载程序的。自己做Arduino的时候,要购买已经烧录了引导装载程序的芯片。一般卖Arduino板的店家也会卖这样的芯片,比如adafruit、Freetronics和SparkFun。

11.1.2 电路图

图11-7所示是电路图。


screenshot

这个电路图由两个部分组成。首先,左边是电源部分,能把电压降到稳压的5V。当有电的时候,一个LED就会亮。右边的部分,包括单片机、重启按钮、编程引脚和另一个LED。这个LED接到ATmega328上用在Arduino引脚13的那个管脚上。按照这个电路图接好Arduino。别忘了接线到那个6位插针(见图11-8),这个6位插座就是电路图中底部的6个圆圈。本章后面我们会用这个插针来上传程序到自己做的Arduino。


screenshot

这个电路只是用一个9V电池和对应的电池扣供电,如图11-9所示。左边电路的正极(+)接电池扣的红色线,而负极(−)接黑色线。

)

![screenshot](https://yqfile.alicdn.com/75a1e651f4f5a3246ceeea7b56be81e8b9d6f060.png

在自制的Arduino上,那些Arduino的引脚在哪里?普通Arduino板上有的那些模拟、数字和其他用途的引脚在我们的面包板版本上也都是有的,只要直接接到单片机上就行。

在面包板Arduino上,R2和LED2是接在数字引脚13上的。表11-1的左边列出了Arduino引脚,而右边是对应的ATmega328的管脚。


screenshot


screenshot

为避免混淆,像adafruit和Freetronics这样的厂家卖一种贴在单片机芯片上的不干胶标签,如图11-10所示的这个单片机(在http://www.freetronics.com/mculabel/ 可以购买)。


screenshot

11.1.3 运行测试程序

现在可以上传一个程序了。我们用一个简单的闪烁LED的程序开始。

// 作品37 - 做自己的面包板Arduino 

void setup() 
{         
 pinMode(13, OUTPUT);   
} 

void loop() 
{ 
 digitalWrite(13, HIGH); 
 delay(1000);      
 digitalWrite(13, LOW); 
 delay(1000);      
} 

有3种方法上传这个程序。

1.用交换单片机的方法

上传程序最便宜的方法,是把已有的Arduino里的单片机拔出来,插上我们自制的Arduino里的单片机,上传程序,然后再插回自制的Arduino里。

要从Arduino里安全地拔出单片机,要用到集成电路拔取钳,如图11-11所示。


screenshot

在拔出单片机的时候,要保证慢慢地同时均衡地拔两端,别心急。拔出来可能不那么容易,但是最终单片机会出来的。

把单片机插进面包板或Arduino的时候,可能先得把管脚稍微向内弯一下,这样就能比较容易插进去。为此,把芯片的一边放在一个平面上,小心地按下,然后重复另一边,如图11-12所示。


screenshot

最后,把原来的单片机插回到Arduino板的时候,要注意有标记的那端应该在右侧,如图11-13所示。


screenshot

2.连接到另一块Arduino板

我们可以用Arduino Uno的USB接口上传程序给面包板上的Arduino的单片机。用这个方法既不会磨损Arduino板上的集成电路插座,又可以省钱,因为不需要另外购买USB编程线了。

以下是使用Arduino板的USB接口电路给另一块单片机上传程序的步骤。

(1)拔掉USB线,取下单片机芯片。

(2)断开面包板Arduino电路的电源。

(3)从Arduino的数字引脚0接一根线到面包板上的ATmega328P的管脚2,另一根线从Arduino的数字引脚1接到ATmega328的管脚3。

(4)把Uno的5V和GND接到面包板上对应的地方。

(5)从Arduino的RST接一根线到ATmega328的管脚1。

(6)给Arduino Uno板插上USB线。

这样,这个系统就好像是一个普通的Arduino Uno一样,我们就可以正常地把程序上传到面包板电路去了,需要的时候也可以使用串口监视器。

3.用FTDI编程线

最后的方法也是最简单的,但是需要购买一根USB编程线,叫做FTDI线(这个名字是因为里面用的接口电路的芯片是一家叫做FTDI的公司生产的)。在购买FTDI线的时候,要确认是5V型号的,因为3.3V型号的不能正常工作。这种线(见图11-14)的一头有一个USB插头,另一头是6线的插头。线的USB那头有等价于Arduino Uno板上的USB接口的电路。6线的插头是连到图11-7和图11-8所示的插针那里的。


screenshot

连接这根线的时候,要确保插头的黑线这边插在面包板的插针的GND上。一旦这根线接好,它也会给电路供电,就像普通的Arduino板子一样。

在上传程序或使用串口监视器之前,要选择Tool -> Board确定板子类型为“Arduino Duemilanove”或“Nano(ATMega328)”,然后选择正确的单片机型号(见图11-15)。

一旦选择了一种上传的方法,就上传作品37的程序来做测试。现在,我们应该可以只用一块面包板来设计更复杂的电路了,这样我们能用更少的钱做出更多的作品来。如果学会了如何做自己的印刷电路板,甚至可以做出更长久的作品来。


screenshot

相关文章
|
边缘计算 算法 安全
CDN百科第五讲 | CDN和游戏加速器有什么区别?
很多懂IT的游戏玩家都会将CDN和游戏加速器混淆,实际上从效果上看,CDN和网游加速器都具备让网络访问变快的能力,可以帮助玩家游戏的体验和访问效率提升,但是在它们在原理上是有本质区别的,本期CDN百科为你解答。
3246 0
CDN百科第五讲 | CDN和游戏加速器有什么区别?
|
10月前
|
SQL 数据挖掘 Serverless
手把手进行数据分析,解锁游戏行为画像
本文介绍了一套利用阿里云E-MapReduce StarRocks版进行游戏玩家画像和行为分析的完整流程,旨在帮助开发者构建高性能、低成本的游戏数据分析平台。
330 11
|
11月前
|
SQL 存储 数据挖掘
快速入门:利用AnalyticDB构建实时数据分析平台
【10月更文挑战第22天】在大数据时代,实时数据分析成为了企业和开发者们关注的焦点。传统的数据仓库和分析工具往往无法满足实时性要求,而AnalyticDB(ADB)作为阿里巴巴推出的一款实时数据仓库服务,凭借其强大的实时处理能力和易用性,成为了众多企业的首选。作为一名数据分析师,我将在本文中分享如何快速入门AnalyticDB,帮助初学者在短时间内掌握使用AnalyticDB进行简单数据分析的能力。
440 2
|
12月前
|
安全 NoSQL Linux
常见的wa矿木马
常见的挖矿木马
183 2
|
Linux Windows 网络安全
阿里云服务器如何上传下载文件
1、链接到公网ip 2、使用rz、sz语法进行上传、下载   如果没有rz、sz,则给服务器里安装这两个包 yum install lrzsz 安装完毕即可使用rz,sz是便是Linux/Unix同Windows进行ZModem文件传输的命令行工具。
7731 1
|
人工智能 测试技术 人机交互
深入浅出智能工作流(Agentic Workflow)|技术干货
著名AI学者、斯坦福大学教授吴恩达提出AI Agent的四种设计方式后,Agentic Workflow(智能体工作流)在全球范围内迅速走红,多个行业纷纷实践其应用,并推动了新的Agentic AI探索热潮。吴恩达总结了Agent设计的四种模式:自我反思、工具调用、规划设计及多智能体协作。前两者较普及,后两者则为智能体使用模式从单一大模型向多智能体协同配合完成业务流程的转变奠定了基础。
5488 3
|
机器学习/深度学习 人工智能 自然语言处理
Python转换Excel到Markdown
Python转换Excel到Markdown
350 0
|
存储 Kubernetes 对象存储
阿里云对象存储服务(OSS)
阿里云对象存储服务(OSS)是一个用于存储和访问任意类型和数量数据的云服务。在配置 OSS 访问时,需要提供 Bucket 的 Endpoint 信息,这个信息包括公网地址和私网地址。
1325 1
|
存储 算法 Java
“JDK简介:探索Java开发的核心工具包“
Java编译器(javac):JDK包含了Java编译器,可以将Java源代码编译为Java字节码。通过编译器,开发人员可以将Java源代码转换为可在JVM上运行的字节码文件。 核心类库(Core Libraries):JDK提供了丰富的核心类库,其中包含了常用的类和接口,用于处理字符串、集合、IO、网络通信等各种操作。开发人员可以利用这些类库来构建功能丰富的Java应用程序。 调试工具(Debugging Tools):JDK提供了一系列的调试工具,例如Java命令行调试器(jdb)、Java虚拟机调试接口(JVMTI)和Java VisualVM等。这些工具可以帮助开发人员查找和修复Jav
427 0
|
负载均衡 应用服务中间件 nginx
Nginx之upstream被动式重试机制解读z
Nginx之upstream被动式重试机制解读z