Arduino Yún Mini:改造TL-WR703N整合自製Arduino板

Arduino Yún(雲)是Arduino官方的新控制板,它其實就是一塊加上嵌入式Linux處理器和網路功能的Arduino Leonardo(李奧納多)板。如果不要求Linux微電腦的效能和記憶體容量,我們其實可以改造現有的商品,自行組裝一個「類Arduino Yún」,姑且稱為Arduino Yún Mini吧~(當然,官方的Arduino Yún程式庫在自製的板子派不上用場。)

自製Arduino Yún Mini

本文的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嵌入式系統),例如:

台灣的代理商似乎只有引進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板):

Arduino Pro Mini板和USB轉TTL板

但是考慮到焊接的接線並沒有減少太多,所以我直接焊上ATmega328p處理器,電路圖如下:

精簡的Arduino電路圖

為了減少一點電路的體積,我使用16MHz的陶瓷震盪器(ceramic resonator)而非石英震盪器。陶瓷震盪器的精確度不比石英,但是它內部已包含電容,因此無需額外焊接22pF電容,它的外觀如下(共三隻腳,中間接地):

16MHz的陶瓷震盪器(ceramic resonator)

我事先在WR-703N的上蓋,鑽了和Arduino控制板插槽相容的兩排孔,準備焊接杜邦接頭的排插(後來補鑽了Reset按鍵及13腳LED的小孔):

在WR-703N的上蓋,鑽了和Arduino控制板插槽相容的兩排孔

我把ATmega328的引腳折平並加以修剪,用雙面膠將它的正面貼在WR-703N上蓋的內側,焊接好導線和杜邦排插的外觀如下:

焊接好導線和杜邦排插的自製Arduino

焊接USB轉TTL序列板

我手邊有一條台灣公司製造,價格低廉的USB轉TTL序列線,原本的引腳只有TxD(傳送)、RxD(接收)、+5V和接地:

USB轉TTL序列線

拆開接頭,可以看到它的主板其實有預留其他接點,像是連接Arduino Reset接腳(用於控制上傳程式)的DTR腳位

拆解USB轉TTL序列線

我焊除USB轉TTL序列線的上的所有接線與USB接頭,並稍微鋸除一點多餘的PCB板。重新焊接導線之後的外觀:

USB轉TTL序列板焊接導線

最後把USB轉TTL序列板跟自製的Arduino焊接在一起:

焊接TP-LINK WR-703N的TTL序列埠

位於WR-703N主機板的主記憶體(RAM)旁邊有兩個標示TP-OUTTP-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插座後面):

焊接TP-LINK WR-703N的TTL序列線

將改裝好的底部和上蓋接在一起,上傳一個LED閃爍的Arduino程式測試:

基本的LED閃爍

雖然可能沒有什麼用,我還是在WR-703N的底部和後面鑽了三排散熱孔:

散熱孔

19 thoughts on “Arduino Yún Mini:改造TL-WR703N整合自製Arduino板

    1. hi james:

      它是無線+有線網路伺服器+Arduino,所以可以做無線監測網路當中的一個節點,例如,透過瀏覽器檢視遠端的空氣品質,它也能儲存資料或透過USB介面連接Webcam,加上動力裝置,它就變成可以趴趴走的遙控Web Server。

      話說回來,我目前只是將它收在抽屜裡 :-P
      thanks,
      jeffrey

  1. 这是个非常有趣的网站,我很高兴航海见识不幸的在这里被提到了,台湾人做事很有趣味嘛,如果博主乐意,森亮号希望赠送你一份情谊,一个完整改好大的RAM和FLASH以及内置TTL的WR703,包含一个我们自制修改的复位固件,以及一根TTL调试线,当然了还有寄往台湾的运费,都由森亮号赞助提供,也许可以给你抽屉里的那个绿色盒子做个伴,如果乐意接受这份情谊,请往我邮箱告知如何寄送的地址.

    1. hi 航海王:

      真是太感谢了~我怎能拒绝您的好意呢。我能当做回礼的东西,大概只有我自己写的Arduino书籍,请笑纳~简体版的内容我还在跟北京的编辑讨论中,如果本月底仍无法取得共识,我就寄送繁体中文版给您,过几天我再跟您联系。

      thanks,
      jeffrey

    1. 真惭愧,去年底我就收到森亮号船长赠送,已改加大DRAM和Flash容量的WR703N,到现在我都还没替它添加Arduino芯片,这个月肯定要找时间完成。

      thanks,
      jeffrey

  2. 不得不说真的是一个好文章,非常感谢博主。我目前着手将一台旧的wr740n 改成arduino Yun了,再次感谢!!

    1. 這倒提醒了我,之前改造森亮號船長贈送的路由器,還沒有改好,一直收在抽屜裡,慚愧~

      thanks,
      jeffrey

  3. 我买了《超圖解Arduino互動設計入門》这本书,才知道这个网址的。

    博主做的真是太棒了,正好有个闲置的无线路由器,可以尝试着改一下。

    我想请教一下,是否有Windows与Arduino互动的相关教程。

    比如:开机时Arduino的指示灯亮。做个EXE文件放到启动目录中,自启动。

    1. hi fredkhoo:

      謝謝!

      Arduino控制板只要通電就開機了,所以只要Arduino連接電腦USB,打開電腦時,Arduino也會自動運行。請問你打算讓它們進行什麼互動內容?

      thanks,
      jeffrey

  4. 看了博主的文章之后也忍不住想DIY一台了呢~~但用习惯了Maga2560之后,总会觉得328p的RAM和ROM会不够用XDD ,而且2560提供4个硬串口,稳定性应该会比328p的软串口要好,要是能把控制器换成Due的话,不仅可以兼容3.3v TTL电平,而且84MHz的速度也要比328p/2560的16MHz快得多

    1. hi ayaha:

      可是,如果採用Mega 2560或者DUE板子,體積就變大,無法在原本的外殼裡面塞入Arduino電路了。而且,ATmega328微控器的控制腳數目和效能,足敷許多網路監測、遠端遙控的應用所需。若以C/P值而論,Atmel處理器的價格比起其他廠商(如:ST)還高,一個72MHz, 32位元的STM32控制器,雖然效能略低於DUE的微控器,但是價格和Arduino UNO相差無幾。

      現在的Arduino開發環境變得更開放了,支援的處理器也更多元,在高端的應用場合,我比較傾向於使用其他控制板。

      thanks,
      jeffrey

  5. 这是一个好项目!谢谢您的分享。
    我也在考虑做这样的事情,但是第一个703n的TTL焊点被我弄坏了(没有及时固定焊接好的线),所以我现在在尝试其他类似的板子。
    BTW,Atmega328p如果使用片内的振荡器(Internal Oscillator,事实上Attiny和Atmega大部分都有)可以不需要外置振荡器。此时Atmega328p频率最高到8MHz,使用低至3.3v电压即可正常驱动,并且功耗可以低很多。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *