1.2 Arduino开源硬件
本节主要介绍Arduino开源硬件的各种开发板和扩展板的使用方法、Arduino开发板的特性以及Arduino开源硬件的总体情况,以便更好地应用Arduino开源硬件进行开发创作。
1.2.1 Arduino开发板
Arduino开发板是基于开放原始代码的Simple I/O平台,并且使用类似Java、C/C++语言的开发环境,可以快速使用Arduino语言与Flash或Processing软件,完成各种创新的作品。Arduino开发板可以使用各种电子元件,如各种传感器、显示设备、通信设备、控制设备或其他可用设备。
Arduino开发板也可以独立使用,成为与其他软件沟通的平台,如Flash、Processing、Max/MSP、VVVV或其他互动软件。Arduino的开发板种类有很多,包括Arduino UNO、YUN、DUE、Leonardo、Tre、Zero、Micro、Esplora、MEGA、Mini、NANO、Fio、Pro以及LilyPad Arduino。随着开源硬件的发展,将会出现更多的开源产品。下面介绍几种典型的Arduino开发板。
Arduino UNO是Arduino USB接口系列的常用版本,是Arduino平台的参考标准模板,如图1-1所示。Arduino UNO的处理器核心是ATmega328,具有14路数字输入/输出接口(其中6路可作为PWM输出)、6路模拟输入接口、1个16MHz晶体振荡器、1个USB口、1个电源插座、1个ICSP插头和1个复位按钮。
如图1-2所示,Arduino YUN是一款基于ATmega32U4和Atheros AR9331的单片机开发板。Atheros AR9331可以运行基于Linux和OpenWRT的操作系统Linino。这款单片机开发板具有内置的Ethernet、WiFi、1个USB接口、1个Micro插槽、20个数字输入/输出接口(其中7个可以用于PWM、12个可以用于ADC)、1个Micro USB、1个ICSP插头和3个复位开关。
图1-1 Arduino UNO
图1-2 Arduino YUN
如图1-3所示,Arduino DUE是一块基于Atmel SAM3X8E CPU的微控制器板。它是第一块基于32位ARM核心的Arduino开发板,有54个数字输入/输出接口(其中12个可用于PWM输出)、12个模拟输入口、4路UART硬件串口、84 MHz的时钟频率、1个USB OTG接口、2路DAC(模数转换)、2路TWI、1个电源插座、1个SPI接口、1个JTAG接口、1个复位按键和1个擦写按键。
如图1-4所示,Arduino MEGA 2560也是采用USB接口的核心电路板,它最大的特点就是具有多达54路数字输入/输出接口,特别适合需要大量输入/输出接口的设计。MEGA 2560的处理器核心是ATmega2560,具有54路数字输入/输出接口(其中16路可作为PWM输出)、16路模拟输入、4路UART接口、1个16MHz晶体振荡器、1个USB口、1个电源插座、1个ICSP插头和1个复位按钮。Arduino MEGA 2560也能兼容为Arduino UNO设计的扩展板。目前,Arduino MEGA 2560已经发布到第三版,与前两版相比有以下新的特点:
图1-3 Arduino DUE
图1-4 Arduino MEGA 2560
(1)在AREF处增加了两个引脚SDA和SCL,支持I2C接口;增加IOREF和1个预留引脚,以便将来扩展板能够兼容5V和3.3V核心板;改进了复位电路设计;USB接口芯片由ATmega16U2替代了ATmega8U2。
(2)第三版可以通过3种方式供电:外部直流电源通过电源插座供电、电池连接电源连接器的GND和VIN引脚供电、USB接口直接供电。而且,它能自动选择供电方式。
电源引脚说明如下:
(1)VIN:当外部直流电源接入电源插座时,可以通过VIN向外部供电,也可以通过此引脚向MEGA 2560直接供电;VIN供电时将忽略从USB或者其他引脚接入的电源。
(2)5V:通过稳压器或USB的5V电压,为MEGA 2560上的5V芯片供电。
(3)3.3V:通过稳压器产生的3.3V电压,最大驱动电流为50mA。
(4)GND:接地引脚。
如图1-5所示,Arduino Leonardo是一款基于ATmega32U4的微控制器板。它有20个数字输入/输出引脚(其中7个可用作PWM输出、12个可用作模拟输入)、1个16 MHz晶体振荡器、1个Micro USB连接、1个电源插座、1个ICSP头和1个复位按钮。它具有支持微控制器所需的一切功能,只需通过USB电缆将其连至计算机,或者通过电源适配器、电池为其供电即可使用。
Leonardo与先前的所有电路板都不同,ATmega32U4具有内置式USB通信,从而无须二级处理器。这样,除了虚拟(CDC)串行/通信端口,Leonardo还可以充当计算机的鼠标和键盘,它对电路板的性能也会产生影响。
如图1-6所示,Arduino Ethernet是一款基于ATmega328的微控制器板。它有14个数字输入/输出引脚、6个模拟输入、1个16 MHz晶体振荡器、1个RJ45连接、1个电源插座、1个ICSP头和1个复位按钮。引脚10、11、12和13只能用于连接以太网模块,不能作他用。可用引脚只有9个,其中4个可用作PWM输出。
图1-5 Arduino Leonardo
图1-6 Arduino Ethernet
Arduino Ethernet没有板载USB转串口驱动器芯片,但是有1个Wiznet以太网接口,该接口与以太网盾上的相同。板载microSD读卡器可用于存储文件,能够通过SD库进行访问。引脚10留作Wiznet接口,SD卡的SS在引脚4上。6引脚串行编程头与USB串口适配器兼容,与FTDI USB电缆或Sparkfun和Adafruit FTDI式基本USB转串口分线板也兼容。它支持自动复位,从而无须按下电路板上的复位按钮即可上传程序代码。当插入USB转串口适配器时,Arduino Ethernet由适配器供电。
图1-7 Arduino Robot
Arduino Robot是一款有轮子的Arduino开发板,如图1-7所示。Arduino Robot有控制板和电机板,每个电路板上有1个处理器,共2个处理器。电机板控制电机,控制板读取传感器的数据并决定如何操作。每个电路板都是完整的Arduino开发板,用Arduino IDE进行编程。直流电机板和控制板都是基于ATmega32U4的微控制器板。Arduino Robot将它的一些引脚映射到板载的传感器和制动器上。
Arduino Robot编程的步骤与Arduino Leonardo类似,2个处理器都有内置式USB通信,无须二级处理器,可以充当计算机的虚拟(CDC)串行/通信端口。Arduino Robot有一系列预焊接连接器,所有连接器都标注在电路板上,通过Arduino Robot库映射到指定的端口上,从而可使用标准Arduino函数。在5V电压下,每个引脚都可以提供或接收最高40mA的电流。
图1-8 Arduino NANO
如图1-8所示,Arduino NANO是一款小巧、全面、基于ATmega 328的开发板,与Arduino Duemilanove的功能类似,但封装不同,没有DC电源插座且采用Mini-B USB电缆。NANO上的14个数字引脚都可用作输入或输出,利用pinMode()、digitalWrite()和digitalRead()函数可以对它们操作。工作电压为5V,每个引脚都可以提供或接收最高40mA的电流,都有1个20~50kΩ的内部上拉电阻器(默认情况下断开)。NANO有8个模拟输入,每个模拟输入都提供10位的分辨率(即1024个不同的数值)。默认情况下,它们的电压为0~5V,可以利用analogReference()函数改变其电压范围的上限值。模拟引脚6和7不能用作数字引脚。
1.2.2 Arduino扩展板
在Arduino开源硬件系列中,除了主要开发板之外,还有与之配合使用的各种扩展板,可以插到开发板上增加额外的功能。选择适合的扩展板,可以增强系统开发的功能。常见的扩展板有Arduino Ethernet Shield、Arduino GSM Shield、Arduino Motor Shield、Arduino 9 Axes Motion Shield等。
Arduino Ethernet Shield(以太网盾)如图1-9所示,有1个标准的有线RJ45连接,具有集成式线路变压器和以太网供电功能,可将Arduino开发板连接到互联网。它基于Wiznet W5500以太网芯片,提供网络(IP)堆栈,支持TCP和UDP协议,可以同时支持8个套接字连接,使用以太网库写入程序代码。
以太网盾板利用贯穿盾板的长绕线排与Arduino开发板连接,保持引脚布局完整无缺,以便其他盾板可以堆叠在其上。它有1个板载micro-SD卡槽,可用于存储文件,且与Arduino UNO和MEGA兼容,可通过SD库访问板载micro-SD读卡器。以太网盾板带有1个供电(PoE)模块,可从传统的5类电缆获取电力。
Arduino GSM Shield如图1-10所示,为了连接蜂窝网络,电路板需要一张由网络运营商提供的SIM卡。它通过移动通信网将Arduino开发板连接到互联网,可拨打/接听语音电话和发送/接收SMS信息。
图1-9 Arduino Ethernet Shield
图1-10 Arduino GSM Shield
GSM Shield采用Quectel的无线调制解调器M10,利用AT命令与电路板通信。GSM Shield利用数字引脚2、3与M10进行软件串行通信,引脚2连接M10的TX引脚,引脚3连接RX引脚,调制解调器的PWRKEY引脚连接Arduino引脚7。
M10是一款四频GSM/GPRS调制解调器,其工作频率如下:GSM 850MHz、GSM 900MHz、DCS 1800MHz和PCS 1900MHz。它通过GPRS连接支持TCP/UDP和HTTP。其中GPRS数据下行链路和上行链路的最大传输速度为85.6Kb/s。
Arduino Motor Shield如图1-11所示,用于驱动电感负载(如继电器、螺线管、DC和步进电机)的双全桥驱动器L298。利用Arduino Motor Shield可以驱动2个DC电机,独立控制每个电机的速度和方向。因此,它有2条独立的通道,即A和B,每条通道使用4个Arduino引脚来驱动或感应电机,所以Arduino Motor Shield上使用的引脚共8个。它不仅可以单独驱动2个DC电机,也可以将它们合并起来驱动1个双极步进电机。
Arduino 9 Axes Motion Shield如图1-12所示,它采用德国博世传感器技术有限公司推出的BNO055绝对方向传感器。这是一个使用系统级封装,集成三轴14位加速计、三轴16位陀螺仪、三轴地磁传感器,并运行BSX3.0 FusionLib软件的32位微控制器。BNO055在三个垂直的轴上具有三维加速度、角速度和磁场强度数据。
图1-11 Arduino Motor Shield
图1-12 Arduino 9 Axes Motion Shield
另外,它还提供传感器融合信号,如四元数、欧拉角、旋转矢量、线性加速度、重力矢量。结合智能中断引擎,它可以基于慢动作或误动作识别、任何动作(斜率)检测、高g检测等项触发中断。
Arduino 9 Axes Motion Shield兼容UNO、YUN、Leonardo、Ethernet、MEGA和DUE电路板。在使用Arduino 9 Axes Motion Shield时,要根据使用的电路板将中断桥和重置桥焊接在正确的位置。