這裡介紹如何使用 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