strelka_dogのブログ

徒然なるままに心に移り行くよしなしごとをそこはかとなく書き尽くるブログ

M5stackでWake on LANをした話

別ネットワークにあるPCからwake on lanで他のPCを起動したいということがあったので、以前elchikaのキャンペーンで記事を書いた時
elchika.com
頂いたM5stackがあったことを思い出しM5stackからwake on lanでPCを起動できるようにしてみました。



まず
スケッチ>ライブラリをインクルード>ライブラリを管理
からWakeOnLanをインストールします。

#include <WakeOnLan.h>
#include <M5Stack.h>
#include <WiFi.h>
#include <WiFiUDP.h>

const char* ssid = "SSID";
const char* password = "wifi-password";

WiFiUDP wifiUdp; 
WakeOnLan WOL(wifiUdp);

void setup() {
  // put your setup code here, to run once:
  M5.begin(true,true,false);
  Serial.begin(9600);
  M5.Power.begin();
  M5.Lcd.print("M5stack start\r\n");
  WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED){
        delay(500);
        M5.Lcd.print('.');
  }
  M5.Lcd.print("connect");
}

void loop() {
  // put your main code here, to run repeatedly:
  if(Serial.available()) {
    
    String msg = Serial.readString();
    M5.Lcd.print("\r\nReceived:" + msg);
    if(msg.indexOf("wakepc")>-1){
      M5.Lcd.print("start");
      WOL.sendMagicPacket("MACアドレス");
      M5.Lcd.print("\r\nMagic packet sent.");
    }
    M5.Lcd.print("\r\nend");
  }
}

これでwifiに接続後、PCからシリアル通信で「wakepc」という文字列が含まれる文字列を受け取ると指定したmacアドレスを対象としたマジックパケットが送信されPCの電源が点きます。

最初はUDPで手書きでマジックパケットの送信を実装しようとも思ったのですが念のためライブラリ無いかな?と思って検索したところWakeOnLanのライブラリがありました。
便利ですね