這裡介紹如何使用 Arduino Ethernet Shield W5100 乙太網路擴充板,透過 DHCP 自動取得 IP 位址。
這張是副廠的 Arduino Ethernet Shield W5100 乙太網路擴充板,相容於原廠的乙太網路擴充板,不過價格比較便宜,原廠的在網路上一張要價一千六百多,而這張只要三百多塊,如果沒有 POE 支援的更便宜,只要兩百多塊。
這是網路擴充板的背面。
擴充板在使用時就直接插在 Arduino 即可,這裡我是拿一張 UNO 的相容板來示範。
插上擴充板之後,側面的樣子。
這張擴充板在插上 UNO 上面時,RJ45 的插座下方的針腳很容易頂到 UNO 的 USB 插座,如果怕短路的話,在上面貼個膠帶會比較好。
接上 USB 線與網路線,就可以來開發程式了。
要使用這張乙太網路擴充板需要一些函式庫,而 Arduino 的開發環境中有內建基本函式庫可以使用,以下是從 DHCP 取得 IP 位址,讓 Arduino 連上網路的範例。
#include <SPI.h> #include <Ethernet.h> // 指定網路卡 MAC 卡號 byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 }; // 初始化 Ethernet client library EthernetClient client; void setup() { // 初始化序列埠 Serial.begin(115200); // 啟用 Ethernet 連線,預設會以 DHCP 取得 IP 位址 if (Ethernet.begin(mac) == 0) { Serial.println("無法取得 IP 位址"); // 無法取得 IP 位址,不做任何事情 for(;;) ; } // 輸出 IP 位址 Serial.print("IP 位址:"); Serial.println(Ethernet.localIP()); } void loop() { }
這裡的 Ethernet.begin(mac)
是設定網路卡 MAC 卡號,並且以 DHCP 取得 IP 位址,如果要自行指定 IP 位址,可以這樣寫:
// 網路卡 MAC 卡號 byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // 指定 IP 位址 byte ip[] = { 192, 168, 1, 200 }; void setup() { Ethernet.begin(mac, ip); }
若要設定 DNS、預設閘道與子網域等,就將這些參數再加上去即可,詳細用法請參考 Ethernet.begin()
的說明。
將寫好的程式編譯並上傳至 Arduino 之後,開啟序列埠監控視窗,就可以看到 Arduino 從 DHCP 伺服器所取得的動態 IP 位址了。
這時候可以使用 ping
測試一下,看看 Arduino 所取得的 IP 位址是否可以正常使用。
如果您對於 Arduino 的相關應用有興趣,建議您可以繼續閱讀物聯網的文章。
陳添
請問如果我用跳線跟電腦做連接的話可行嗎
G. T. Wang
這樣應該也是可以
Marco Chow
你好,我有一個問題想請教一下,我現用一個Arduino uno r3 加 Ethernet Shield W5100.但不知何故,當我結合想做設定時,Ethernet Shield W5100只會亮著power紅燈,而傳輸program時,都只會出 “avrdude: stk500_recv(): programmer is not responding”但如果只用uno試led,它是可以用而且没有問題。試過按RESET但結果都是一樣。
起初我以為是硬件問題,我再買多2個Ethernet Shield W5100及一個Arduino uno r3做測試,但結果相同。
全部元件都是購自淘寶,希望大大可以幫忙,因為這是我的final project,而現在卡在這個環節上面….謝謝大家。
Jim
請問執行以上程式結果顯示”無法取得 IP 位址”,有可能是什麼原因造成,該如何排除??
硬體:ArduinoUNO + Arduino Ethernet Shield W5100
G. T. Wang
可以先測試看看手動指定 IP 位址是否能運作。
若手動指定 IP 位址可以運作,則去查看 DHCP 伺服器的 log 檔,看看 DHCP 設定有沒有問題,或是網路線有沒有插好。
若手動指定 IP 位址無法運作,看看是不是板子哪裡有問題。
andy
我是用mega2560跟w5100,序列埠顯示出來是亂碼,請問可能是因為什麼原因
Casper
Serial.begin(9600) 序列埠顯示那邊要調正一致
andy
有調整到一樣了QQ
LL
那個會短路的部分要多注意,我在使用時ㄆㄚ一聲,網路孔右下角那顆閃爍黃燈已燒毀,建議跟文中一樣貼膠帶或是用其他東西隔著比較好,好險只壞那顆燈而已,其他功能一切正常