《Arduino开发实战指南:LabVIEW卷》第1章 Arduino硬件

第1章 Arduino硬件

本章主要讲述Arduino硬件,讲述Arduino与单片机系统的关系、Arduino独有的一些特性、Arduino的开发团队及起源、Arduino所拥有的硬件资源,并详细介绍如何将Arduino连接到PC,使PC能够识别Arduino硬件。

目录

第1章 Arduino硬件

1.1 什么是Arduino

1.2 Arduino的硬件组成

1.3 连接Arduino与PC


​​​​​​​

1.1 什么是Arduino

1.1.1 Arduino与单片机

在了解Arduino之前,我们有必要先来了解一下单片机。那么,什么是单片机呢?单片机是指一个集成在一块芯片上的完整计算机系统。尽管它的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分单片机还会具有外存。同时集成诸如通信接口、定时器、实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入/输出系统集成在一块芯片上。

Arduino是单片机的最小系统,是一块基于开放源代码的USB接口的简单I/O接口板,并且具有简单易用的类似Java、C语言的IDE(集成开发环境)。Arduino可以用作独立项目开发的控制核心,也可以与PC进行直接的USB连接,完成与PC上软件的交互。Arduino电路板可以自己加工或者购买成品,开源的IDE可以免费下载。

然而,Arduino又不同于其他可以在市场上找到的单片机平台,因为它具有下述独有的特性:

·Arduino来自一个教育环境开发项目,所以非常适合新手快速地开始自己的工程项目。

·Arduino可以运行在多种平台下,支持支持Windows、Linux、Mac OS系统。

·Arduino可以通过USB端口进行编程,非常方便。

·Arduino有非常易用的IDE。

·Arduino的硬件和软件都是开源的,可以免费下载原理图、PCB图,自己购买元器件制作Arduino电路板。

·Arduino有非常大的用户群,所以可以找到非常多的资源,包括接口板卡、软件程序以及应用项目。

1.1.2 Arduino的开发团队及起源

Arduino的核心开发团队成员包括:Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis和Nicholas Zambetti。

Massimo Banzi之前是意大利伊夫雷亚(Ivrea)一家高科技设计学校的老师。他的学生们经常抱怨找不到便宜好用的微控制器。2005年冬天,Massimo Banzi跟David Cuartielles讨论了这个问题。David Cuartielles是一个西班牙籍芯片工程师,当时在这所学校做访问学者。两人决定设计自己的电路板,并邀请了Banzi的学生David Mellis为电路板设计编程语言。两天以后,David Mellis就写出了程序代码。又过了三天,电路板就完工了。这块电路板被命名为Arduino。几乎任何人,即使不懂电脑编程,也能用Arduino做出很酷的东西,比如对传感器作出回应、闪烁灯光,还能控制电动机。随后Banzi、Cuartielles和Mellis把设计图放到了网上。为了保持源码设计的开放性理念,而版权法可以监管开源软件,却很难用在硬件上,他们决定采用共享创意许可。共享创意是为保护开放版权行为而出现的类似GPL的一种许可(license)。在共享创意许可下,允许任何人生产电路板的复制品,还能重新设计,甚至销售原设计的复制品。你不需要支付版税,甚至不用取得Arduino团队的许可。然而,如果你重新发布了引用设计,你必须说明原始Arduino团队的贡献。如果你调整或改动了电路板,你的最新设计必须使用相同或类似的共享创意许可,以保证新版本的Arduino电路板也会一样的开放。唯一被保留的只有Arduino这个名字。它被注册成了商标。如果有人想用这个名字卖电路板,那他们可能必须付一点商标费用给Arduino的核心开发团队成员。

1.2 Arduino的硬件组成

Arduino硬件有很多种版本,详细介绍可参考附录A,本书以Arduino Uno R3为例进行介绍。

1.2.1 Arduino Uno概览

Arduino Uno是一个基于ATmega328单片机的开发板。它有14个数字输入/输出端口(6个端口可以作为PWM输出)、6个模拟输入端口、一个16MHz陶瓷晶振、一个USB连接端口、一个电源插座、一个ICSP编程接口(可用于SPI通信)、一个复位按钮。它包含支持单片机工作所需要的所有外围电路,是单片机的最小系统板。简单地把它用USB数据线连接到计算机,或使用交流适配器或者直流电源给它供电,它就可以工作。Arduino Uno R3实物图如图1-1所示。Arduino Uno R3的参数如表1-1所示。

图1-1 Arduino Uno R3实物图

表1-1 Arduino的总体参数

Arduino Uno是2011年9月25日在纽约创客大会(New York Maker Faire)上发布的。型号名字Uno是意大利语中“一”的意思,用来表达Arduino软件的1.0版,即Uno Punto Zero(意大利语的“1.0”)版。

Uno不同于以前的所有版本,因为它不使用FTDI USB至串行驱动芯片,而使用ATmega16U2(ATmega8U2到版本R2)作为一个USB至串行转换器。

Uno R2版本有一个下拉电阻将ATmega8U2的HWB线拉到地,使其更容易进入DFU模式。

Uno R3版本有以下一些新特性。

·引脚变化:在靠近AREF引脚的地方添加了SDA和SCL引脚,同时在Reset引脚附近添加了一个IOREF引脚和一个未连接的Reserved引脚。IOREF引脚用来给扩展板提供参考电压,使扩展板可以和5V以及3.3V的Arduino板都能够兼容。未连接的Reserved引脚用作将来的扩展。

·更稳定的复位电路。

·使用ATmega16U2代替ATmega8U2。

1.2.2 Arduino Uno供电

Arduino Uno可采用通过USB端口供电或使用外部电源供电,供电电源是自动选择的。

可以使用AC/DC适配器或者电池进行外部供电。Arduino板上有AC/DC电源适配器接口,也有供电池使用的Power端口。外部供电电压为6~20V。如果供电电压小于7V,5V引脚上的电压可能低于5V,系统可能会不稳定;如果供电电压超过12V,稳压器可能会过热并可能损坏板卡。推荐的供电电压范围是7~12V。

电源引脚如下:

·Vin,当使用外部供电的时候,该引脚为Arduino电路板的输入电压引脚。

·5V,该引脚输出Arduino板上稳压器产生的5V电压。如果给该引脚加电压,将会损坏Arduino板。

·3.3V,该引脚输出Arduino板上稳压器产生的3.3V电压,最大电流为50mA。

·GND,接地引脚。

·IOREF,这个引脚将单片机工作电压作为参考电压提供给shield板,以便shield板能够根据这个参考电压选择合适的电压源或者使能电压转换器来工作在5V或者3.3V。

1.2.3 Arduino Uno存储

ATmega328有32KB(其中0.5KB用于bootloader)存储空间。它也有2KB的SRAM和1KB的EEPROM(可以使用EEPROM Library进行读写)。

1.2.4 Arduino Uno输入及输出

Arduino Uno上14个数字I/O端口中的每一个都可以被用作输入或者输出,使用pinMode、DigitalWrite,以及digitalRead函数。它们工作在5V。每个I/O端口可以提供或者接收最大40mA的电流并有一个20~50kΩ内部上拉电阻(默认断开)。

此外,一些端口还有其他专门的功能。

·串口(Serial):0(RX)和1(TX)用于接收(RX)和发送(TX)TTL串行数据。这些引脚接到ATmega8U2(USB至串口芯片)的相应引脚上。

·外部中断:2和3,这些引脚可以配置为中断触发,在低电平、上升沿、下降沿或者数值改变的时候产生一个中断,详细功能见attachInterrupt()函数。

·PWM:3、5、6、9,提供8位PWM输出。使用analogWrite()函数产生PWM输出。

·SPI通信:10(SS)、11(MOSI)、12(MISO)、13(SCK)。这些引脚支持SPI通信,可以使用SPI library进行SPI通信。

·LED:13,有一个内置的LED与数字引脚13相连。当该引脚为高电平时,LED亮;当该引脚为低电平时,LED灭。

·Analog Input:Arduino Uno有6个模拟输入,A0~A5,每个模拟输入端口提供10位的分辨率(即1024个不同的值)。默认情况下它们测量的电压范围为0~5V,当然,测量电压范围的上限也可以通过AREF引脚来设定,并可以通过analogReference()函数使用。此外,一些模拟输入引脚有专门的功能。

·TWI:A4或者SDA、A5或者SCL。要支持TWI通信可以使用Wire Library。

·AREF:模拟输入端口的参考电压。支持使用analogReference()函数。

·Reset:将Reset置为低电平可以对单片机进行复位。通常用于给Shield板添加一个复位开关。

附录B是Arduino和ATmega328的端口映射,ATmega168和ATmega328的映射是相同的。

1.2.5 Arduino Uno通信

Arduino Uno有很多种通信方式,它可以和另一台计算机、另一个Arduino或者其他微控制器进行通信。Arduino Uno上的ATmega328可以通过数字引脚0(RX)和1(TX)进行UART TTL(5V)串行通信。Arduino板上的ATmega16U2实现通过USB端口进行串口通信,在计算机上这个端口为一个虚拟串口。ATmega16U2固件使用便携的USB COM驱动,所以不需要外部驱动。虽然不需要外部驱动,但是在Windows上需要一个*.inf文件。Arduino软件包括一个串口监听器,允许简单的文本数据被发送到Arduino电路板或者接收来自Arduino电路板的文本数据。当通过USB进行串口数据通信的时候RX和TX的LED会闪烁(通过数字引脚0和数字引脚1进行串口通信的时候LED不会闪烁)。

使用软件串口通信库(Software Serial library)可以通过Arduino Uno的任意数字端口进行串行通信。

ATmega328还支持I 2C(TWI)和SPI通信。Arduino软件包含一个Wire Library库来简化I 2C总线的使用。对于SPI通信,可以使用SPI Library库。

1.2.6 Arduino Uno自动复位

在程序下载前,除了使用手动方式通过复位按钮进行复位外,在Arduino Uno的设计中,允许和Arduino连接的计算机通过软件的方式进行复位。ATmega8U2/16U2的一个硬件流程控制线(DTR)通过一个100μF的电容连接至ATmega328的复位引脚。当这条线被拉低的时候,可以将ATmega328复位。该功能允许使用者在下载代码时,只需在Arduino IDE环境中按Upload按钮便可进行复位。

如果要禁用auto-reset功能,可以将标记为“Reset-EN”的焊接线断开;将“Reset-EN”焊接在一起,又可以重新使能auto-reset。也可以使用一个110Ω的电阻将reset连接到5V,从而禁用auto-reset。

1.2.7 Arduino Uno USB过流保护

Arduino Uno有可更换的熔丝来防止计算机的USB接口短路和过电流。虽然大多数计算机内部提供了保护,但熔丝提供了更多一层的保护。如果USB端口的电流超过500mA,熔丝会自动断开直到短路或过载问题被解决。

1.2.8 Arduino Uno的物理特性

Arduino Uno PCB的最大长度和宽度为2.7inch(英寸)和2.1inch,USB连接器和电源接口延伸到Arduino板以外。板上有四个用来固定的螺丝孔。注意,数字端口7和8的间距是160mil,而不像其他端口间距一样是100mil的整数倍。

1.2.9 Arduino Uno原理图与参考设计

Arduino参考设计可以使用ATmega8、ATmega168或ATmega328。目前的模板使用ATmega328,但在参考设计及原理图中使用的是ATmega8。不同Arduino板上的三种单片机的引脚配置都是相同的。Arduino引脚与AVR单片机引脚对应关系可参看附录B。Arduino Uno R3的原理图可参见附录C。

1.3 连接Arduino与PC

了解了Arduino的硬件结构,我们就可以进行Arduino与PC的连接了。

1)准备Arduino板及USB线。

准备好Arduino Uno R3板,并准备好USB线,如图1-2所示。

2)下载Arduino软件。

在Arduino官方网站上免费下载软件。

Arduino官方网站链接如下:http://arduino.cc/en/Main/Software。

下载完成后的安装文件如图1-3所示。

3)安装Arduino软件。

双击Arduino IDE安装文件,开始软件安装,在安装选项中默认安装Arduino software,并选择安装USB driver,如图1-4所示。安装过程如图1-5所示,安装完成界面如图1-6所示。安装完成后可以在安装目录下看到安装的文件,如图1-7所示。

图1-2 Arduino Uno R3及USB线

图1-3 Arduino IDE软件Windows版安装文件

图1-4 Arduino IDE软件安装选项

图1-5 Arduino IDE软件安装过程

图1-6 Arduino IDE软件安装完成界面

图1-7 Arduino IDE软件安装完成后的文件夹

4)将Arduino Uno通过USB线连接到计算机,自动安装驱动程序。

将Arduino Uno通过USB线连接到计算机以后,Windows会自动安装驱动程序,如图1-8所示。驱动安装完成后可以在设备管理器里面看到Arduino Uno设备以及其所使用的串行端口,如图1-9所示。

图1-8 Arduino驱动自动安装

图1-9 在设备管理器中查看Arduino设备

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值