2012年11月21日

Arduino WOL マジックパケット リピータ「新開発環境に対応したスケッチを公開」

※なんだかよく分からないけど、arduino WOLリピーターを作りたい方は、こちらの初心者用の説明をどうぞ

震災後、引っ越しやらなんやらで、行方不明になっていたArduinoを先日ダンボールから無事に保護。

メインマシンをWindowsのデスクトップマシンから、2年前に購入したMACBOOKホワイトをSSD化+メモリ8GBにしたことから、思い切って変更しました。

ArduinoをMACBOOKに接続しWOL リピーターのスケッチを当サイトからコピペ。

コンパイルできん。

最新の開発環境は、仕様が変更されていてUDPモジュールを内包していることがわかりました。
取り急ぎ、情報収集の後に最新の開発環境に合わせて、スケッチを修正変更しました。

※パケットアナライザでの動作は確認していますが、外部からマジックパケットを投げてターゲットマシンの電源が入ることまでは確認していません。
動いたら、コメントで報告いただけるとありがたいです。
※このスケッチの動作確認は、MACBOOKのMAC OS Xで動いているVMware Fusion上のWindows8Proでローカルテストのみを行っています。



// Wake On Lan リピーター
// http://yutakalife.net/article/303195021.html
// 販売などの商用利用はご遠慮ください
// Copyright love4nature All Rights Reserved.

#include <SPI.h>

#include <Ethernet.h>
#include <EthernetUdp.h>


// イーサネットの設定
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // Arduino のMAC address
IPAddress ip(192, 168, 0, 200); // Arduino のIP address
unsigned int localPort = 9; // Arduino の受信ポート

IPAddress targetIp(192, 168, 0, 255); // ターゲットのブロードキャストアドレスを設定
unsigned int targetPort = 8000; // ターゲットのポート番号を設定

// パケットサイズの最大値を設定
#define MAX_SIZE 192

byte packetBuffer[MAX_SIZE]; // マジックパケット用のパケットバッファ

// An EthernetUDP instance to let us send and receive packets over UDP
EthernetUDP Udp;

void setup() {
// start the Ethernet and UDP:
Ethernet.begin(mac,ip);
Udp.begin(localPort);

Serial.begin(115200);
Serial.print("Start ");
}

void loop() {
// if there's data available, read a packet
int packetSize = Udp.parsePacket();
if(packetSize)
{
Serial.print("Received packet of size ");
Serial.println(packetSize);
Serial.print("From ");
IPAddress remote = Udp.remoteIP();
for (int i =0; i < 4; i++)
{
Serial.print(remote[i], DEC);
if (i < 3)
{
Serial.print(".");
}
}
Serial.print(", port ");
Serial.println(Udp.remotePort());

// read the packet into packetBufffer
Udp.read(packetBuffer,MAX_SIZE);
Serial.println("Contents:");
for(int j=0; j<min(MAX_SIZE,abs(packetSize)); j++) {
Serial.print(packetBuffer[j],HEX);
Serial.print(" ");
}
Serial.println("");

// 受信したマジックパケットをリピート送信する
Udp.beginPacket(targetIp, targetPort);
Udp.write(packetBuffer,min(MAX_SIZE,abs(packetSize)));
Udp.endPacket();
}
delay(10);
}



posted by love4nature at 21:55| Comment(3) | TrackBack(0) | 趣味の部屋 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
こんばんは
今回は
Arduinoのことで何かをやってみようと思い、Aruduinoの環境などは整えました。

拙のサイトに近況を書いています。
それではよろしくお願い致します。
Posted by nekonoko at 2012年11月21日 22:12
こんばんは、nekonoko さん。
よろしければサイトを教えてくださいな。
Posted by love4nature at 2012年11月22日 19:00
love4nature様初めまして。

そこでnekonokoと名乗っている者は電子工作・CNC系の掲示板や
ブログを荒らしまわっている"ノンノ"と呼ばれる悪質な荒らしです。

特にプログラミングに関して非常にコンプレックスを持っており
検索したらすぐわかるレベルの事をあえて何度も聞いて来たり、
突然的外れで知ったかぶりの知識自慢を長々としだして掲示板や
ブログの管理人を怒らせるといった行為を、いろんな場所で名前を
変えつつ何年間も続けております。下はそのほんの一例です。
特に電子工作を始めたばかりで事情をよく知らない方を狙って
おります。
ttp://groups.yahoo.co.jp/group/nonnno10gou/messages/144?expand=1
ttp://www.pastelmagic.com/psocbbs/index.cgi?m=look&bnum=1932
ttp://www.style-21.jp/board/next9.cgi?id=ofamily&lognum=16&dispnum=6083
ttp://www.style-21.jp/board/next9.cgi?id=ekousaku&lognum=44&dispnum=17320
ttp://www.style-21.jp/board/next9.cgi?id=ekousaku&lognum=54&dispnum=19514
ノンノの書き込みを放置したり相手をしたりすると付け上がり
ずっと居座り荒らし続けますので書き込ませない/書き込まれても
直ぐに削除等の断固たる措置をよろしくお願いいたします。
Posted by 村野々 at 2012年12月12日 16:15
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/303195021
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。