Arduino イーサネット・シールド
Arduinoのイーサネット シールドには、MACアドレスとIPアドレスを設定する必要があります。最近はほとんどのイーサネットのボードがDHCPに対応していますが、このボードは対応していなく、イーサネット・シールド用の標準のライブラリもDHCPに対応していません。
そのため、イーサネット上の使用されているIPアドレスを調べて、重複しないようにイーサネット・シールドのIPアドレスを決める必要があります。
LANのデバイスのIPアドレスを調べる
多くは、ローカル・ネットワークを構成し、ルータを使用してインターネットのネットワークに接続しています。多くの場合、次に示すクラスのアドレスを割り当てます。
192.168.n.X
192.168.nの部分でローカル・ネットワークのアドレスを示します。このローカル・ネットワークのアドレスが同一のアドレスの間で通信を行うことができます。Xはそのネットワーク内で端末ごとに割り当てるアドレスで0から254までの値を設定します。
接続中のデバイスのアドレスを調べる
Windows7でもDOSのコマンドが利用できます。「家庭でできるネットワーク遠隔制御」(CQ出版)で示した方法ですが、ネットワークに接続されているデバイスにpingコマンドで応答を要求し返答があったもののIPアドレスを記録する方法があります。
メモ帳で次の内容のBatファイルを作成します。
for /l %%p in (1,1,254) do ping -n 1 -w 50 192.168.1.%%p
pause
arp -a
pause arp -a >iplist.txt
保存するフォルダは、DOSのコマンドプロンプトを開いたときのカレント・フォルダに保存します。メモ帳でipchk.batのファイル名で作成します。
まで繰り返します。for /lのlはLの小文字です。
for /lは次に示すように変数%%pの値を1から1刻みで254まで繰り返します。
for /? でforのhelpを表示した部分のfor /l の部分(下図より)
FOR /L %変数 IN (開始,ステップ,終了) DO コマンド [コマンド パラメータ]
セットは、ステップの量ごとに変化する開始から終了までの数列です。
たとえば、(1,1,5) は 1 2 3 4 5、(5,-1,1) は (5 4 3 2 1) という数列に
なります。
pingのコマンドをデフォルトの設定では、応答の要求回数が4回で、待ち時間も長くなるので、-n 1で応答要求を1回に、-w 50で待時間を50msに設定しています。
ping -n 1 -w 50 192.168.1.1
次のping /?で表示したHelpを示します。
ネットワーク経由で通信できた相手のIPアドレスと、MACアドレスのリストが作られ保存されます。そのため、pingで通信できた相手先のIPアドレスとMACアドレスもこのリストに追加され保存されています。 このリストを次の、
arp –a
のコマンドで表示します。コマンドのプロンプトの表示画面の表示を一時停止してリストの内容を確認できるようにpauseコマンドを挿入しています。
次に、arp /?で表示したHelpの画面を表示しておきます。
IPアドレスを確認するbatファイルipchk.batの実行結果を次に示します。実行すると少し時間がかかりますが、指定された全アドレスのデバイスにpingで応答要求しpauseでとまり、key入力を要求します。いずれかのキーを押すと次のようにIPアドレスとMACアドレスが表示されます。
arp -a >iplist.txt
が実行され、arp -aで表示されるリストがコマンドプロンプトの画面でなくiplist.txtのファイルに保存されます。
次に、保存されたiplist.txtのtypeコマンドで表示した様子を示します。
次回、このリストを元にIPアドレスの空きエリアを確認しMACアドレスと共にスケッチで設定する方法などに進みます。
<神崎康宏>


コメントする