60元DIY售价600元的Arduino Yun

春节时有点空,研究了下廉价版Arduino Yun的DIY方案。

Arduino Yun可以理解为是一款具备无线功能的Arduino Leonardo板,使用了高集成的低端Atheros AR9331芯片。这个人见人爱的芯片,被用在了TP-Link及其马甲品牌的诸多路由器上,其中水星的MW150R路由器,成本更是低到了4X元人民币。当然了,这个AR9331芯片详细的应用电路图,其实早已经随着TP-Link WR703N路由的普及被开源了。

顺带提一句,这个AR9331芯片,早期还被用到了那个被热炒的/饥饿营销的/前期价格269元人民币的极路由上。另外需要吐槽的是,Arduino Yun这个板子,官方并没有真正开源,官网上只有电路框架图,而没有真正的电路图。Arduino Yun AR9331部分使用的是开源OpenWrt的衍生版本linino,而使用AR9331的路由器,OpenWrt已经支持得很好了。

Arduino Yun既然是用的leonardo+AR9331方案,当然也就有了被“山寨”的可能性。可以使用Arduino的板子+AR9331方案的路由器来进行DIY。

Arduino Yun官方的售价是52欧元,国内也有代理在卖,差不多在500元人民币左右。我1月初从国外代购了一块,拿到手价格不到600元,年前(1月21号)终于收到货了。

先上Arduino Yun的图片:

60元DIY售价600元的Arduino Yun

Arduino Yun BOX

60元DIY售价600元的Arduino Yun

Arduino Yun Front

60元DIY售价600元的Arduino Yun

Arduino Yun Bottom

60元DIY售价600元的Arduino Yun

Arduino Yun bare Board

年前1月21日收到的,马上脱光拍照片:

60元DIY售价600元的Arduino Yun

Arduino Yun AR9331-AL1A

60元DIY售价600元的Arduino Yun

Arduino Yun 64MB DDR II

60元DIY售价600元的Arduino Yun

Arduino Yun 16MB SPI FLASH

60元DIY售价600元的Arduino Yun

Arduino Yun USB hub and multimedia card reader controller

60元DIY售价600元的Arduino Yun

Arduino Yun AVR Chip

Arduino Yun与WR703N在AR9331电路部分最主要的区别就是前者使用了DDR II内存,而WR703N使用的是DDR内存。使用编程器将Arduino Yun的Flash固件读出来,在WINHEX里跟WR703N的固件对比了一下,U-BOOT/Kernel/ROOTFS/ART等区域完全不一样了。

由于Yun使用了DDR II内存,可想而知,固件里很多部分都不一样。将Yun的固件写到16MB的Flash里放到WR703N上,如之前所分析的,理所当然,根本没法启动。

为什么是MW150R而不是WR703N?

MW150R是水星的一款低端家用路由,在京东上卖48元,现在的版本是V10.1,与最早的版本相比,Flash和内存及供电部分基本都已经简化到最简了。现在的配置是1MB SPI Flash、8MB DDR内存、5V供电,AR9331的USB没有引出来(MW150R3G有USB接口)。

由于Arduino已经有现成的TF/SD读卡方案,因此我个人觉得没必要再增加USB转TF或SD的方案,那样无疑会增加硬件的成本。WR703N与MW150R的主要区别是前者引出了USB接口,便携设计,MW150R没有USB接口。TP-Link WR703N及其马甲系列水星MW151RM3G/迅捷FW171-3G价格大于85元。

由于产品买过来都要改Flash及内存,基于功能及价格的考虑,自然是选择便宜的。

先上图:

60元DIY售价600元的Arduino Yun

Mercury MW150R PCB

60元DIY售价600元的Arduino Yun

Mercury MW150R no SPI FLASH

60元DIY售价600元的Arduino Yun

Mercury MW150R 1MB SPI FLASH

60元DIY售价600元的Arduino Yun

Mercury MW150R 8MB DDR

60元DIY售价600元的Arduino Yun

Mercury MW150R AR9331-AL3A

下面就是开始HACK了:

60元DIY售价600元的Arduino Yun

Mercury MW150R leading out TTL

60元DIY售价600元的Arduino Yun

Mercury MW150R 64MB DDR

60元DIY售价600元的Arduino Yun

Mercury MW150R 16MB SPI FLASH

Flash部分没有清理焊膏,天线接线直接去掉了,一是由于试验时经常要用编程器重写Flash,二是在几米的范围内不用接外置天线信号就非常好,这种mW级的,功率小,驻波再大也没什么,不用担心烧器件。

关于AR9331-AL1A与AR9331-AL3A的区别

早期的WR703N等路由器用的是AR9331-AL1A芯片,这个芯片的Datasheet可以从网上下载,后来的版本(V1.6之后)都用AR9331-AL3A了,这个芯片的Datasheet网上没有。

查阅WR703N的两个芯片版本电路的资料后,发现基本也没什么区别。使用-AL3A版本的只是在USB部分去了两个电阻换成了电感以增强USB信号的稳定性,因此这两个芯片的区别可以无视。

由于MW150R和WR703N硬件基本一样,并且也用不着另外的四个LAN口,因此可以直接用WR703N的固件在MW150R上面跑。16MB SPI Flash固件可以自己用WINHEX修改,教程在网上有很多。也可以用网上现有的固件,我用的是森亮号的Avalon版本。在搜索资料的时候发现,就在1月15日,已经有同学修改出了WR703N的Arduino Yun文件,因此直接用他的文件即可。

省去了自己再去编译修改的时间,开源精神就是好啊。

60元DIY售价600元的Arduino Yun

mercury MW150R Arduino Yun 3.3V 8MHz pro mini edition

这是我做出来的Arduino pro mini 3.3V 8MHz版本的Arduino Yun,板子上写的5V 16MHz是前一个版本标记的。

60元DIY售价600元的Arduino Yun

关于DIY中的细节,下回再说,有点点麻烦。