- Arduino程序设计实例教程
- 芦关山 王绍锋主编
- 4121字
- 2021-04-03 11:01:06
第1章 概述
1.1 Arduino简介
Arduino是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。它适用于艺术家、设计师、爱好者和对于“互动”有兴趣的朋友们。Arduino能通过各种各样的传感器来感知环境,通过控制灯光、电动机和其他的装置来反馈、影响环境。下面就让我们学习以下几个较典型的开发板。
1.1.1 Arduino Uno
Arduino Uno是Arduino USB接口系列的最新版本,作为Arduino平台的参考标准模板,如图1-1所示。Uno的处理器核心是ATmega328,同时具有14路数字输入/输出口(其中6路可作为PWM输出)、6路模拟输入、一个16MHz晶体振荡器、一个USB接口、一个电源插座、一个ICSP header和一个复位按钮。目前已经发布Uno第三版,第三版与前两版相比有以下特点:在AREF处增加了两个管脚SDA和SCL,支持I2C接口;增加IOREF和一个预留管脚,将来扩展板将能兼容5V和3.3V核心板。改进了复位电路设计,USB接口芯片由ATmega16U2替代了ATmega8U2。
1.主要特征
(1)处理器:ATmega 328。
(2)工作电压:5V。
(3)输入电压(推荐):7~12V。
(4)输入电压(范围):6~20V。
(5)数字I/O引脚:14路(其中6路作为PWM输出)。(6)模拟输入引脚:6个。
(7)I/O引脚直流电流:40mA。
(8)3.3V引脚直流电流:50mA。
图1-1 Arduino Uno实物图
2.引脚说明
(1)14路数字输入/输出口:工作电压为5V,每一路能输出和接入最大电流为40mA。每一路配置了20kΩ~50kΩ内部上拉电阻(默认不连接)。除此之外,有些引脚有特定的功能。
(2)串口信号RX(0号)、TX(1号):与内部ATmega8U2 USB-to-TTL芯片相连,提供TTL电压水平的串口接收信号。
(3)外部中断(2号和3号):触发中断引脚,可设成上升沿、下降沿或同时触发。
(4)脉冲宽度调制PWM(3、5、6、9、10、11):提供6路8位PWM输出。
(5)SPI(10(SS),11(MOSI),12(MISO),13(SCK)):SPI通信接口。
(6)LED(13号):Arduino专门用于测试LED的保留接口,输出为高时点亮LED,反之输出为低时LED熄灭。
(7)A0~A5:6路模拟输入,每一路具有10位的分辨率(即输入有1024个不同值),默认输入信号范围为0~5V,可以通过AREF调整输入上限。除此之外,有些引脚有特定功能。
(8)TWI接口(SDA A4和SCL A5):支持通信接口(兼容I2C总线)。
(9)AREF:模拟输入信号的参考电压。
(10)RESET:信号为低时复位单片机芯片。
上述特征和引脚可用图1-2概述。
图1-2 Arduino原理图
1.1.2 Arduino Mega 2560
Arduino Mega 2560是采用USB接口的核心电路板,具有54路数字输入/输出,适合需要大量I/O接口的设计,如图1-3所示。处理器核心是ATmega 2560,同时具有54路数字输入∕输出口(其中16路可作为PWM输出)、16路模拟输入、4路UART接口、一个16MHz晶体振荡器、一个USB接口、一个电源插座、一个ICSP header和一个复位按钮。Arduino Mega 2560也能兼容为Arduino Uno设计的扩展板。目前,Arduino Mega 2560发布了第三版,第三版的特点如下。
(1)在AREF处增加了两个管脚SDA和SCL。
(2)支持I2C接口。
(3)增加IOREF和一个预留管脚,将来扩展板能兼容5V和3.3V核心板。改进了复位电路设计。
(4)USB接口芯片由ATmega16U2替代了ATmega8U2。
(5)Arduino Mega 2560可以通过3种方式供电,而且能自动选择供电方式。
(6)外部直流电源通过电源插座供电。
(7)电池连接电源连接器的GND和VIN引脚。
(8)USB接口直接供电。
图1-3 Arduino Mega 2560实物图
1.电源引脚说明
(1)VIN:当外部直流电源接入电源插座时,可以通过VIN向外部供电,也可以通过此引脚向Mega 2560直接供电。VIN有电时将忽略从USB或者其他引脚接入的电源。
(2)5V:通过稳压器或USB的5V电压,为Uno上的5V芯片供电。
(3)3.3V:通过稳压器产生的3.3V电压,最大驱动电流50mA。
(4)GND:地脚。
2.输入∕输出
(1)14路数字输入∕输出口:工作电压为5V,每一路能通过的最大电流为40mA。每一路配置了20kΩ~50kΩ内部上拉电阻。
除此之外,有些引脚有特定的功能。
·4路串口信号:串口0~0(RX)和1(TX);串口1~19(RX)和18(TX);串口2~17(RX)和16(TX);串口3~15(RX)和14(TX)。其中串口0与内部ATmega8U2 USB-to-TTL芯片相连,提供TTL电压水平的串口接收信号。
·6路外部中断:2(中断0),3(中断1),18(中断5),19(中断),20(中断3),21(中断2)。触发中断引脚,可设成上升沿、下降沿或同时触发。
·14路脉冲宽度调制PWM(0~13):提供14路8位PWM输出。
·SPI[53(SS),51(主机输出从机输入,MOSI),50(主机输入从机输出,MISO),52(SCK)]:SPI通信接口。
·LED(13号):Arduino专门用于测试LED的保留接口,输出为高时点亮LED,反之输出为低时LED熄灭。
(2)16路模拟输入:每一路具有10位的分辨率(即输入有1024个不同值),默认输入信号范围为0~5V,可以通过AREF调整输入上限。
除此之外,有些引脚有特定功能,比如TWI接口(20(SDA)和21(SCL))支持通信接口(兼容I2C总线)。
(3)AREF:模拟输入信号的参考电压。
(4)RESET:信号为低时复位单片机芯片。
综上,Arduino Mega 2560的构造原理图如图1-4所示。
图1-4 Arduino Mega 2560原理图
1.1.3 Arduino Nano
Arduino Nano是Arduino USB接口的微型版本,最大的不同是没有电源插座且USB接口是Mini-B型插座,如图1-5所示。Arduino Nano的尺寸极小,而且可以插在面包板上使用,其处理器核心是Atmega 168(Nano2.x)和Atmega 328(Nano3.0),同时具有14路数字输入∕输出口(其中6路可作为PWM输出)、8路模拟输入、一个16MHz晶体振荡器、一个Mini-B USB接口、一个ICSP header和一个复位按钮。
图1-5 Arduino Nano实物图
1.主要特征
·处理器:Atmega 168或Atmega 328。
·工作电压:5V输入电压(推荐);7~12V输入电压(范围)。
·数字I/O引脚:14路(其中6路作为PWM输出)。
·模拟输入引脚:6个。
·I/O引脚直流电流:40 mA。
·Flash Memory 16KB或者32KB(其中2KB用于引导程序)。
·SRAM 1 KB或者2KB。
·EEPROM 0.5 KB或者1KB(ATmega328)。
·FT232RL FTDI USB接口芯片。
·工作时钟:16 MHz。
2.电源
·Arduino Nano供电方式。
·Mini-B USB接口供电。
·pin27+5V接外部直流5V电源。
注意:只有通过USB接口供电时FT232RL才工作。
3.输入∕输出
14路数字输入∕输出口的工作电压为5V,每一路能通过的最大电流为40mA。每一路配置了20kΩ~50kΩ内部上拉电阻(默认不连接)。除此之外,有些引脚有特定的功能。
·串口信号RX(0号)、TX(1号):提供TTL电压水平的串口接收信号与FT232Rl所相应的引脚相连。
·外部中断(2号和3号):触发中断引脚,可设成上升沿、下降沿或同时触发。
·脉冲宽度调制PWM(3、5、6、9、10、11):提供6路8位PWM输出。
·SPI(10(SS),11(MOSI),12(MISO),13(SCK)):SPI通信接口。
·LED(13号):Arduino专门用于测试LED的保留接口,输出为高时点亮LED,反之输出为低时LED熄灭。
·6路模拟输入A0~A5:每一路具有10位的分辨率(即输入有1024个不同值),默认输入信号范围为0~5V,可以通过AREF调整输入上限。除此之外,有些引脚有特定功能。
·TWI接口(SDA A4和SCL A5):支持通信接口(兼容I2C总线)。
·AREF:模拟输入信号的参考电压。
·RESET:信号为低时复位单片机芯片。
综上,Arduino Nano原理图如图1-6所示。
图1-6 Arduino Nano原理图
1.1.4 Arduino Leonardo
Arduino Leonardo是基于ATmega32U4的一个微控制器板。它有20个数字输入/输出引脚(其中7个可用于PWM输出、12个可用于模拟输入)、一个16 MHz的晶体振荡器、一个Micro USB接口、一个DC接口、一个ICSP接口以及一个复位按钮,如图1-7所示。它包含了支持微控制器所需的一切,可以简单地通过连接到计算机的USB接口,或者使用AC-DC适配器,或者用电池来驱动它。
Leonardo不同于之前所有的Arduino控制器,它直接使用了ATmega32U4的USB通信功能,取消了USB转UART芯片。这使得Leonardo不仅可以作为一个虚拟的(CDC)串行/COM端口,还可以作为鼠标或者键盘连接到计算机。
图1-7 Arduino Leonardo实物图
1.主要特征
·微控制器:ATmega32U4。
·工作电压:5V。
·输入电压(推荐):7~12V。
·输入电压(限制):6~20V。
·数字I/O引脚:20。
·PWM通道:7。
·模拟输入引脚:12。
·每个I/O直流输出能力:40mA。
·3.3V端口输出能力:50mA。
·Flash:32 KB(ATmega32U4),其中4KB由引导程序使用。
·SRAM:2.5 KB(ATmega32U4)。
·EEPROM:1 KB(ATmega32U4)。
·时钟速度:16MHz。
2.输入∕输出
通过使用pinMode()、digitalWrite()和digitalRead()函数,Leonardo上的20个I/O引脚中的每一个都可以作为输入⁄输出端口。每个引脚都有一个20kΩ~50kΩ的内部上拉电阻(默认断开),可以通过最大40mA的电流。此外,部分引脚还有专用功能。
·UART:0(RX)和1(TX)使用ATmega32U4硬件串口,用于接收(RX)和发送(TX)的TTL串行数据。需要注意的是,Leonardo的Serial类是指USB(CDC)的通信,而引脚0和1的TTL串口使用Serial1类。
·TWI:2(SDA)和3(SCL)通过使用Wire库来支持TWI通信。外部中断为2和3,这些引脚可以被配置。
·PWM:(3、5、6、9、10、11、13)能使用analogWrite()函数支持8位的PWM输出。SPI:ICSP引脚。能通过使用SPI库支持SPI通信。需要注意的是,SPI引脚没有像Uno连接到任何的数字I/O引脚上,它们只能在ICSP端口上工作。这意味着,如果扩展板没有连接6脚的ICSP引脚,那它将无法工作。
·LED(13):有一个内置的LED在数字引脚13上,当引脚是高电平时,LED点亮,引脚为低电平时,LED不亮。
·模拟输入:A0~A5,A6~A11(数字引脚4,6,8,9,10,12),Leonardo有12个模拟输入,A0~A11,都可以作为数字I/O口。引脚A0~A5的位置与Uno相同;A6~A11分别是数字I/O引脚4,6,8,9,10和12。每个模拟输入都有10位分辨率(即1024个不同的值)。默认情况下,模拟输入量为0~5V,也可以通过AREF引脚改变这个上限。
·AREF:模拟输入信号参考电压通过analogReference()函数。
综上,Arduino leonardo的原理图如图1-8所示。
图1-8 Arduino Leonardo原理图
1.1.5 Arduino扩展板
Arduino扩展板通常具有和Arduino开发板一样的引脚位置,可以堆叠接插到Arduino上,进而实现特定功能的扩展。Arduino有许多扩展板,其中较典型的是Proto Shield原型扩展板、GPRS Shield扩展板、Arduino Ethernet W5100 R3 Shield网络扩展板、WizFi210扩展板、Arduino L298N电机驱动扩展板、Arduino传感器扩展板等。由于扩展板非常多,所以我们下面就从中选取Arduino传感器扩展板进行简单介绍。
在面包板上接插元件固然方便,但需要有一定的电子知识来搭建各种电路。而使用传感器扩展板,只需要用通过连接线,把各种元件接插到扩展板上即可。使用传感器扩展板,可以更快速地搭建出所需的项目传感器扩展板,如图1-9所示。它是最常用的Arduino外围硬件之一。
在扩展板上,数字引脚和模拟输入引脚边有红黑两排排针,以“+”“−”标示,其中,“+”表示VCC,“−”表示GND。在一些厂家的扩展板上,VCC和GND可能也会以“V”“G”标示。
图1-9 传感器扩展板
通常我们习惯用红色代表电源(VCC),黑色代表地(GND),其他颜色代表信号(Signal),如图1-10所示。传感器与扩展板间的连接线也是这样。
如图1-11所示,在使用其他模块时,只需要对应颜色,将模块插到相应的引脚即可使用。
图1-10 引脚图
图1-11 连接实物图
扩展板如图1-12所示,其L298电机驱动芯片可以驱动两路直流电机,常用于制作Arduino智能小车。
网络扩展板如图1-13所示,其基于Wiznet W5100设计,使用它即可让Genuino 101接入网络,进而访问互联网上的数据,或与远程服务器通信。
图1-12 扩展板
图1-13 网络扩展板
原型扩展板如图1-14所示,可以在其上焊接搭建电路,实现需要的特定功能。
图1-14 原型扩展板