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