Arduino Ethernet シールド利用時に DHCP で IP アドレスを割当てる
Arduino で Ethernet シールドなどを用いて LAN/インターネットに接続する場合に、 プログラムで明示的に IP アドレスを指定するのではなく、 DHCP での自動的な IP アドレス割当てを行いたい場合について説明します。
実はこれは Arduino の標準的な Ethernet ライブラリを使用していれば簡単に実現できます。
次のコード例のように Ethernet.begin() メソッド呼び出し時に、 MAC アドレスのみを指定して IP アドレスを指定しなければ自動的に DHCP からの IP アドレス取得を試みます。
#include <Ethernet.h>
byte mac[] = { 0xDE,0xAD,0xBE,0xEF,0xF0,0x0D };
void setup() {
Serial.begin(9600);
Ethernet.begin(mac);
Serial.println(Ethernet.localIP());
}
void loop() {
}
ここでは Arduino Uno に Ethernet シールドを接続しています。(厳密に言えばそれぞれのクローン)
今回はシリアルポートに結果を出力するために、Serial.begin や println を呼び出していますが、DHCP による IP アドレスの割当てという目的に限って言えば、Ethernet.begin の行のみがポイントになります。