![Arduino项目开发:物联网应用](https://wfqqreader-1252317822.image.myqcloud.com/cover/277/27563277/b_27563277.jpg)
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个数字I/O引脚(其中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个数字I/O引脚(其中7个可以用于PWM、12个可以用于模数转换)、1个Micro USB接口、1个ICSP插头和3个复位开关。
![](https://epubservercos.yuewen.com/E2A904/15825991705219306/epubprivate/OEBPS/Images/Figure-P12_3439.jpg?sign=1738852874-A10QnfETSs2PB6Qq6oytVUn3Cbmm95LX-0-ea0a5f95b37de6fb8c77ab9ee59e2ecb)
图1-1 Arduino UNO
![](https://epubservercos.yuewen.com/E2A904/15825991705219306/epubprivate/OEBPS/Images/Figure-P12_3443.jpg?sign=1738852874-muRbX4kC702zMVGVCADd2kWJ1OC46Q3J-0-2a645cd3abd9f45bcc73de496018d060)
图1-2 Arduino YUN
如图1-3所示,Arduino DUE是一块基于Atmel SAM3X8E CPU的微控制器板。它是第一块基于32位ARM核心的Arduino开发板,有54个数字I/O引脚(其中12个可用于PWM输出)、12个模拟输入引脚、4个UART硬件串口、84MHz的时钟频率、1个USB OTG接口、2个数模转换、2个TWI、1个电源插座、1个SPI接口、1个JTAG接口、1个复位按键和1个擦写按键。
如图1-4所示,Arduino MEGA 2560开发板也是采用USB接口的核心开发板,它的最大特点就是具有多达54个数字I/O引脚,特别适合需要大量I/O引脚的设计。Arduino MEGA 2560开发板的处理器核心是ATmega2560,具有54个数字I/O引脚(其中16个可作为PWM输出)、16个模拟输入、4个UART接口、1个16MHz晶体振荡器、1个USB接口、1个电源插座、1个ICSP插头和1个复位按钮。Arduino MEGA 2560开发板也能兼容为Arduino UNO设计的扩展板。目前,Arduino MEGA 2560开发板已经发布到第3版。与前两版相比,第3版有以下新的特点。
![](https://epubservercos.yuewen.com/E2A904/15825991705219306/epubprivate/OEBPS/Images/Figure-P13_3449.jpg?sign=1738852874-DDQ7Pg5W8mtiyxVmErYR0gSrnAU0Ytgi-0-92b91d3336cdb05e013ba918179f5e7a)
图1-3 Arduino DUE
![](https://epubservercos.yuewen.com/E2A904/15825991705219306/epubprivate/OEBPS/Images/Figure-P13_3453.jpg?sign=1738852874-3BQeewOHXKiuEnRCzvY1IzxTxR087Vof-0-613a97d9378c37d702b2dcc95d62ac5d)
图1-4 Arduino MEGA 2560
(1)在AREF处增加了两个引脚SDA和SCL,支持I2C接口;增加IOREF和1个预留引脚,以便将来扩展板能够兼容5V和3.3V核心板;改进了复位电路设计;USB接口芯片由ATmega16U2替代ATmega8U2。
(2)第3版可以通过三种方式供电:外部直流电源通过电源插座供电;电池连接电源连接器的GND和VIN引脚供电;USB接口直接供电。而且,它能自动选择供电方式。
电源引脚说明如下。
VIN:当外部直流电源接入电源插座时,可以通过VIN向外部供电,也可以通过此引脚向Arduino MEGA 2560开发板直接供电;VIN供电时将忽略从USB或者其他引脚接入的电源。
5V:通过稳压器或USB的5V电压,为Arduino MEGA 2560开发板上的5V芯片供电。
3.3V:通过稳压器产生的3.3V电压,最大驱动电流为50mA。
GND:接地引脚。
如图1-5所示,Arduino Leonardo是一款基于ATmega32U4的开发板。它有20个数字I/O引脚(其中7个可用作PWM输出、12个可用作模拟输入)、1个16MHz晶体振荡器、1个Micro USB连接、1个电源插座、1个ICSP头和1个复位按钮。它具有支持微控制器所需的一切功能,只需通过USB电缆将其连至计算机,或者通过电源适配器、电池为其供电即可使用。
Leonardo与先前的所有开发板都不同,ATmega32U4具有内置式USB通信,从而无须二级处理器。这样,除了虚拟(CDC)串行/通信端口,Leonardo还可以充当计算机的鼠标和键盘,它对开发板的性能也会产生影响。
如图1-6所示,Arduino Ethernet是一款基于ATmega328的开发板。它有14个数字I/O引脚、6个模拟输入、1个16MHz晶体振荡器、1个RJ45连接、1个电源插座、1个ICSP头和1个复位按钮。引脚10、11、12和13只能用于连接以太网模块,不能用作他用。可用引脚只有9个,其中4个可用作PWM输出。
![](https://epubservercos.yuewen.com/E2A904/15825991705219306/epubprivate/OEBPS/Images/Figure-P14_3460.jpg?sign=1738852874-ekMwP5BpJRdw68CI4gjnE3X8j08UP9Xw-0-4824b6be193a8337620c4cf9db502606)
图1-5 Arduino Leonardo
![](https://epubservercos.yuewen.com/E2A904/15825991705219306/epubprivate/OEBPS/Images/Figure-P14_3464.jpg?sign=1738852874-hlConJLzkMhlriUTPiNd1bKcP4GE9zio-0-f3fd1d5f6ef0769196dbecf77cf88122)
图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由适配器供电。
![](https://epubservercos.yuewen.com/E2A904/15825991705219306/epubprivate/OEBPS/Images/Figure-P14_3468.jpg?sign=1738852874-d2JaNBsVXFrRIXPvc1THERa9qWECjTWF-0-1eea02d53e8475723e3afb0a8dba4208)
图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的电流。
![](https://epubservercos.yuewen.com/E2A904/15825991705219306/epubprivate/OEBPS/Images/Figure-P15_3474.jpg?sign=1738852874-1G24wASwPX89HnEjj0s9csRzMt2KtuZw-0-15477a63370bd53f11ae2ff67e906cb7)
图1-8 Arduino NANO
如图1-8所示,Arduino NANO是一款小巧、全面、基于ATmega328的开发板,与Arduino Duemilanove的功能类似,但封装不同,没有直流电源插座且采用Mini-B USB电缆。Arduino NANO开发板上的14个数字引脚都可用作输入或输出,利用函数pinMode()、digitalWrite()和digitalRead()可以对它们操作。工作电压为5V,每个引脚都可以提供或接受最高40mA的电流,都有1个20~50kΩ的内部上拉电阻器(默认情况下断开)。Arduino 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开发板和Arduino MEGA开发板兼容,可通过SD库访问板载micro-SD读卡器。以太网扩展板带有1个供电(PoE)模块,可从传统的5类电缆获取电力。
Arduino GSM Shield如图1-10所示,为了连接蜂窝网络,扩展板需要一张由网络运营商提供的SIM卡。它通过移动通信网将Arduino开发板连接到互联网,可拨打/接听语音电话和发送/接收SMS信息。
![](https://epubservercos.yuewen.com/E2A904/15825991705219306/epubprivate/OEBPS/Images/Figure-P15_3480.jpg?sign=1738852874-SK7UKjbShB2XVwv0PLF83f5gfHDxkYDZ-0-7b07f13d5fda537bb6c0eccf7bd0a6a1)
图1-9 Arduino Ethernet Shield
![](https://epubservercos.yuewen.com/E2A904/15825991705219306/epubprivate/OEBPS/Images/Figure-P15_3484.jpg?sign=1738852874-09LGj63Wa4mXbQyADsSbIc1noGogm0R8-0-e8044cffb093ed4c01b5eb370193ef31)
图1-10 Arduino GSM Shield
GSM Shield采用Quectel的无线调制解调器M10,利用AT命令与开发板通信。GSM Shield利用数字引脚2、3与M10进行软件串行通信,引脚2连接M10的TX引脚,引脚3连接M10的RX引脚,调制解调器的PWRKEY引脚连接引脚7。
M10是一款四频GSM/GPRS调制解调器,其工作频率分别为GSM850MHz、GSM900MHz、DCS1800MHz和PCS1900MHz。它通过GPRS连接支持TCP/UDP和HTTP。其中GPRS数据下行链路和上行链路的最大传输速率为85.6Kb/s。
Arduino Motor Shield如图1-11所示,用于驱动电感负载(如继电器、螺线管、直流和步进电动机)的双全桥驱动器L298。Arduino Motor Shield可以驱动2个直流电机,并能独立控制每个电机的速度和方向。因此,它有2条独立的通道,即A和B,每条通道使用4个开发板引脚驱动或感应电机,所以Arduino Motor Shield使用的引脚共8个。它不仅可以单独驱动2个直流电机,也可以将它们合并起来驱动1个双极步进电机。
Arduino 9 Axes Motion Shield如图1-12所示。它采用德国博世传感器技术有限公司推出的BNO055绝对方向传感器。这是一个使用系统级封装,集成三轴14位加速计、三轴16位陀螺仪、三轴地磁传感器,并运行BSX3.0 FusionLib软件的32位微控制器。BNO055在三个垂直的轴上具有三维加速度、角速度和磁场强度数据。
![](https://epubservercos.yuewen.com/E2A904/15825991705219306/epubprivate/OEBPS/Images/Figure-P16_3490.jpg?sign=1738852874-faTIX2AP1GyIUdtuf4a1bMluDI0Nq7QH-0-ec6c8b0a104798e0ccb1eed7f57fe109)
图1-11 Arduino Motor Shield
![](https://epubservercos.yuewen.com/E2A904/15825991705219306/epubprivate/OEBPS/Images/Figure-P16_3494.jpg?sign=1738852874-0BU2SfX3DZQ4mAb0RQEQIgor6bXjH3We-0-ba8dceae42d7f0d13e4c27a6ccf25432)
图1-12 Arduino 9 Axes Motion Shield
另外,它还提供传感器融合信号,如四元数、欧拉角、旋转矢量、线性加速度、重力矢量。结合智能中断引擎,可以基于慢动作或误动作识别、任何动作(斜率)检测、高g检测等项触发中断。
Arduino 9 Axes Motion Shield兼容UNO、YUN、Leonardo、Ethernet、MEGA和DUE开发板。在使用Arduino 9 Axes Motion Shield时,要根据使用的开发板将中断桥和重置桥焊接在正确的位置。