Arduino Yún(雲)是Arduino官方的新控制板,它其實就是一塊加上嵌入式Linux處理器和網路功能的Arduino Leonardo(李奧納多)板。如果不要求Linux微電腦的效能和記憶體容量,我們其實可以改造現有的商品,自行組裝一個「類Arduino Yún」,姑且稱為Arduino Yún Mini吧~(當然,官方的Arduino Yún程式庫在自製的板子派不上用場。)
本文的Arduino是最精簡的自製ATmega328板,Linux微電腦網路系統則採用TL-WR703N路由器。
TP-LINK TL-WR703N簡介
TL-WR703N是TP-LINK公司生產的攜帶型3G迷你無線路由器,外型尺寸僅5.7cm × 5.7cm × 1.8cm大小(面積約信用卡的一半)。根據OpenWrt的資料,它的主要技術規格如下:
- 工作電壓:3.7V~5.5V
- 消耗電流:採用OpenWrt系統,以5V供電時,最大約185mA;關閉WiFi約80a、WiFi功率18dBm時的平均消耗電流約100mA。
- Atheros AR7240 CPU (400Mhz)
- Atheros AR9331晶片組(整合無線網路)
- 802.11 b/g/n 150Mbps(實際為130Mbps)
- 無線網路輸出功率:20dBm – 100mW
- 4 MB快閃記憶體
- 32 MB主記憶體
- 一個USB 2.0埠
- 透過micro-USB插座供電
因為它的尺寸迷你且價格便宜,國內外許多玩家都將它刷入OpenWrt系統,變成迷你無線網路Web伺服器(或者說,迷你的Linux嵌入式系統),例如:
- 家庭自動化的Web伺服器(註:文章裡面包含TL-WR703N改機、程式設定等相關的詳細說明文件下載)
- 無線遙控Roomba吸塵器機器人
- 執行PHP程式串流Webcam影像
台灣的代理商似乎只有引進TL-WR702N,兩者的主要差別在於WR702N的記憶體比較小:
- 2 MB快閃記憶體
- 16 MB或8MB主記憶體
- 沒有USB 2.0埠
如果要在TL-WR702N上安裝OpenWrt系統,必須要自行焊接更大容量的記憶體,詳細可參閱對岸這位玩家的「WR702N硬改成WR703N」說明。
若嫌TL-WR703N的記憶體不夠大,可參考對岸這名網友的WiKi,裡面有相當豐富的改機資訊,例如,改焊64 MB主記憶體、16MB快閃記憶體等等。
TP-LINK公司的其他無線網路商品,例如,TL-MR3020以及具備行動電源的3G迷你無線路由器:TL-MR10U, TL-MR11U, TL-MR12U和TL-MR13U,技術規格和TL-WR703N相似,也都能刷入OpenWrt系統。
迷你無線路由三劍客:TP-LINK WR703N、水星(MERCURY)MW151RM 和迅捷(FAST)FWR171
根據對岸新華網的這一篇報導指出,TP-LINK與水星(Mercury)、迅捷(FAST)等廠牌,其實都源自同一家公司,唯一不同的是TP-LINK主打高階市場,而水星和迅捷則主打低階市場,但三者的品質沒有什麼區別。
水星MW151RM 及迅捷FWR171,都可以採用和TP-LINK WR-703N相同的方式進行升級和改造。
在TP-LINK WR-703N內部置入自製的Arduino控制板
拆開WR-703N之後,發現裡面有空間可以塞入Arduino控制板(註:有可能會影響到路由器本身的散熱),原本預計置入Arduino Pro Mini板(上方的小板子是USB轉TTL板):
但是考慮到焊接的接線並沒有減少太多,所以我直接焊上ATmega328p處理器,電路圖如下:
為了減少一點電路的體積,我使用16MHz的陶瓷震盪器(ceramic resonator)而非石英震盪器。陶瓷震盪器的精確度不比石英,但是它內部已包含電容,因此無需額外焊接22pF電容,它的外觀如下(共三隻腳,中間接地):
我事先在WR-703N的上蓋,鑽了和Arduino控制板插槽相容的兩排孔,準備焊接杜邦接頭的排插(後來補鑽了Reset按鍵及13腳LED的小孔):
我把ATmega328的引腳折平並加以修剪,用雙面膠將它的正面貼在WR-703N上蓋的內側,焊接好導線和杜邦排插的外觀如下:
焊接USB轉TTL序列板
我手邊有一條台灣公司製造,價格低廉的USB轉TTL序列線,原本的引腳只有TxD(傳送)、RxD(接收)、+5V和接地:
拆開接頭,可以看到它的主板其實有預留其他接點,像是連接Arduino Reset接腳(用於控制上傳程式)的DTR腳位:
我焊除USB轉TTL序列線的上的所有接線與USB接頭,並稍微鋸除一點多餘的PCB板。重新焊接導線之後的外觀:
最後把USB轉TTL序列板跟自製的Arduino焊接在一起:
焊接TP-LINK WR-703N的TTL序列埠
位於WR-703N主機板的主記憶體(RAM)旁邊有兩個標示TP-OUT與TP-IN的接點,分別是TTL訊號的TxD(序列輸出)和RxD(序列輸入)埠,連線速率為115200bps。
WR-703N主機板的micro USB埠,僅充當電源接孔,它的Data+和Data-引腳是空接的,因此,我把它連同板子上的TTL序列接腳,都焊接導線。micro USB接上一節的USB轉TTL序列板,如此,自製的Arduino板將能透過此micro USB上傳程式(實際上,我們可以透過WiFi燒錄Arduino程式,詳細請參閱Elco Jacobs先生的"Programming my Arduino over WiFi"文章)。
TTL序列接腳連接到Arduino的數位腳2和3。Arduino控制板將能透過SoftwareSerial(軟體序列埠)程式庫與此迷你Linux微電腦相連。
為了方便拆卸,我把這些引腳焊接在一個圓角IC排插(註:照片上的位置會卡到蓋子上的ATmega328晶片,所以後來我將它改放到有線網路的RJ-45插座後面):
將改裝好的底部和上蓋接在一起,上傳一個LED閃爍的Arduino程式測試:
雖然可能沒有什麼用,我還是在WR-703N的底部和後面鑽了三排散熱孔:
請問實際應用在?
hi james:
它是無線+有線網路伺服器+Arduino,所以可以做無線監測網路當中的一個節點,例如,透過瀏覽器檢視遠端的空氣品質,它也能儲存資料或透過USB介面連接Webcam,加上動力裝置,它就變成可以趴趴走的遙控Web Server。
話說回來,我目前只是將它收在抽屜裡 😛
thanks,
jeffrey
这是个非常有趣的网站,我很高兴航海见识不幸的在这里被提到了,台湾人做事很有趣味嘛,如果博主乐意,森亮号希望赠送你一份情谊,一个完整改好大的RAM和FLASH以及内置TTL的WR703,包含一个我们自制修改的复位固件,以及一根TTL调试线,当然了还有寄往台湾的运费,都由森亮号赞助提供,也许可以给你抽屉里的那个绿色盒子做个伴,如果乐意接受这份情谊,请往我邮箱告知如何寄送的地址.
hi 航海王:
真是太感谢了~我怎能拒绝您的好意呢。我能当做回礼的东西,大概只有我自己写的Arduino书籍,请笑纳~简体版的内容我还在跟北京的编辑讨论中,如果本月底仍无法取得共识,我就寄送繁体中文版给您,过几天我再跟您联系。
thanks,
jeffrey
我也要 ..
我不知道網昱多媒體该如何拼写,但是我把这个网站的见识放在航海见识里
http://see.sl088.com/wiki/%E7%B6%B2%E6%98%B1%E5%A4%9A%E5%AA%92%E9%AB%94
Mark!支持
真惭愧,去年底我就收到森亮号船长赠送,已改加大DRAM和Flash容量的WR703N,到现在我都还没替它添加Arduino芯片,这个月肯定要找时间完成。
thanks,
jeffrey
不得不说真的是一个好文章,非常感谢博主。我目前着手将一台旧的wr740n 改成arduino Yun了,再次感谢!!
hi clagrens:
我在森亮船长的博文看到,TonyLianLong成功移植Arduino Yun到703N的文章,提供你参考。
have fun!
jeffrey
真是非常感動的文章~受教了,馬上也想動手試看看!
這倒提醒了我,之前改造森亮號船長贈送的路由器,還沒有改好,一直收在抽屜裡,慚愧~
thanks,
jeffrey
我买了《超圖解Arduino互動設計入門》这本书,才知道这个网址的。
博主做的真是太棒了,正好有个闲置的无线路由器,可以尝试着改一下。
我想请教一下,是否有Windows与Arduino互动的相关教程。
比如:开机时Arduino的指示灯亮。做个EXE文件放到启动目录中,自启动。
hi fredkhoo:
謝謝!
Arduino控制板只要通電就開機了,所以只要Arduino連接電腦USB,打開電腦時,Arduino也會自動運行。請問你打算讓它們進行什麼互動內容?
thanks,
jeffrey
博主這個主意真不錯!有空我也參考改裝一下
看了博主的文章之后也忍不住想DIY一台了呢~~但用习惯了Maga2560之后,总会觉得328p的RAM和ROM会不够用XDD ,而且2560提供4个硬串口,稳定性应该会比328p的软串口要好,要是能把控制器换成Due的话,不仅可以兼容3.3v TTL电平,而且84MHz的速度也要比328p/2560的16MHz快得多
hi ayaha:
可是,如果採用Mega 2560或者DUE板子,體積就變大,無法在原本的外殼裡面塞入Arduino電路了。而且,ATmega328微控器的控制腳數目和效能,足敷許多網路監測、遠端遙控的應用所需。若以C/P值而論,Atmel處理器的價格比起其他廠商(如:ST)還高,一個72MHz, 32位元的STM32控制器,雖然效能略低於DUE的微控器,但是價格和Arduino UNO相差無幾。
現在的Arduino開發環境變得更開放了,支援的處理器也更多元,在高端的應用場合,我比較傾向於使用其他控制板。
thanks,
jeffrey
这是一个好项目!谢谢您的分享。
我也在考虑做这样的事情,但是第一个703n的TTL焊点被我弄坏了(没有及时固定焊接好的线),所以我现在在尝试其他类似的板子。
BTW,Atmega328p如果使用片内的振荡器(Internal Oscillator,事实上Attiny和Atmega大部分都有)可以不需要外置振荡器。此时Atmega328p频率最高到8MHz,使用低至3.3v电压即可正常驱动,并且功耗可以低很多。
感谢分享!我知道ATmega328p可用片内的振荡器。
thanks,
jeffrey