购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.2 Arduino YUN

Arduino YUN依靠8位微控制器(与Arduino LEONARDO相同)以及以太网和WiFi连接,实现了微型计算机运行Linux的功能,如图1-2所示。

图1-2 Arduino YUN

1.2.1 概述

Arduino YUN是基于ATmega32U4和Atheros AR9331的微控制器板。Atheros处理器支持基于OpenWrt命名为Linino OS的Linux发行板。该板具有内置以太网和WiFi支持、USB -A端口、micro-SD卡插槽、20个数字输入输出引脚(其中7个可用作PWM输出,12个可用作模拟输入)、16MHz晶振振荡器、微型USB连接、ICSP接口和3个复位按钮。

Arduino YUN与其他Arduino电路板的不同之处在于,它能在板上与Linux系统进行通信,实现功能强大的联网计算机,同时享有Arduino的便捷性。除了Linux命令之外,开发者可以编写自己的shell和Python脚本,实现强大交互。

Arduino YUN与LEONARDO类似:ATmega32U4内置USB通信功能,不必配备辅助处理器。这样,使Arduino YUN在所连接的计算机上显示为鼠标和键盘——除虚拟(CDC)串行/COM端口之外。Arduino YUN R5不同于先前版本,电源系统提供5V AREF。其布局已修改,添加两个USB信号口、GP6和GPIO13(LED2)。Arduino YUN的处理器参数、微控器参数和总体参数如表1-3~表1-5所示。

表1-3 Arduino YUN处理器参数

表1-4 Arduino YUN微控器参数

表1-5 Arduino YUN总体参数

1.2.2 技术规范

本部分主要介绍Arduino YUN开发板的电源、存储器、输入和输出、通信、编程、自动(软件)复位、USB过流保护、物理特性和输出引脚。

1.电源

建议通过5VDC微型USB连接为电路板供电。如果通过Vin引脚为电路板供电,那么必须提供5VDC稳压。没有针对更高电压的板载稳压器,高压会损坏电路板。

另外,Arduino YUN还兼容PoE电源,但为了使用该功能,需要在板上安装PoE模块,或购买预装板。带PoE适配器的Arduino YUN电路板早期型号错误地为电路板提供12V供电。新版本可以提供预期的5V供电电压。

电源引脚如下:

Vin:输入电压到Arduino板;与其他Arduino板不同,如果要通过此引脚为板提供电源,则必须提供一个稳定的5V电压;

5V:用于为板上的微控制器和其他组件供电的电源,可以来自Vin或由USB提供;

3V3:由板上稳压器产生的3.3V电源,最大电流消耗为50mA;

GND:接地引脚;

IOREF:电路板输入输出引脚的工作电压(即,电路板的VCC),在Arduino YUN上为5V。

2.存储器

ATmega32U4具有32KB的存储(使用4KB用于引导加载程序)。它还具有2.5KB的SRAM和1KB的EEPROM(可以使用EEPROM库读写)。

AR9331上的内存不会嵌入到处理器内部。RAM和存储器外部连接。Arduino YUN拥有64MB的DDR2 RAM和16MB的闪存。闪存在工厂中预装有基于OpenWrt的Linux发行版,称为Linino OS。可以更改出厂映像的内容,例如安装程序或更改配置文件时,按“WLAN RST”按钮30s可以返回出厂配置。

Linino OS安装占用了闪存16MB中的9MB左右。如果需要更多磁盘空间来安装应用程序,则可以使用micro SD卡。

3.输入和输出

无法访问Atheros AR9331的I/O引脚。所有I/O线都连接到32U4。Arduino YUN上的20个数字I/O引脚,每一个都可以使用pinMode()、digitalW rite()和digitalRead()函数作为输入或输出,它们工作在5V。每个引脚可提供或接收最大40mA的电流,并具有20~50kΩ的内部上拉电阻(默认情况下断开)。此外,一些针脚具有专门的功能:

串行:0(RX)和1(TX)。用于使用ATmega32U4硬件串行功能接收(RX)和发送(TX)TTL串行数据。请注意,在Arduino YUN上,Serial类是指USB(CDC)通信;对于引脚0和1上的TTL串行,使用Serial1类。Arduino YUN上的ATmega32U4和AR9331的硬件连接在一起,用于两个处理器之间的通信。如在Linux系统中常见的那样,在AR9331的串行端口上暴露了控制台以访问系统,这意味着可以从程序中访问Linux提供的程序和工具。

TWI:2(SDA)和3(SCL)。使用Wire库支持TWI通信。

外部中断:3(中断0)、2(中断1)、0(中断2)、1(中断3)和7(中断4)。这些引脚可以配置为低电平值、上升沿、下降沿触发中断或值的变化。有关详细信息请参阅attachInterrupt()函数。不建议使用引脚0和1作为中断,因为它们也是用于与Linux处理器通信的硬件串行端口。引脚7连接到AR9331处理器,将来可能被用作握手信号。如果打算将其用作中断,建议小心可能的冲突。

PWM:3、5、6、9、10、11和13引脚,通过analogWrite()功能提供8位PWM输出。

SPI:在ICSP接口。这些引脚支持利用SPI库进行SPI通信。注意,SPI引脚并不连接到任何数字输入输出引脚,因为它们在Arduino UNO上。它们仅在ICSP接口上提供。这意味着,如果扩展板使用SPI,但没有6引脚ICSP连接器可以连接到Arduino YUN的6引脚ICSP接口,扩展板将无法工作。另外,SPI引脚还连接到AR9331 GPIO引脚,这是通过软件实施的,意味着ATMega32U4和AR9331也可利用SPI协议进行通信。

LED:内置LED连接到数字引脚13,当引脚为高电平时,LED指示灯亮起,当引脚为低电平时,该指示灯熄灭。Arduino YUN还有其他几个状态指示灯、指示电源、WLAN连接、WAN连接和USB。

模拟输入:A0~A5,A6~A11(数字引脚4、6、8、9、10和12)。Arduino YUN有12个模拟输入端口,标有A0~A11,也全部都可用作数字输入输出端口。引脚A0~A5出现在与Arduino UNO同样的位置上;输入端口A6~A11分别在数字输入输出引脚4、6、8、9、10和12上。每个模拟输入端口都提供10位分辨率(1024个不同的值)。默认情况下,模拟输入端口从接地到5V不等,不过可以利用AREF引脚和analogReference()函数改变其范围的上限值。

AREF:模拟输入的参考电压,与analogReference()一起使用。

Arduino YUN开发板上有3个不同功能的复位按钮,如图1-3所示。

图1-3 Arduino YUN复位按钮

YunRST:将此线设为低电平以复位AR9331微处理器。重置AR9331将导致重新启动Linux系统。存储在RAM中的所有数据都将丢失,所有正在运行的程序将被终止。

32U4 RST:设置为低电平时,对ATmega32U4微控制器进行重置。通常用于向扩展板添加重置按钮。

WLAN RST:该按钮具有双重功能。主要用于将WiFi恢复到原厂配置。原厂配置包括将Arduino YUN的WiFi设为接入点模式(AP)并为其分配默认的IP地址192.168.240.1,在这种情况下,可以将计算机连接到显示“Arduino Yun-XXXXXXXXXXXX”SSID名称的WiFi网络,其中这12个“X”是Arduino Yun的MAC地址。连接后,就可以在192.168.240.1或http://arduino.local地址,利用浏览器访问Arduino YUN的网络面板。

注意,恢复WiFi配置将导致Linux环境的重启。为恢复WiFi配置,必须按住WLAN RST按钮5s。在按该按钮时,WLAN蓝色LED开始闪烁,并且在5s后释放该按钮,仍保持闪烁状态,表明WiFi恢复程序已被记录下来。

WLAN RST按钮的第二个功能是将Linux镜像恢复到默认的原厂镜像。为恢复Linux环境,必须按住该按钮30s。注意,恢复原厂镜像会导致丢失AR9331的板载闪存上保存的所有文件和安装的软件。

4.通信

Arduino YUN有许多装置支持与计算机、另一个Arduino或其他微控制器之间进行通信。ATmega32U4提供专用的UART TTL(5V)串行通信。另外,32U4还支持通过USB进行串行(CDC)通信,显示为计算机上软件的一个虚拟COM端口。另外,芯片还作为一个全速USB 2.0器件,使用标准USB COM驱动程序。Arduino软件包括一个串口监视器,允许Arduino电路板收发简单的文本数据。当数据正在通过USB连接传输到计算机上时,电路板上的RX和TX LED闪烁。

数字引脚0和1用于32U4和AR9331之间的串行通信,可以使用Ciao库来进行处理器之间的通信。

Arduino Ciao是一种易于使用、强大的技术,使Arduino程序能够直观地与“外界”沟通。它旨在简化微控制器与Linino OS之间的交互,从而允许与大多数常见协议、第三方服务和社交网络的各种连接。

Ciao已经被设计和开发成为模块化并易于配置。其目标是支持能够与系统资源(文件系统、控制台、内存)进行交互的多个连接器,并与最常用的协议(XMPP、HTTP、WebSocket、COAP等)进行通信和应用(Jabber、WeChat、Twitter、Facebook等)。

Ciao库是一个轻量级的库,可以通过串行通信以简单直观的方式在MCU的程序中用于发送和接收数据。

一个SoftwareSerial库允许在任何Arduino YUN的数字引脚上进行串行通信。应该避免引脚0和引脚1使用,因为它们由Bridge库使用。

ATmega32U4还支持I2C(TWI)和SPI通信。Arduino软件包括一个Wire库,以简化I2C总线的使用。对于SPI通信,请使用SPI库。

Arduino YUN显示为通用键盘和鼠标,可以使用键盘和鼠标类编程来控制这些输入设备。

板载以太网和WiFi接口直接暴露在AR9331处理器上。要通过它们发送和接收数据,请使用Bridge库。

Arduino YUN还通过Linino OS拥有USB主机功能。可以连接USB闪存这样的外部设备来获得额外的存储、键盘或摄像头,需要下载并安装额外软件,使这些设备工作。

5.编程

Arduino YUN可以使用Arduino软件进行编程。从Tools→Board菜单中选择Arduino YUN(根据板上的微控制器)。

Arduino YUN上的ATmega32U4被预先烧录了一个引导程序,允许在不使用外部硬件编程器的情况下上传新的代码,它使用AVR109协议进行通信。

另外,还可以绕过引导加载程序,利用Arduino ISP或类似方式通过ICSP(总线串行编程)接口对微控制器进行编程。

6.自动(软件)复位

在上传之前不用按重置按钮,Arduino YUN被设计为可以通过所连接计算机上运行的软件对其重置。当Arduino YUN的虚拟(CDC)串行/COM端口在1200波特率下打开,然后关闭时,会触发重置。当这种情况发生时,处理器将重置,断开与计算机的USB连接(意味着虚拟串行/COM端口将消失)。在处理器重置后,引导加载程序启动,保持激活状态大约8s时间。另外,也可通过按Arduino YUN上的重置按钮来启动引导加载程序。注意,当开发板第一次加电时,会直接跳转到用户程序,如果存在,就不会启动引导加载程序。

由于Arduino YUN处理重置所采用的方式,最好让Arduino软件尝试在上传之前,启动重置,特别是如果习惯于上传之前按重置按钮的话。如果软件不能对电路板重置,随时都可以通过按电路板上的重置按钮启动引导加载程序。

7.USB过流保护

具有可复位的多晶硅熔断器,可以保护计算机的USB端口,使其免受短路和过流的影响。尽管大多数计算机都提供自己的内部保护,但熔断器可以提供额外的一层保护。如果超过500mA的电流施加到USB端口,那么,熔断器将自动中断连接,直至去除短路或过载。

8.物理特性

Arduino YUN PCB的最大长度和宽度分别为2.7inch和2.1inch,配备的USB连接器超越先前的尺寸。借助四个螺孔,电路板可以固定到表面或机箱上。注意,数字引脚7和8之间的距离是160mil(0.16″),而不是其他引脚的100mil的偶数倍,板的重量为32g。

9.输出引脚

Arduino YUN开发板的输出引脚如图1-4所示。

图1-4 Arduino YUN输出引脚图 9lILCv3Pvx4MkYO4/MEnq601/KqQFgR67pIK7PbPusZPZDRXNyPAVJI4eAlUqG0v

点击中间区域
呼出菜单
上一章
目录
下一章
×