春节时有点空,研究了下廉价版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的图片:
年前1月21日收到的,马上脱光拍照片:
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及内存,基于功能及价格的考虑,自然是选择便宜的。
先上图:
下面就是开始HACK了:
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文件,因此直接用他的文件即可。
省去了自己再去编译修改的时间,开源精神就是好啊。
这是我做出来的Arduino pro mini 3.3V 8MHz版本的Arduino Yun,板子上写的5V 16MHz是前一个版本标记的。
关于DIY中的细节,下回再说,有点点麻烦。
最新评论