NOBのArduino日記!

NOBのArduino日記!

趣味は車・バイク・自転車・ラジコン・電子工作です。

Arduino IDE(Ethernet.begin関数の使い方)

Ethernet.begin関数
 Ethernetクラス※1のEthernet.begin関数は、イーサネットライブラリとネットワーク設定を初期化します。

Arduino Leonardo EthernetArduino Leonardo(ATmega32u4搭載)とArduinoイーサネットシールド2をひとつに合わせたArduinoボードです。MACアドレスを書いたシールがボードに貼られています。このボードで開発をするためにはArduino IDE 1.7.2以降が必要です。(2015.04.30現在)PoE (Power over Ethernet)モジュールを追加すると、LANケーブル1本で電源供給と通信が可能です。IEEE802.3af の規格に準拠した環境下で動作します。
図1:Arduino Leonardo Ethernet
以下補足です

※1:Ethernetクラスのライブラリとは、Arduino Ethernet Shield(Ethernet.h)またはArduino Ethernet Shield 2とLeonardo Ethernet(Ethernet2.h)で動作するように設計されたライブラリです。このライブラリを用いる事によってArduinoボードをインターネットに接続することができます。ボードは、着信接続を受け付けるサーバーか、発信接続を確立するクライアントとして機能します。
 バージョン1.0では、ライブラリはDHCP※2をサポートしています。Ethernet.begin(mac※3)を適切なネットワーク設定で使用すると、イーサネットシールドは自動的にIPアドレス※4を取得します。これにより、スケッチサイズが大幅に増加します。必要に応じてDHCPリースが正しく更新されるように、Ethernet.maintain関数を定期的に呼び出してください。
※2:DHCP(英:Dynamic Host Configuration Protocol)とは、コンピュータがネットワーク接続する際に必要な情報を自動的に割り当てるプロトコルです。
※3:MACアドレス(英語: Media Access Control address)とは、ネットワーク上で、各ノードを識別するために設定されているLANカードなどのネットワーク機器のハードウェアに原則として一意に割り当てられる物理アドレスです。
※4:IPアドレス(英: Internet Protocol address)とは、IPにおいてパケットを送受信する機器を判別するための番号です。

 

■使用例
 Arduino IDEで使用するEthernet.begin関数の使い方は以下の通りです。
  例えば「Arduino Leonardo Ethernet」をPCにUSB接続し、またネットワークに接続されたLANケーブル接続して、ArduinoIDEの「ツール」→「ボード」→「Arduino Ethernet」を選択した状態にします。
 次に下記プログラムを実行すると、着信メッセージをすべてに配信するシンプルなチャットサーバーが構築されます。
 この中でEthernet.begin関数はイーサネットライブラリとネットワーク設定の初期化を実行します。

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

//コントローラのMACアドレスIPアドレスを以下に入力します。
// IPアドレスはローカルネットワークに依存します。
//ゲートウェイとサブネットはオプションです。
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress ip(192, 168, 1, 177);
IPAddress myDns(192, 168, 1, 1);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 0, 0);
EthernetServer server(23);// telnetはデフォルトでポート23になります
boolean alreadyConnected = false; // クライアントが以前に接続されたかどうか

void setup() {
   Ethernet.begin(mac, ip, myDns, gateway, subnet);// イーサネットデバイスを初期化する
   server.begin();// クライアントのリスニングを開始する
   Serial.begin(9600);// シリアル通信を開き、ポートが開くのを待ちます
   while (!Serial) {}; // シリアルポートが接続するのを待ちます。ネイティブUSBポートのみに必要
   Serial.print("Chat server address:");
   Serial.println(Ethernet.localIP());
}

void loop() {
   EthernetClient client = server.available();// 新しいクライアントを待つ
   if (client) {// クライアントが最初のバイトを送信すると「hello」を送信
       if (!alreadyConnected) {
           client.flush();// 入力バッファをクリアする
           Serial.println("We have a new client");
           client.println("Hello, client!");
           alreadyConnected = true;
       }

       if (client.available() > 0) {
           char thisChar = client.read();// クライアントから受信したバイトを読み込みます。
           server.write(thisChar);// バイトをクライアントに返します。
           Serial.write(thisChar);
       }
   }
}// バイトをサーバに返します。
イメージ 1
図1:プログラム例

■構文
 Ethernet.begin(mac); 
 Ethernet.begin(mac,ip); 
 Ethernet.begin(mac,ip,dns); 
 Ethernet.begin(mac,ip,dns,gateway); 
 Ethernet.begin(mac,ip,dns,gateway,subnet);

■パラメータ
 mac:デバイスMAC(Media Access Control)アドレス(6バイトの配列)
 これはシールドのイーサネットハードウェアアドレスです。
 新しいArduinoイーサネットシールドにはデバイスMACアドレスのステッ
 カーが含まれています。
 古いシールドの場合は、独自のシールドを選択します。
 ip:デバイスIPアドレス(4バイトの配列)
 dnsDNSサーバーのIPアドレス(4バイトの配列)。
  ※オプション(デフォルトはデバイスIPアドレスで、最後のオクテットは1に
 設定されています)
 gateway:ネットワークゲートウェイIPアドレス(4バイトの配列)。
 ※オプション(デフォルトはデバイスIPアドレスで、最後のオクテットは1
 に設定されています)
 subnet:ネットワークのサブネットマスク(4バイトの配列)。
 ※オプション(デフォルトは255.255.255.0)

■戻り値
 この関数のDHCPバージョンEthernet.begin(mac)は、DHCP接続が成功すると
 int「1」、失敗した場合は「0」を返します。
 他のバージョンは何も返しません。

イメージ 1 イメージ 3
励みになりますのでよければクリック下さい(^o^)/

↩【ArduinoIDE reference】目次に戻る