Arduinoのネットワーク通信

DHCPからのアドレス取得

まずはDHCPからのアドレス取得を紹介します。
ENC28J60とW5100ともに、MACアドレスを記憶する機能は有りません。
スケッチの中でMACアドレスを指定するので、複数のモジュールを同時に使うときは、アドレスが重ならないようにする必要があります。
企業などで厳密にアドレス管理をしている場合、このモジュールは使えません。
こちらのページにアクセスすると、現在日時か らMACアドレスを生成してくれます。

ENC28J60とW5100は使用するライブラリが違うだけで、同じコードが動きます。

ECN28J60のスケッチ
/*
 * ENC28J60/W5100 Ethernet Module example.
 */

#include <UIPEthernet.h> // https://github.com/UIPEthernet/UIPEthernet
//#include <SPI.h>
//#include <Ethernet.h>

EthernetClient client;

void setup() {
  byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
  
  Serial.begin(9600);
  int ret = Ethernet.begin(mac);
  Serial.println("ret =" + String(ret));
  Serial.print("localIP: ");
  Serial.println(Ethernet.localIP());
  Serial.print("subnetMask: ");
  Serial.println(Ethernet.subnetMask());
  Serial.print("gatewayIP: ");
  Serial.println(Ethernet.gatewayIP());
  Serial.print("dnsServerIP: ");
  Serial.println(Ethernet.dnsServerIP());

  for (byte thisByte = 0; thisByte < 4; thisByte++) {
    // print the value of each byte of the IP address:
    Serial.print(Ethernet.localIP()[thisByte], DEC);
    Serial.print("-");
  }
  Serial.println("");
}

void loop() {
}



W5100のスケッチ
/*
 * ENC28J60/W5100 Ethernet Module example.
 */

//#include <UIPEthernet.h> // https://github.com/UIPEthernet/UIPEthernet
#include <SPI.h>
#include <Ethernet.h>


EthernetClient client;

void setup() {
  byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
   
  Serial.begin(9600);
  int ret = Ethernet.begin(mac);
  Serial.println("ret =" + String(ret));
  Serial.print("localIP: ");
  Serial.println(Ethernet.localIP());
  Serial.print("subnetMask: ");
  Serial.println(Ethernet.subnetMask());
  Serial.print("gatewayIP: ");
  Serial.println(Ethernet.gatewayIP());
  Serial.print("dnsServerIP: ");
  Serial.println(Ethernet.dnsServerIP());

  for (byte thisByte = 0; thisByte < 4; thisByte++) {
    // print the value of each byte of the IP address:
    Serial.print(Ethernet.localIP()[thisByte], DEC);
    Serial.print("-");
  }
  Serial.println("");
}

void loop() {
}

次回は、固定アドレスを割り当てる方法を紹介します。

続く...