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のファイル名で作成します。

adr0570010.jpg 最初の、forの行で  ping -n 1 -w 50 192.168.1.1からping -n 1 -w 50 192.168.1.254
まで繰り返します。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) という数列に
なります。

adr0570015.jpgpingのパラメータ
 pingのコマンドをデフォルトの設定では、応答の要求回数が4回で、待ち時間も長くなるので、-n 1で応答要求を1回に、-w 50で待時間を50msに設定しています。
        ping -n 1 -w 50 192.168.1.1

 次のping /?で表示したHelpを示します。


adr0570013.jpgarp -a で通信できたデバイスのアドレスを表示
 ネットワーク経由で通信できた相手のIPアドレスと、MACアドレスのリストが作られ保存されます。そのため、pingで通信できた相手先のIPアドレスとMACアドレスもこのリストに追加され保存されています。 このリストを次の、
     arp –a

のコマンドで表示します。コマンドのプロンプトの表示画面の表示を一時停止してリストの内容を確認できるようにpauseコマンドを挿入しています。
 次に、arp /?で表示したHelpの画面を表示しておきます。


adr0570017.jpgipchk.batの実行結果
  IPアドレスを確認するbatファイルipchk.batの実行結果を次に示します。実行すると少し時間がかかりますが、指定された全アドレスのデバイスにpingで応答要求しpauseでとまり、key入力を要求します。いずれかのキーを押すと次のようにIPアドレスとMACアドレスが表示されます。

adr0570020.jpg 次のpauseに答えると、
     arp -a >iplist.txt

が実行され、arp -aで表示されるリストがコマンドプロンプトの画面でなくiplist.txtのファイルに保存されます。
 次に、保存されたiplist.txtのtypeコマンドで表示した様子を示します。


adr0570030.jpg 先ほど、画面に表示されたものがiplist.txtに保存されたことが確認できます。
 次回、このリストを元にIPアドレスの空きエリアを確認しMACアドレスと共にスケッチで設定する方法などに進みます。
<神崎康宏>


トラックバック(0)

このブログ記事を参照しているブログ一覧: 連載(57)Arduinoで何でも制御 LANに接続する(3)

このブログ記事に対するトラックバックURL: http://www.eleki-jack.com/mt/mt-tb.cgi/3769

コメントする

カテゴリ

このブログ記事について

このページは、kanzakiが2010年1月14日 11:18に書いたブログ記事です。

ひとつ前のブログ記事は「「Gainer互換Pepperでフィジカル・コンピューティング」フォローアップ記事(5)」です。

次のブログ記事は「「Gainer互換Pepperでフィジカル・コンピューティング」フォローアップ記事(6)」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Creative Commons License
このブログのライセンスは クリエイティブ・コモンズライセンス.