[原创] Arduino YúN 测评(一)简介/拆包

lyzhangxiang   2015-8-23 22:16 楼主
ArduinoYunFront_2.jpg ArduinoYunBack_2.jpg
普通版本
ArduinoYunFront_PoE.jpg ArduinoYunTri_PoE.jpg
POE版本
概述
Arduino Yún是基于ATmega32u4和Atheros AR9331的微控制器电路板。Atheros处理器支持基于OpenWrt的Linux版本——Linino OS。Arduino Yún内置以太网和WiFi支持功能、一个USB-A端口、微型SD卡插槽、20个数字输入/输出引脚(其中7个引脚用作PWM输出,12个用作模拟输入)、一个16 MHz晶体振荡器、一个微型USB连接器、一个ICSP头部和三个重置按钮。
注意:在一些国家,未经政府批准禁止销售支持WiFi的设备。在等待认证时,当地的一些分销商会禁用WiFi功能。如果你认为自己可能居住在这样一个国家,那么请在购买Yún之前向经销商进行咨询(这也许是针对朝鲜国的吧,不知道在这个国度是否有极客存在)。
YunParts.jpg
Yún与其他Arduino电路板的不同之处在于,它能在板上与Linux系统进行通信,实现功能强大的联网计算机,同时享有Arduino的便捷性。除cURL这样的Linux命令之外,你可以编写自己的shell和python脚本,实现强大交互。
Yún与Leonardo类似:ATmega32u4内置USB通信功能,不必配备辅助处理器。这样,使Yún在所连接的计算机上显示为鼠标和键盘——除虚拟(CDC)串行/ COM端口之外。
ATmega32u4_arduino_yun.jpg
Bridge库使两个处理器之间的通信更容易,让Arduino sketch能够运行shell脚本、与网络接口进行通信,并接收来自AR9331处理器的信息。USB主机、网络接口和SD卡并不连接到32U4,而是连接到AR9331,并且Bridge库也支持Arduino连接这些外设

概要
因为Yún有两个处理器,所以,总结部分用两个不同的表来说明每个处理器的特点。
mega32.jpg 9331.jpg

原理图与参考设计
sch.jpg
关于硬件细节可以参考文章后面的完整原理图,很可惜AR9331部分是被当作一个module来处理的,不能看的更细节的东西,希望将来有一天全部OPEN吧。

电源
建议通过5VDC微型USB连接为电路板供电。
如果通过Vin引脚为电路板供电,那么必须提供5VDC稳压。没有针对更高电压的板载稳压器,高压会损坏电路板。
另外,Yún还兼容PoE电源,但为了使用该功能,需要在板上安装PoE模块,或购买预装板。
注:带PoE适配器的Yún电路板早期型号错误地为电路板提供12V供电。更新版本将很快提供给分销商,可以提供预期的5V供电。如果你认为电路板上的PoE适配器不正确,请联系support@arduino.org

电源引脚如下:
VIN. Arduino电路板的输入电压。与其他Arduino电路板不同的是,如果要通过这个引脚为电路板供电,必须提供5V稳压。
5V. 用于为微控制器及电路板上其他组件供电的电源。这可以来自VIN或通过USB供电。
3V3. 板载稳压器产生的3.3伏电源。最大电流消耗为50毫安。
GND. 接地引脚。
IOREF. 电路板输入/输出引脚的工作电压(即,电路板的VCC)。在Yún上为5伏。

存储器
ATmega32u4有32 KB(4 KB用于引导加载程序)内存。另外,还有2.5 KB SRAM和1 KB EEPROM(可利用EEPROM库进行读写)。
AR9331的内存并未嵌入处理器内。RAM和存储内存都是外接的。Yún Mini具有64 MB DDR2 RAM和16 MB闪存。闪存在工厂预装基于OpenWrt的Linux系统——Linino。你可以改变原厂镜像的内容,比如,当你安装程序或改变配置文件时。按住“WLAN RST”30秒时间,就可以返回原厂配置。
安装Linino OS会占用内部16MB闪存中的大约9 MB。如果需要更大磁盘空间来安装应用程序,那么可以使用micro SD卡。

输入和输出
不可能接近Atheros AR9331的I/O引脚。所有I/O引脚都已被绑定到32U4上。

Yún上20个数字I/O引脚中的每一个都可用作输入或输出引脚,使用pinMode()、digitalWrite()和digitalRead()函数。其工作电压为5伏。 每个引脚都可提供或接受最大40毫安电流,并有20-50千欧的内部上拉电阻(默认断开)。此外,一些引脚具有专门功能:

Serial:0(RX)和1(TX)。用于利用ATmega32U4硬件串口功能接收(RX)和发送(TX)TTL串行数据。注意,在Yún上,串行类是指USB(CDC)通信;对于引脚0和1上的TTL串口,使用Serial1类。Yún上ATmega32U4和AR9331的硬件串口连接在一起,用于在两个处理器之间进行通信。因为这在Linux系统中很常见,所以,访问系统的控制台会暴露在AR9331的串行端口上,这意味着可以从你的Sketch上访问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引脚并不连接到任何数字输入/输出引脚,因为它们在Uno上。它们仅在ICSP接口上提供。这意味着,如果扩展板使用SPI,但没有6引脚ICSP连接器可以连接到Yún的6引脚ICSP 头部,扩展板将无法工作。另外,SPI引脚还连接到AR9331 gpio引脚,这是通过软件实施的。这意味着ATMega32u4和AR9331也可利用SPI协议进行通信。

LED:13。有一个连接到数字管脚13的内置LED。当管脚为HIGH值时,LED亮起,当管脚为LOW值时,LED熄灭。在Yún上还有其他多个状态LED,指示电源、WLAN连接、WAN连接和USB功能。

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

AREF: 模拟输入端口的参考电压。配合analogReference()使用。

板上有具备不同功能的3个重置按钮:
ArduinoYunSchema2.jpg
Yún RST. 设置为LOW时,对AR9331微处理器进行重置。重置AR9331会造成Linux系统的重启。RAM中存储的所有数据都会丢失,正在运行的所有程序将被终止。

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

WLAN RST. 该按钮具有双重功能。主要用于将WiFi恢复到原厂配置。原厂配置包括将Yún的WiFi设为接入点模式(AP)并为其分配默认的IP地址192.168.240.1,在这种情况下,你可以将计算机连接到显示 “Arduino Yun-XXXXXXXXXXXX”SSID名称的WiFi网络,其中这12个‘X’是你的Yún的MAC地址。连接后,立即就可以在192.168.240.1或“http://arduino.local”地址利用浏览器访问Yún的网络面板。注意,恢复WiFi配置将导致Linux环境的重启。为恢复你的WiFi配置,必须按住WLAN RST按钮5秒钟时间。在按该按钮时,WLAN蓝色LED开始闪烁,并且在5秒后释放该按钮,仍保持闪烁状态,表明WiFi恢复程序已被记录下来。WLAN RST按钮的第二个功能是将linux镜像恢复到默认的原厂镜像。为恢复linux环境,必须按住该按钮30秒时间。注意,恢复原厂镜像会导致你丢失在连接到AR9331的板载闪存上保存的所有文件和安装的软件。

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

数字引脚0和1用于32U4与AR9331之间的串行通信。处理器之间的通信由Bridge库处理。

SoftwareSerial库支持使用Yún的任何数字引脚进行串行通信。应避免使用引脚0和1,因为它们由Bridge库使用。
另外,ATmega32U4还支持I2C (TWI) 和SPI通信。Arduino软件包括一个Wire库,可以简化使用I2C总线。对于SPI通信,使用SPI库。
Yún显示为通用的键盘和鼠标,并可进行编程,以利用键盘和鼠标类控制这些输入设备。

板载以太网和WiFi接口直接暴露于AR9331 处理器。要通过它们发送和接收数据,使用Bridge库。
另外,Yún还有基于Linino OS的USB主机功能。你可以连接USB闪存设备这样的外设来获得额外的存储、键盘或摄像头。你可能需要下载并安装额外软件,使这些设备工作。

编程
Yún可利用Arduino软件进行编程。选择“Arduino Yún from the Tools > Board menu(根据电路板上的微控制器)。
Arduino Yún上的ATmega32U4利用引导加载程序进行预烧录,让你可以向其上传新代码,无需使用外部硬件编程。它可以利用AVR109协议进行通信。
另外,你还可以绕过引导加载程序,利用Arduino ISP或类似方式通过ICSP (总线串行编程)头部对微控制器进行编程。

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

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

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

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

------------------------------------------------ 分割线 -------------------------------------------------

以上文字参考官方介绍和相关资料。
先发拆包图,养眼的小板子,包装盒子上写着MADE IN TAIWAN,当然还有一点,比我想象中要小很多,官方现在还有个Arduino YúN Mini更袖珍。
IMG_0592.JPG IMG_0593.JPG
IMG_0594.JPG IMG_0595.JPG
IMG_0596.JPG IMG_0597.JPG
IMG_0598.JPG IMG_0599.JPG
IMG_0600.JPG IMG_0601.JPG
IMG_0602.JPG

对Arduino YúN第一印象

第一次关注这个小板子估计是两年之前了,找了一下之前发的说说时间2013-10-22,确实不错的板子,不过在今天拿到板子之前都没有去官方仔细看过板子的资源,本想着Arduino阵营的嘛,全开源的东西咯,等以后接触时再去看官方的资料吧,但是我在官方网站找了个遍也 没找到关于AR9331开发的相关资源,比如uboot/kernel/gcc等,所以从这里可以看出这板子的定位依然是Arduino的易用性,不需要用户折腾这些高深的玩意,你要做什么都能实现才是目的,板载的linux中已经运行好python了,用高级语言不失是一种最有效的途径,能带给用户更好的体验,搭建个YúN应用分分钟的事情,后面的测评中我给大家介绍如何搭建。

shuoshuo.jpg
说说截图留恋


AR9331算是这几年比较热门的物联网芯片之一了,伴随而来的各种开源硬件/开源项目数不胜数,关于这颗IC这里也给不熟悉的朋友普及一下,Atheros的路由器芯片。

ar9331.jpg

AR9331 General Description & Feature

9331-block.jpg
AR9331内部框图


对于Arduino YúN 这些都是多余的,没有比较深入了解他,很容易能上手用,主要是由于Arduino的丰富的库资源,下载一个支持Arduino YúN 的Arduino IDE看看。
ide.jpg

这个IDE中有很多的现成的库可以用于实现Arduino YúN 板子的云端功能,至于细节不要追根就低了,这是Arduinio阵营的法则,易用/好用。好了,第一篇测评就写这么多了,算是一个开端吧,今天中午才拿到板子。

参考资料
http://www.arduino.org/products/arduino-yun

附件资源
AR9331数据手册.pdf (3.01 MB)
(下载次数: 10, 2015-8-23 22:15 上传)
YUN-V04(20150114).DSN.zip (1.37 MB)
(下载次数: 7, 2015-8-23 22:15 上传)
arduino-Yun-schematic.pdf (112.74 KB)
(下载次数: 9, 2015-8-23 22:15 上传)
AR9331参考电路图.pdf (405 KB)
(下载次数: 11, 2015-8-23 22:15 上传)

电工

回复评论 (12)

   感谢楼主的分享,,期待后面更多的东东,
linux和 arduino 通信这块,期待分享一下。。。
分享铸就美好未来。。。
点赞  2015-8-23 22:21
引用: 574433742 发表于 2015-8-23 22:21
感谢楼主的分享,,期待后面更多的东东,
linux和 arduino 通信这块,期待分享一下。。。:vic ...

好的 一定分析分析这块的东西,看看ardunio怎么考虑串口通讯的
电工
点赞  2015-8-23 22:23
引用: lyzhangxiang 发表于 2015-8-23 20:23
好的 一定分析分析这块的东西,看看ardunio怎么考虑串口通讯的

电路图上是串口连接的,其实一直不知道他们具体的怎么协调的,如果是简单的串口就木有意思了。。。楼主加油,,和我们多分享点东东,尤其是arduino + linux这个组合
分享铸就美好未来。。。
点赞  2015-8-23 22:26
重新编辑了一下排版,。。调整字体
电工
点赞  2015-8-24 08:58
AR9331可以上openwrt啊!
点赞  2015-8-24 15:43
引用: mikeliujia 发表于 2015-8-24 15:43
AR9331可以上openwrt啊!

Arduino YúN里面跑的就是OpenWRT啊
电工
点赞  2015-8-24 15:57
引用: lyzhangxiang 发表于 2015-8-24 15:57
Arduino YúN里面跑的就是OpenWRT啊

所噶,先看你跑的玩一下
点赞  2015-8-24 20:15
引用: mikeliujia 发表于 2015-8-24 20:15
所噶,先看你跑的玩一下

好的,周末发相关内容。
openwrt社区很大。。很活跃。。
电工
点赞  2015-8-25 08:20
仅仅用于第二篇测评的测试使用

http://arduino.cc/asciilogo.txt

电工
点赞  2015-8-25 20:19
asciilogo.txt.txt (2.28 KB)
(下载次数: 7, 2015-8-25 20:24 上传)

电工
点赞  2015-8-25 20:24
对硬件部分做了个很详细介绍。如果官方可以把MIPS放开玩玩,倒也不失为一个游戏点。前几年还研究过MIPS,看来是没什么机会再摸了。
默认摸鱼,再摸鱼。2022、9、28
点赞  2015-8-25 20:40
引用: freebsder 发表于 2015-8-25 20:40
对硬件部分做了个很详细介绍。如果官方可以把MIPS放开玩玩,倒也不失为一个游戏点。前几年还研究过MIPS,看 ...

是啊,第一篇上电都没上电,free再看看刚写的一篇
https://bbs.eeworld.com.cn/thread-472277-1-1.html

应该有内置boot的,把这个摸摸清楚也能玩,kernel都差不多,编译一下估计能跑的很好。
如果不折腾kernel直接编译一些code应该也可以,估计都是拿来用的OpenWRT社区的包太全了
之前拿来弄边界路由ipv6的各种都直接opkg install就能跑了

直到最近才自己重新编译了一些,需要修改一些参数或者扩展。
电工
点赞  2015-8-25 21:22
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复