読者です 読者をやめる 読者になる 読者になる

Goldstine研究所

mosuke5's tech blog

ブログ移転しました。5秒後にリダイレクトします。

【Ethernetシールド】Arduinoをネットワークへ繋げる(1)

Ethernetシールドを使ってネットワークへ繋げる。
とりあえずは、スモールステップでPCとの1対1の通信。

PCとの1対1通信

構成図
f:id:mosuke5:20140907231747p:plain

Arduinoソースコード

#include <SPI.h>
#include <Ethernet.h>

byte MAC[] = {0x90,0xA2,0xDA,0x0F,0x8B,0xA2};
byte IP[]  = {192,168,11,3};

void setup()
{
  Ethernet.begin(MAC,IP);
}

void loop()
{
}

疎通確認

% ping 192.168.100.3
PING 192.168.100.3 (192.168.100.3): 56 data bytes
Request timeout for icmp_seq 0
64 bytes from 192.168.100.3: icmp_seq=1 ttl=128 time=0.576 ms
64 bytes from 192.168.100.3: icmp_seq=2 ttl=128 time=0.425 ms
64 bytes from 192.168.100.3: icmp_seq=3 ttl=128 time=0.302 ms

Ping確認ヨシ!!

一応ARPテーブルを見ておく。

% arp -a
? (192.168.100.3) at 90:a2:da:f:8b:a2 on en4 ifscope [ethernet]
? (192.168.100.255) at ff:ff:ff:ff:ff:ff on en4 ifscope [ethernet]

マックアドレスの取得もヨシ!!

DHCPを使って家内LAN接続

実運用ではDHCPを利用することが圧倒的に多いと思うが、こちらもとても簡単。

構成図
f:id:mosuke5:20140913110038p:plain

無線LANルータから有線LANケーブルを伸ばしArduinoに結線。
DHCPによるIPアドレスの取得はとても容易で以下のようにマックアドレスを指定するのみ。

Ethernet.begin(mac)

以下はArduino公式サイトに則って実施したもの。
Arduino - DhcpAddressPrinter

#include <SPI.h>
#include <Ethernet.h>

//Mac Address Static
byte mac[] = {0x90,0xA2,0xDA,0x0F,0x8B,0xA2};

void setup()
{
  // Open serial communications and wait for port to open:
  Serial.begin(9600);

  // start the Ethernet connection:
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    for(;;)
      ;
      
  }
  // print your local IP address:
  Serial.print("My IP address: ");
  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()
{
  Serial.println("abc");
  delay(3000);
}

ArduinoIPアドレスが割り当てられたかどうか確認するには、無線LANルータにアクセスし、マックアドレスとIPアドレスのヒモ付のテーブルをみればよい。